claude-skills
CLAUDE.md0 starsChanged 30 days agoMITView on GitHub
Repo of Claude Code skills. Each skill is a slash command implemented in Markdown + Bash, no runtime. Each skill follows the same shape: Key invariants: Cross-cutting commands only. Per-skill commands (audit/bin/*.sh, screens CLI, ...) live in that skill's nested CLAUDE.md (see Wegweiser).
- Reads credentials
In this repository13 other files it gives its agents.
- audit/CLAUDE.mdCLAUDE.md
- delegate/CLAUDE.mdCLAUDE.md
- plan-it/CLAUDE.mdCLAUDE.md
- screens/CLAUDE.mdCLAUDE.md
- ship/CLAUDE.mdCLAUDE.md
- store-assets/CLAUDE.mdCLAUDE.md
- auditSkill
- delegateSkill
- plan-itSkill
- readinessSkill
- screensSkill
- shipSkill
- store-assetsSkill
The file
We split this CLAUDE.md into the rules it gives an agent
10 rules. About 0 are common, 2 are distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 10
No dependencies — no npm, no composer, no venv
- Very specific: line 51
Test commands (every audit/bin/*.test.sh and audit/hooks/*.test.sh is a single script, no wrapper): audit/CLAUDE.md.
- Very specific: line 55
SKILL.md under 500 lines: If approaching, split into references/*.md (one level deep, never nested).
- Very specific: line 117
disable-model-invocationis no longer set on any skill: Every skill is model-invocable, since the destructive steps have their own gates … - Very specific: line 126
Create new-skill/SKILL.md with frontmatter (name, description, model, effort, allowed-tools).
- Very specific: line 127
Add agents/ for any subagents you dispatch.
- Very specific: line 128
Add references/ for content over 100 lines.
- Very specific: line 129
Add guidelines/ for opinionated best practices the agents should follow.
- Very specific: line 130
Run bash ~/.claude/hooks/sync-skills.sh to deploy locally.
- Distinctive: line 131
Update root README.md to list the new skill.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
claude-skills
Repo of Claude Code skills. Each skill is a slash command implemented in Markdown + Bash, no runtime.
Stack
- Markdown + YAML frontmatter (skill orchestrator)
- Bash for deterministic logic (
audit/bin/,~/.claude/hooks/) - Claude Code 2.1.218+ frontmatter features:
model,effort,allowed-tools,disallowed-tools,maxTurns,context: fork+agent+background. Full field reference (verified against the official docs, August 2026):docs/references/frontmatter.md - No dependencies — no npm, no composer, no venv
Architecture
Each skill follows the same shape:
skill-name/
SKILL.md orchestrator (under 500 lines)
agents/*.md worker specs (plan-it, screens)
references/*.md on-demand details (TOC if >100 lines)
guidelines/*.md content best practices loaded by workers (not audit)
bin/*.sh deterministic helpers (audit only)Key invariants:
- Orchestrator writes, subagents return. Subagents cannot write under
.claude/(hardcoded permission protection, also underbypassPermissions; a subagent-sidemode: bypassPermissionsstill failed the write). Suppression and log files: structured output → parsed by orchestrator → written by orchestrator. - Frontmatter
model: inheriton the orchestrator skills (audit, plan-it) since 2026-09-03: they run on the session model, the same reasoning/delegatedocumented earlier.shippinsmodel: sonnet. Never pinned versions; pin only on Bedrock/Vertex/Foundry. /auditarchitecture (PR review on the built-in/code-review) and platform support detail:audit/CLAUDE.md.
Commands
Cross-cutting commands only. Per-skill commands (audit/bin/*.sh, screens CLI, ...) live in that skill's nested CLAUDE.md (see Wegweiser).
| Command | Purpose |
bash ~/.claude/hooks/sync-skills.sh | Symlink every skill of both repos into ~/.claude/skills/, never copies; runs on every session Stop |
python3 scripts/usage-report.py --days N [--exclude SESSION_ID] | Weighted token/cost usage report across recent sessions under ~/.claude/projects/ |
bash audit/bin/classify-diff.sh [--paths] | Emit DIFF_CLASS=prose|code for the current diff. Drives /audit's prose gate and /ship's marker-delta check; fails open to code |
bash audit/bin/test-lock.sh [--cached] <cmd...> | --cmd "<string>" | Serialize test runs across parallel fix agents/verifiers (mkdir spinlock under --git-common-dir; 15min TTL; a linked worktree with test-isolation: worktree in .claude/ship.md locks on its own git dir, test-isolation: process (every run has its own DB) takes no repo lock except for a simulator destination, TEST_LOCK_KEY=common forces the shared one). --cached = full suite: admitted as a suite (xcode when it calls xcodebuild) run, stall-watched with one restart, and a green flake-free run on an identical tree is reused for 30 min (TEST_CACHE_HIT <key>, shared by /audit, /ship, deploy <app> test). Used by /audit, /delegate, /ship and the deploy <app> test gate (~/.local/bin/deploy) |
bash audit/bin/affected-tests.sh <root> <base_ref> <test_command> | /audit Phase 4's test selection: prints AFFECTED=run + AFFECTED_CMD (changed tests plus tests named after changed sources), none, or full (fallback: unsupported runner, config/lockfile/test-helper/migration change, >25 files). The full suite runs only in /ship and deploy <app> test |
bash audit/bin/test-gate.sh slot-acquire <app> | slot-release <pid> | run <test-cmd> <file-cmd> | Helper of deploy <app> test: slot-acquire/slot-release are thin wrappers over lib-testrun.sh admission (two suites at once, a third waits up to 900 s; the old single full-suite.slot is gone); run reruns red browser files once, logging flakes to ~/.local/state/claude/test-flakes.jsonl. Detail: audit/CLAUDE.md |
. audit/bin/lib-testrun.sh | Test-run infrastructure (tr_ functions, bash 3.2): ticket store in ~/.local/state/claude/runs, admission (xcode ceiling 2, suite ceiling 2, global 3, memory-pressure rule, staggered), stall watchdog with one restart, process-tree kill, result cache, test-DB registry, tr_worktree_cleanup <toplevel>. Events: test-events.jsonl plus TESTRUN <event> lines on stderr. TESTRUN_DISABLE=1 restores the pre-lib behaviour. Detail: audit/CLAUDE.md |
bash audit/bin/worktree-setup.sh <worktree> <main> | bash audit/bin/worktree-cleanup.sh <worktree> | Shared worktree lifecycle: setup (.env, cloned or installed vendor/node_modules, public/build; no-op for Swift repos) before work, cleanup (process groups of its test runs, registered test DBs, worktree, branch; refuses on uncommitted or unpushed work) after. Used by /worktree and the Feierabend daemon. Detail: audit/CLAUDE.md |
bash audit/bin/test-status.sh [--reap [--scope DIR]] | Lists running test runs (project, class, state, age, progress age); --reap kills process groups whose wrapper died and aged playwright run-server orphans inside the scope. Install: ln -s <skills>/audit/bin/test-status.sh ~/.local/bin/test-status |
. audit/bin/lib-orchestrator.sh | Orchestrator prologue every skill sources; values cross Bash blocks only via orch_state_save/orch_state_load. bash 3.2. Function list: audit/CLAUDE.md |
bash audit/bin/check-fresh-shell.sh [root] | Finds Bash blocks calling orch_* without sourcing the lib, or reading an unset state variable. Detail: audit/CLAUDE.md |
bash audit/bin/check-docs-claims.sh [root] | Mechanical doc-drift check: CLAUDE.md/README.md/*/SKILL.md claims verified against disk |
bash audit/bin/run-log.sh --start --skill <name> | ... --outcome <str> [...] | Appends one terminal-outcome JSON line to $HOME/.local/state/claude/skill-runs.jsonl. Used by /audit, /plan-it, /delegate, /ship |
Test commands (every audit/bin/*.test.sh and audit/hooks/*.test.sh is a single script, no wrapper): audit/CLAUDE.md.
Conventions
- SKILL.md under 500 lines. If approaching, split into
references/*.md(one level deep, never nested). - Reference files >100 lines need a TOC at top.
- YAML
nameis lowercase + hyphens, noclaude/anthropic. Description in third person, includes both what and when. - Everything is written in English (since 2026-07-08, full migration): SKILL.md bodies, agents, references, guidelines. German ONLY for:
when_to_usetrigger phrases (they mirror the user's prompt language), runtime user-facing strings inside bash blocks, and deliberate German example content (copywriting guideline). - Contract identifiers are never renamed casually.
ALLE_DATEIEN,AKTUELLES_LOG,DATEISTRUKTURandZENTRALE_PATTERNSare German-named cross-file contracts: challenge agents receive the parameters by these exact names. Renaming needs a coordinated pass over every referencing file. Reviewers: these are NOT English-migration violations. - No emojis. No em-dashes in new English prose where avoidable.
- Frontmatter for skills sets
model: inherit(orsonnetfor the cheap ones),effort: high|xhighfor/plan-itandmediumfor/audit,/ship,/delegateand/screens(none runs a specialist pipeline),allowed-tools: [...], optionalhooks: { PreToolUse: ... }. - Agent files here are orchestrator-dispatched worker specs, NOT Claude Code subagent definitions, and they have no frontmatter. Every
<skill>/agents/*.mdopens with an# Subagent N: Nameheading followed by a bullet list (- **subagent_type:**,- **model:**,- **maxTurns:**); the orchestrator reads those and passes them to the Agent tool. A real subagent definition lives in.claude/agents/, uses genuine YAML frontmatter, requiresname+description, and has nosubagent_typefield (itsnameIS the type). Field set and distinction:docs/references/subagents.md. A guideline that demands evidence must name a worker role with the matchingtools:grant; audit-specific detail:audit/CLAUDE.md. - Skill-frontmatter hooks do not reach subagents. A
hooks:block inSKILL.mdapplies to the main session's tool calls only. The worktree-wide git guard therefore also lives in thehooks:frontmatter of every registered agent that has Bash (spec-executor.md). - Hook safety: never
claudefrom inside a Stop/PreToolUse hook (infinite loop). Global hooks (sync-skills.sh,pre-compact.sh,auto-format.sh) live in~/.claude/hooks/(symlinked into the private repo, wired up in~/.claude/settings.json). Skill-scoped hooks ship inside the skill directory (e.g.audit/hooks/); the frontmatter registers one dispatcher that invokes the guards as siblings, aggregating results.
Registered subagents (agents/)
The real Claude Code subagent definitions (YAML frontmatter, name = the subagent_type), one
per dispatched worker type, symlinked to ~/.claude/agents (so an edit is live immediately; never
put a non-agent .md file there, every *.md loads as an agent). Roster: plan-challenger,
spec-executor, screens-view-discoverer
(points at screens/agents/view-discoverer.md), plus generic code-reviewer, security-auditor,
fact-checker, ui-ux-reviewer, test-writer. Where a definition points at a worker
spec inside a skill, the procedure stays in the skill. The
agent with Bash (spec-executor) carries the
worktree-wide git guard in its own hooks: frontmatter (skill-frontmatter hooks do not reach
subagents, see Conventions).
Skill roster
| Skill | Model | Purpose |
/audit | inherit (session model) | Pre-push PR review: deterministic pre-checks, the built-in /code-review high in a review worktree, a checklist agent on sensitive paths, orchestrator triage, one fix executor, tests, push marker |
/ship | sonnet | Docs sync + commit + audit gate + test gate + push + deploy + verify |
/plan-it | inherit (session model) | Iterative plan builder, parallel challenges |
/delegate | inherits session model (see delegate/CLAUDE.md) | Default implementation flow: the expensive model analyzes and reviews, Sonnet implements |
/screens | inherit (session model) | Screenshot catalog of every view in every applicable state plus App-Store marketing renders |
/readiness | inherit (session model) | Read-only production-readiness audit: Explore agents per checklist group, orchestrator verifies and writes one collection + plan per app and an index |
/store-assets | inherit (session model) | App Store / Play Store screenshot stills from a project's own app screens + config: real device bezels, fixed headline/device grid, two-phone hero composition |
/worktree | inherit (session model) | Parallel git worktrees: new enters one and runs worktree-setup.sh, rm runs worktree-cleanup.sh. Added to this repo 2026-11-05; the copy in ~/.claude/skills/worktree was unversioned until then |
Effort levels
Set on skill frontmatter or via CLAUDE_EFFORT; per-skill detail (plan-it's challenge/eval table) lives in
that skill's nested CLAUDE.md (see Wegweiser).
Project-specific overrides
Projects can override globals by adding files to their own .claude/:
.claude/audit-guidelines.md— project rulesauditreads during triage (Phase 3).claude/plan-guidelines.md— read inplan-itPhase 0.7, threaded to all challenge agents.claude/ship.md—/ship's per-project config:deploy-command:,test-command:(also read by/auditPhase 3),health-check:; a repo-supplied command surface (see Gotchas).claude/mutation-targets: one glob per line (#comments, optional<glob> :: TestA|TestBnames the test classes to run for indirectly tested classes) of files/delegatePhase 5 mutation-tests when a diff touches them (audit/bin/mutate.sh); no file, no mutation run.claude/audits/suppressions.json— per-project accepted tradeoffs, appended by /audit Phase 3 for durable discards, editable by hand
Gotchas
Cross-cutting only. Per-skill gotchas live in that skill's nested CLAUDE.md (see Wegweiser).
- Subagents (and forked skills,
context: fork) run in the BACKGROUND by default; foreground must be requested. A background result only arrives as a completion notification in a later turn, and it keeps every MCP tool but only a reduced built-in set (Read,Grep,Glob,Bash,Edit,Write,NotebookEdit,WebFetch,WebSearch,TodoWrite,Skill,ToolSearch,SendMessage,Artifact, plus task tools). A dispatch the orchestrator must consume in the same turn needs an explicitrun_in_background: false/background: false(plan-it's challenge panel/eval agent, the/delegateexecutor). Workflow-tool-dispatched audit scouts/specialists/verifiers/fixers are unaffected: the whole run returns as one notification.AskUserQuestionis stripped from every subagent regardless. No skill here currently usescontext: fork. - Skill descriptions compete for one budget.
description+when_to_useare capped at 1,536 chars combined per skill; the model-facing skill listing gets ~1% of the context window, and on overflow Claude Code drops the least-invoked skills' descriptions first./auditmeasured 851 chars on 2026-10-03. CheckskillOverridesin~/.claude/settings.jsonbefore concluding a skill "does not trigger": it's a local settings choice, not a repo property. - Two marker-hash conventions — never mix them.
orch_hash_passed/orch_hash_progressinlib-orchestrator.sh./tmp/claude-audit-passed-*hashes the cwd WITHOUT trailing newline;/tmp/claude-audit-in-progress-*hashes WITH newline. Reading one family with the other convention silently produces a different hash. The passed marker stores the audited tree id (orch_tree_hash);/ship's gate requiresorch_marker_matchesplus a 30-minute age, so an edit after the audit no longer ships as audited (a delta that is entirely prose byclassify-diff.sh --pathsis still accepted). sync-skills.shruns on every session Stop, and every skill under~/.claude/skills/is a symlink into one of the two repos, like agents, hooks, CLAUDE.md and settings.json. No copies: an edit under the repo is live in the next session. The hook creates missing links, repairs wrong ones, prunes deleted ones, never touches an entry it doesn't own.- Plan mode on
model: opusswitches to Sonnet during execution under globalopusplan. Skill frontmatter override (model: opus) keeps it on Opus end-to-end. maxTurnson agents is a hard limit. A worker that exceeds it returns whatever it has, including partial findings. Give a fixing worker slack (5 turns minimum); a reviewer needs 3-5.disable-model-invocationis no longer set on any skill. Every skill is model-invocable, since the destructive steps have their own gates (PreToolUse push guard, worktree-git guard, orchestrator triage).- Hooks are the one place
${CLAUDE_SKILL_DIR}does NOT exist. A hook receives exactlyCLAUDE_PROJECT_DIR,CLAUDE_PLUGIN_ROOT,CLAUDE_PLUGIN_DATA;CLAUDE_PROJECT_DIRis the audited project, not the skill. A skill hook must probe its own install location and fail open (exit 0) on a missing install.${CLAUDE_SKILL_DIR}(used outside hooks, e.g.audit/SKILL.md) is the non-hook equivalent that DOES expand to the skill's own directory. - Three sites run a repo-supplied command string, only the deploy one asks first.
audit/SKILL.md'sTEST_COMMAND,.screens/config.json's start/stop/seed/migrate fields (hash-checked,screens.mjs trustasks once on change), andship/SKILL.md'stest-command:/deploy-command:all execute repo-supplied config. Onlydeploy-command:gets anAskUserQuestionon every run, since it is irreversible and production-facing. - The run ledger (
$HOME/.local/state/claude/skill-runs.jsonl) records how a run went, deliberately outside any repo and outside~/.claude(the Bash sandbox denies writes to the latter).run-log.shappends one line per terminal outcome from/audit,/plan-it,/delegate,/ship; the ledger is read for cost measurement. The anomaly report (run-stats.sh) was removed 2026-10-02 together with the learning phase that read it.
Adding a new skill
Follow this minimum:
- Create
new-skill/SKILL.mdwith frontmatter (name,description,model,effort,allowed-tools). - Add
agents/for any subagents you dispatch. - Add
references/for content over 100 lines. - Add
guidelines/for opinionated best practices the agents should follow. - Run
bash ~/.claude/hooks/sync-skills.shto deploy locally. - Update root
README.mdto list the new skill.
Wegweiser (nested context files)
Rules bound to one skill's own directory live in that skill's CLAUDE.md, loaded when a file
there is read; everything else stays here.
| File | Covers |
audit/CLAUDE.md | /audit architecture and evidence, audit/bin/*.sh commands, gotchas, self-audit context |
plan-it/CLAUDE.md | Effort table, plan template contract |
ship/CLAUDE.md | Docs-sync-before-commit phase |
delegate/CLAUDE.md | model-inherit rationale |
screens/CLAUDE.md | CLI and test suite |
store-assets/CLAUDE.md | Render/validate commands, bezel/status-bar cache rebuild, reviewed-hash and no-hardcoded-brand-value gotchas |
Release process
There isn't one. Push to main, Stop hook syncs to ~/.claude/skills/, next Claude Code session picks up the changes.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

