claude-skills
CLAUDE.md1 starsChanged 57 days agoMITView on GitHub
This repo is a Claude Code plugin: 26 skills, 6 agents, 6 hooks, and 19 seed rules forming a feature-development pipeline. Consumers install it and run /setup-daher-skills once per project. 1. Counts stay in sync. The number of skills/*/SKILL.md directories must match the "N skills" claim in README.md, package.json, and .claude-plugin/plugin.json; the number of seedable rules/*.md must match the "N seed rules" claim above. Every rule is in the catalog. rules/README.md's table lists every rules/*.md, in both directions — it…
- Commits and pushes
In this repository27 other files it gives its agents.
- design-craft/CLAUDE.mdCLAUDE.md
- android-emulatorSkill
- audit-branchSkill
- brainstormSkill
- create-devtoolSkill
- create-featureSkill
- create-infrastructureSkill
- execute-tasksSkill
- finish-featureSkill
- frontend-testingSkill
- generate-feature-docSkill
- generate-prdSkill
- git-commitSkill
- ios-simulatorSkill
- modify-featureSkill
- pipeline-helpSkill
- plan-implementationSkill
- prd-clarifierSkill
- prd-to-uxSkill
- prototypeSkill
- react-clean-architectureSkill
- receiving-code-reviewSkill
- refactoring-uiSkill
- setup-daher-skillsSkill
- systematic-debuggingSkill
- test-mobile-appSkill
- writing-skillsSkill
The file
We split this CLAUDE.md into the rules it gives an agent
4 rules. About 0 are common, 0 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 15
Reviewer agents are read-only: Every agents/*-reviewer.md declares tools: without Write/Edit, reports with the shared contract (Status: …
- Very specific: line 16
Hooks are real or absent: Never write "a hook blocks X" unless the hook exists in hooks/ and is wired in hooks/hooks.json.
- Very specific: line 43
Don't hand-bump the version: the old manual checklist ran --check *before* the bump, so it validated the previous version and nothing …
- Very specific: line 51
Test before trusting: a new or heavily edited skill gets one subagent run with a realistic prompt (see writing-skills).
≈ “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 — Maintainer Guide
This repo is a Claude Code plugin: 26 skills, 6 agents, 6 hooks, and 19 seed rules forming a feature-development pipeline. Consumers install it and run /setup-daher-skills once per project.
Invariants (checked by node scripts/validate-skills.mjs — run it after ANY change)
- Counts stay in sync. The number of
skills/*/SKILL.mddirectories must match the "N skills" claim in README.md, package.json, and.claude-plugin/plugin.json; the number of seedablerules/*.mdmust match the "N seed rules" claim above. Every rule is in the catalog.rules/README.md's table lists everyrules/*.md, in both directions — it is what/setup-daher-skillsoffers, so a rule missing from it is never seeded and every skill instructing "read.claude/rules/<that>.md" breaks in a fresh project (this silently killedapi-boundary.md). - One version, one source.
package.jsonis the version source of truth;.claude-plugin/plugin.jsonfollows vianpm run sync-version. CI runs--check. - No cross-skill file paths. Skills and agents reference other skills by prose invocation ("run the
/xskill") or agentskills:preload — neverskills/<other>/...or~/.claude/...paths (they break on plugin installs). - Descriptions follow the invocation-mode formula. Model-invoked: what + "Use when <triggers>" (+ "NOT for" when skills compete). Manual-only:
disable-model-invocation: true+ one line. A skill referenced by another skill's transition (e.g.git-commit,finish-feature) must NOT be manual-only — the model has to be able to invoke it. - The router never lies.
pipeline-helpmust be re-synced whenever any pipeline skill's routing, inputs, or outputs change — a router mentioning a skill that doesn't exist (or missing one that does) is a router that lies. Same for the README catalog. - SKILL.md < 500 lines. Depth goes to
references/(progressive disclosure). Artifact formats live inreferences/*-FORMAT.md(PRD-FORMAT, UX-SPEC-FORMAT, PLAN-FORMAT, PROGRESS-FORMAT). - Canonical blocks are byte-identical. The
> **Project config:**preamble and the two mirroredshared-conventions.mdfiles must not drift (validator enforces). - Reviewer agents are read-only. Every
agents/*-reviewer.mddeclarestools:without Write/Edit, reports with the shared contract (Status: PASS | CONCERNS | FAIL+ TRIVIAL/ARCHITECTURAL tags, ≤120 lines), and carries the anti-overengineering clause. - Hooks are real or absent. Never write "a hook blocks X" unless the hook exists in
hooks/and is wired inhooks/hooks.json. Instructions are advisory; hooks are deterministic — critical verification rules get a hook, not prose. - No TruckBays values in generic content. Project-specific values (package manager, base branch, error surface, viewport container) live in the seeded
docs/agents/project-conventions.md; skills reference the file, withpnpm-style commands only as examples ("e.g.pnpm build"). - Retired means deleted. Removing a skill = delete the directory + remove every reference (README, pipeline-help, plugin counts) + CHANGELOG entry naming the replacement. No deprecated/ graveyard.
- Rejected ideas live in
.out-of-scope/. One file per concept with the decision and the why — check it before proposing "new" ideas. - A
NOT forclause is checked, not asserted. Every skill whose description carries one has a routing case inevals/— a realistic request, atool_usedgrader (min: 1) for the owning skill and one (min: 0, max: 0) for the competitor it names.validate-skills.mjsfails when aNOT forskill has no case or a grader names a skill that does not exist;npm run evalruns the cases themselves (~$1.60, needs a model). It is a regression gate on descriptions, not a quality measure — seeevals/README.md. - Every released version is recoverable. It has a
claude-skills--vX.Y.Ztag at the commit that shipped it and a## X.Y.Z (date)CHANGELOG section (validator enforces the section for the current version). Without both, "go back to the version before it broke" is guesswork.
Releases
Record what changed under ## [Unreleased] in CHANGELOG.md as the work lands — while you still remember the why. Then, from main after your PR is merged:
npm run release -- <patch|minor|major> --dry-run # prints all 10 steps, changes nothing
npm run release -- <patch|minor|major>scripts/release.mjs is the checklist: guards (on main, clean, in sync) → validators + both plugin validations → require [Unreleased] notes → bump + sync-version → cut the CHANGELOG section → re-validate after the bump → commit → claude plugin tag --push → push → gh release create with the section as notes.
claude plugin validate takes two invocations, and only one of them looks at skills:
claude plugin validate .claude-plugin/plugin.json # plugin + every SKILL.md (no --strict: root CLAUDE.md warns)
claude plugin validate . --strict # marketplace manifest only. resolves to marketplace.json and exits 0 even when a skill's frontmatter doesn't parse — which is how a broken audit-branch description survived two releases.
Don't hand-bump the version: the old manual checklist ran --check before the bump, so it validated the previous version and nothing re-checked afterwards.
To see what changed between versions: npm run changes -- 3.0.0 3.1.0.
Writing style for skills
**Done when:**gates on numbered steps — prefer a runnable check over a descriptive condition.- Formulate in positive ("stage specific files") over prohibition where possible; prohibitions that stay must carry the failure they prevent.
- Test before trusting: a new or heavily edited skill gets one subagent run with a realistic prompt (see
writing-skills).
Sibling plugin: design-craft/
design-craft/ is a separate plugin in this repo with its own skills/, agents/, manifests, CHANGELOG.md, version, validator (node design-craft/scripts/validate.mjs, run in CI alongside this plugin's) and routing eval suite. It is registered as a second entry in .claude-plugin/marketplace.json. None of the invariants above count it: the "N skills" claims, pipeline-help, rules/, hooks and scripts/validate-skills.mjs refer only to the pipeline plugin. Never move a skill between the two without updating both validators; see design-craft/CLAUDE.md for its own invariants.
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.

