Reproduce Chat States
different-ai/openwork
Fires known chat states in the running OpenWork desktop app, such as provider errors, retries and tool steps, so you can check how each renders.
Verify ShellCheck conformance for a shuck rule by running the large corpus test, analyzing deltas, and producing a structured bug document in docs/bugs/.
$ npx skills add ewhauser/shuck --skill conformance-check -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ewhauser/shuck conformance-check --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/conformance-check .claude/skills/conformance-check && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "conformance-check" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/conformance-check into .claude/skills/conformance-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "conformance-check", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ewhauser/shuck/tree/main/.claude/skills/conformance-checkType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ewhauser/shuck --skill conformance-check -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ewhauser/shuck conformance-check --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/conformance-check .agents/skills/conformance-check && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "conformance-check" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/conformance-check into .agents/skills/conformance-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "conformance-check", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ewhauser/shuck --skill conformance-check -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ewhauser/shuck conformance-check --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/conformance-check .cursor/skills/conformance-check && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "conformance-check" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/conformance-check into .cursor/skills/conformance-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "conformance-check", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ewhauser/shuck.git --path .claude/skills/conformance-check--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ewhauser/shuck --skill conformance-check -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ewhauser/shuck conformance-check --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/conformance-check .gemini/skills/conformance-check && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "conformance-check" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/conformance-check into .gemini/skills/conformance-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "conformance-check", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ewhauser/shuck conformance-checkInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ewhauser/shuck --skill conformance-check -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/conformance-check .github/skills/conformance-check && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "conformance-check" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/conformance-check into .github/skills/conformance-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "conformance-check", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ewhauser/shuck --skill conformance-check -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ewhauser/shuck conformance-check --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/conformance-check .opencode/skills/conformance-check && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "conformance-check" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/conformance-check into .opencode/skills/conformance-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "conformance-check", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
conformance-checkVerify ShellCheck conformance for a shuck rule by running the large corpus test, analyzing deltas, and producing a structured bug document in docs/bugs/.
Conformance Check is an agent skill from ewhauser/shuck. Verify ShellCheck conformance for a shuck rule by running the large corpus test, analyzing deltas, and producing a structured bug document in docs/bugs/. Use this skill whenever the user asks to check conformance, verify parity, run the corpus test for a rule, investigate shellcheck deltas, create a bug report for a rule's conformance gaps, or says things like "check C001 conformance", "verify SC2086 parity", "run corpus test for C006", "what's the delta for X023". Even if the user just says "conformance" or…
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering QA and bug reports. The repository describes itself as: A lightning fast shell linter/formatter/LSP server with zsh support. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 904974e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
shellcheckmakenixjqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Conformance Check loads about 3.1k tokens when it runs. Until then it costs about 146 tokens; SKILL.md has 1,135 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ewhauser/shuck at commit 904974e, republished under its MIT licence (© ewhauser). 1,135 words, ~3,118 tokens.
.claude/skills/conformance-check/SKILL.md (or your agent's skills folder).This skill runs the large corpus comparison for a specific shuck rule, analyzes the deltas between shuck and ShellCheck, and produces a structured bug document that an AI agent can later pick up and work through systematically.
The goal is to answer: "How well does shuck rule CXXX match ShellCheck's SCYYYY on
real-world scripts?" The output is a docs/bugs/CXXX.md file with categorized deltas,
verdicts on each, and an actionable checklist.
Given a rule code (e.g., C001, C005) or ShellCheck code (e.g., SC2086):
docs/rules/CXXX.yamlnew_code, shellcheck_code, description, new_categorycrates/shuck-linter/src/registry.rs for
the rule code in the declare_rules! macroIf the rule isn't implemented yet, tell the user and suggest using /implement-rule first.
Run a 10% sample first to get a quick read on the delta size:
make test-large-corpus SHUCK_LARGE_CORPUS_RULES=CXXX SHUCK_LARGE_CORPUS_SAMPLE_PERCENT=10 SHUCK_LARGE_CORPUS_KEEP_GOING=1This will likely fail (the test asserts zero deltas). That's expected — the failure output IS the data. Capture the full output.
If the 10% sample shows a manageable number of failures (under ~50), you can optionally run a larger sample or the full corpus to get more complete data. For large delta counts, 10% is sufficient to identify the patterns.
Each failure block in the test output follows this structure:
compatibility diff (code + location):
SCXXXX: shellcheck=N shuck=M
labels:
location-only | directive-handling | shellcheck-parse-abort | ...
shellcheck parse aborted: true|false
shellcheck locations:
SCXXXX=N
shuck locations:
SCXXXX=M
shellcheck diagnostics:
SC1234 line:col-endline:endcol level message
shuck diagnostics:
CXXX=>SCXXXX line:col-endline:endcol severity messageThe key fields:
location-only — same diagnostic codes, different spans. Usually a span anchoring
difference, not a semantic issue.shellcheck-parse-abort — ShellCheck hit a parse error and bailed. Deltas from these
scripts are unreliable.directive-handling — script has ShellCheck directives that may suppress differently.project-closure — script has source/. commands; results depend on resolution.unknown-shell-collapse — script starts with a non-shebang comment before the shell
marker; shell detection may differ.From the test output, compute:
Go through the failing fixtures and sample representative cases from each bucket. For each sample, read the actual script source to understand what the code does. You need enough samples to identify the distinct patterns — usually 3-8 samples per bucket is sufficient.
For each distinct delta pattern, assign a verdict:
shuck-fix — Shuck's behavior is wrong and should be changed to match ShellCheck. This is the most common case: shuck over-reports (false positive) or under-reports (false negative) compared to ShellCheck's intentional behavior.
shellcheck-quirk — ShellCheck reports something but shuck intentionally does not,
and we believe shuck is right to stay silent. ShellCheck's behavior appears to be a
bug, limitation, or design choice we disagree with. Document why — cite the shell
spec or semantic reasoning. These get added to the ShellCheck-side allowlist
(crates/shuck/tests/testdata/allowlists/scNNNN.yaml).
shuck-correct — Shuck reports something that ShellCheck does not, and we've
reviewed it and decided shuck is right to flag it. The diagnostic is genuinely useful
even though ShellCheck misses it. Document why — cite the shell spec or semantic
reasoning. These get added to the shuck-side allowlist
(crates/shuck/tests/testdata/allowlists/shuck/cNNN.yaml).
location-only — Same diagnostic, different span anchoring. Not a semantic disagreement but worth tracking if the offset pattern is systematic.
environment — The delta comes from parse-abort, directive handling, source resolution, or other environmental differences. Not actionable at the rule level.
For each failing fixture, the test output gives you the fixture name (e.g.,
HariSekhon__DevOps-Bash-tools__.bash.d__teamcity.sh). To find the actual script:
find .cache/large-corpus -name "HariSekhon__DevOps-Bash-tools__.bash.d__teamcity.sh" -o \
-path "*/scripts/HariSekhon__DevOps-Bash-tools__.bash.d__teamcity.sh"Read the script around the lines mentioned in the diagnostics. Compare what ShellCheck flagged vs what shuck flagged. To understand ShellCheck's reasoning, you can run it directly through nix:
nix --extra-experimental-features 'nix-command flakes' develop --command \
shellcheck --format=json /path/to/script.sh 2>/dev/null | jq '.[] | select(.code == NNNN)'Look for patterns across multiple samples — most deltas cluster into a few root causes.
Create or update docs/bugs/CXXX.md using this template:
# CXXX: [short title describing the conformance gap]
## Rule
| Field | Value |
|-------|-------|
| Shuck code | CXXX |
| ShellCheck code | SCYYYY |
| Category | [Correctness/Style/etc.] |
| Rule file | `crates/shuck-linter/src/rules/{category}/{name}.rs` |
## Delta snapshot
Sampled on [date] using `make test-large-corpus` at [N]% sample.
| Bucket | Locations | Scripts |
|--------|-----------|---------|
| ShellCheck-only | N | N |
| Shuck-only | N | N |
| Location-only | N | N |
## Delta analysis
### [Pattern name] `[verdict]`
**Bucket:** ShellCheck-only | Shuck-only | Location-only
**Impact:** N locations / N scripts in sample
[1-3 sentence description of the pattern and why it happens.]
**Samples:**
- `fixture_name:line` — [brief description of the specific case]
- `fixture_name:line` — [brief description]
---
### [Next pattern name] `[verdict]`
...repeat for each distinct pattern...
---
## Checklist
Each item links back to the delta pattern it addresses. Items are grouped by
implementation locality (changes to the same function/module are adjacent).
- [ ] **[Short task description]** — addresses: [Pattern name] `[verdict]`
- [Implementation hint: what to change and where]
- [ ] **[Next task]** — addresses: [Pattern name] `[verdict]`
- [Implementation hint]
- [ ] **Re-run corpus test and update this document**
## Allowlisted divergences
Entries added to suppress reviewed intentional divergences in the corpus test.
### ShellCheck allowlist (`crates/shuck/tests/testdata/allowlists/scNNNN.yaml`)
| Fixture | Line | Reason |
|---------|------|--------|
| [fixture_name] | N:N | [reason from the shellcheck-quirk pattern] |
### Shuck allowlist (`crates/shuck/tests/testdata/allowlists/shuck/cNNN.yaml`)
| Fixture | Line | Reason |
|---------|------|--------|
| [fixture_name] | N:N | [reason from the shuck-correct pattern] |
(Omit either section if no entries were added for that side.)
## Notes
[Any additional context: known ShellCheck bugs, upstream issues, spec references,
or decisions about which shellcheck-quirk/shuck-correct items we intentionally diverge on.]The document is optimized for an AI agent to pick up later and work through:
shuck-fix, shellcheck-quirk, shuck-correct, location-only,
environment) are inline with pattern names so they're scannable.shuck-fix items should appear in the checklist. shellcheck-quirk and
shuck-correct items are documented for the record but don't generate code change
work items — instead they get allowlisted (see Step 6).For deltas where we've reviewed the behavior and decided one tool is correct, add allowlist entries so the corpus test passes despite the intentional divergence.
There are two allowlist sides:
shellcheck-quirk verdicts)When ShellCheck reports something that shuck intentionally does NOT report (because ShellCheck is wrong or we disagree), add an entry to filter out the ShellCheck diagnostic.
Location: crates/shuck/tests/testdata/allowlists/scNNNN.yaml
These are keyed by ShellCheck code (lowercase). The span values come from ShellCheck's diagnostic output.
Note: ShellCheck allowlists are currently loaded per-rule in the test harness
(large_corpus_conforms_with_shellcheck()). If the SC code doesn't already have loading
wired up, you'll need to add it — follow the sc2034_allowlist pattern as a model.
shuck-correct verdicts)When shuck reports something that ShellCheck does NOT report, and we've reviewed it and decided shuck is right to flag it, add an entry to filter out the shuck diagnostic.
Location: crates/shuck/tests/testdata/allowlists/shuck/cNNN.yaml
These are keyed by shuck rule code (lowercase) and live in the shuck/ subdirectory.
The span values come from shuck's diagnostic output. Unlike the ShellCheck side, shuck
allowlists are auto-discovered — any YAML file in the shuck/ directory is loaded
automatically. No test harness changes needed.
# Large-corpus allowlist entries for reviewed CXXX/SCNNNN divergences.
# Keep this file narrow and review-backed: every entry must name the exact
# location we intentionally diverge on and why.
entries:
- path_suffix: "owner__repo__path__to__script.sh"
line: 42
end_line: 42
column: 5
end_column: 18
reason: "brief explanation of why this divergence is intentional"Fields:
path_suffix — the fixture filename (the __-delimited path form used in the corpus)line, end_line, column, end_column — exact span from the tool's diagnosticreason — a concise explanation citing the shell spec or semantic reasoningshuck-fix verdicts — these need code changes, not allowlistingenvironment verdicts — these are filtered by labels alreadylocation-only verdicts — fix the span insteadSummarize:
© ewhauser, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/conformance-check of ewhauser/shuck.
Open the folder on GitHubat commit 904974e
Conformance Check next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Conformance Check this skillewhauser/shuck | 137 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Reproduce Chat Statesdifferent-ai/openwork | 24k | — | ~673 | Automated safety check: Pass | Custom licence | |
| Dynamo Jira TicketDynamoDS/Dynamo | 2k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Minimal Run And Auditlllllllama/RigorPilot-Skills | 497 | 2 repos | ~691 | Automated safety check: Pass | MIT | |
| Moav E2EMotherofallVPNs/MoaV | 448 | — | ~1.9k | Automated safety check: Notes | MIT | |
| Anchor Reprolynxlangya/techne | 105 | 1 repos | ~1.2k | Automated safety check: Pass | MIT |
different-ai/openwork
Fires known chat states in the running OpenWork desktop app, such as provider errors, retries and tool steps, so you can check how each renders.
DynamoDS/Dynamo
Create structured Jira tickets for Dynamo from bug reports, failing tests, or feature requests.
lllllllama/RigorPilot-Skills
Rigor Run skill for README-first deep learning repo reproduction.
MotherofallVPNs/MoaV
Run and debug MoaV's end-to-end tests — real protocol connectivity (client-test.sh) and the moav CLI smoke test — against a LIVE server, via the self-hosted e2e workflow or a local test VPS.
lynxlangya/techne
Reproduce a behavioral bug before fixing it, record the failing probe, and verify the fix with the same probe.
Human-Agent-Society/CORAL
Author a new CORAL task — the three pieces that must line up (task.yaml, seed/, a packaged grader/), the coral init → coral validate → smoke-test loop, and how to pick a grader pattern (stdout…
ewhauser/shuck
Profile shuck scripts and large-corpus fixtures, especially requests to profile a corpus script/fixture, reprofile after a shuck performance change, or produce a hotspot table from a samply profile.
ewhauser/shuck
Compare benchmark performance between two git worktrees (or the current worktree vs main).
ewhauser/shuck
Fix a shuck lint rule that has conformance deltas against ShellCheck.
ewhauser/shuck
Implement an autofix for an existing shuck-rs lint rule. An agent skill from ewhauser/shuck.
ewhauser/shuck
Implement a shuck-rs lint rule from its YAML definition in docs/rules/.
ewhauser/shuck
Write and update technical design specifications. An agent skill from ewhauser/shuck.
Categories
Verify ShellCheck conformance for a shuck rule by running the large corpus test, analyzing deltas, and producing a structured bug document in docs/bugs/. Conformance Check is an agent skill from ewhauser/shuck. Verify ShellCheck conformance for a shuck rule by running the large corpus test, analyzing deltas, and producing a structured bug document in docs/bugs/.
Conformance Check fits situations like: the user asks to check conformance; run the corpus test for a rule; investigate shellcheck deltas; create a bug report for a rules conformance gaps.
Run `npx skills add ewhauser/shuck --skill conformance-check -a claude-code`. Or copy the skill folder (.claude/skills/conformance-check in ewhauser/shuck) into .claude/skills/conformance-check in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ewhauser/shuck --skill conformance-check -a codex`. Or copy the skill folder (.claude/skills/conformance-check in ewhauser/shuck) into .agents/skills/conformance-check in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ewhauser/shuck --skill conformance-check -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/conformance-check, .gemini/skills/conformance-check, .github/skills/conformance-check and .opencode/skills/conformance-check in your project.
Going by SKILL.md and its folder, Conformance Check needs the command-line tools its instructions call (shellcheck, make, nix and jq).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Conformance Check is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Conformance Check: Reproduce Chat States (different-ai/openwork, 24k stars), Dynamo Jira Ticket (DynamoDS/Dynamo, 2k stars), Minimal Run And Audit (lllllllama/RigorPilot-Skills, 497 stars) and Moav E2E (MotherofallVPNs/MoaV, 448 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ewhauser (a GitHub user) maintains it in ewhauser/shuck, which has 137 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 5, 2026.
Source: ewhauser/shuck on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.