setup-daher-skills
Skill1 starsChanged 2 months agoMITView on GitHub
One-time per-project setup for the claude-skills plugin — detects the project's stack, seeds .claude/rules/ and docs/agents/project-conventions.md, and wires CLAUDE.md.
In this repository27 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- 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
- systematic-debuggingSkill
- test-mobile-appSkill
- writing-skillsSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 4 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 9
Run once per project (re-running is safe — see Idempotency).
- Very specific: line 15
If docs/agents/project-conventions.md already exists, switch to update mode: read it, re-run detection (Step 1), present only the values …
- Distinctive: line 35
Done when: every row above has a value or an explicit "not found".
- Distinctive: line 50
Done when: every decision has a user answer or a detection-backed default the user saw.
- Very specific: line 60
Done when: every accepted file exists on disk and cat docs/agents/project-conventions.md shows the confirmed values.
- Distinctive: line 72
Never guess a project value silently — detect it, or ask.
- Distinctive: line 73
Never overwrite user-edited config without showing the diff and asking.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill 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
Setup Daher Skills
Run once per project (re-running is safe — see Idempotency). This is what makes every other skill in the plugin work: they read the files this skill seeds, and fail with Run /setup-daher-skills first — missing <file> when they're absent.
Division of labor: finding facts about the project is your job — never the user's (search the codebase yourself). Decisions belong to the user.
Step 0: Idempotency Check
If docs/agents/project-conventions.md already exists, switch to update mode: read it, re-run detection (Step 1), present only the values that differ or are new, and ask whether to update them. Never silently overwrite an existing config.
Done when: you know whether this is a fresh setup or an update, and (in update mode) you have the existing values loaded.
Step 1: Detect the Project
Gather every fact you can without asking:
| Fact | How to detect |
| Package manager | Lockfile: pnpm-lock.yaml → pnpm, yarn.lock → yarn, bun.lockb → bun, package-lock.json → npm |
| Build / test / lint / dev commands | package.json scripts (build, test, lint, typecheck, dev) |
New-code root ({app}) + features root | Glob for src/features/, src/new-app/, app/, src/ |
| Base / integration branch | git remote show origin (HEAD branch); check whether develop exists |
| Error surface | Grep for useNotification, toast., sonner, notistack in the app code |
| Viewport policy | Grep for a container component (AppContainer or similar) and for sm:/md:/lg: usage — responsive vs mobile-only |
| i18n / locales | public/locales/*, i18n config files |
| Test runner | vitest.config.* / jest.config.* |
| UI kit | components.json (shadcn), Tailwind version in package.json |
Done when: every row above has a value or an explicit "not found".
Step 2: Confirm With the User
Present findings with recommendations, then ask one AskUserQuestion round for the whole open frontier — batch independent questions (up to 4 per call); a question whose answer depends on another open one waits for the next round. Recommended option first, marked "(Recommended)".
Decisions to resolve (skip any that detection settled unambiguously):
- Rules subset — which
.claude/rules/files to seed. Recommend based on detection (e.g. skipform-patterns.mdif no react-hook-form; skipzustand-patterns.mdif no zustand; always recommendfrontend-security.mdandreact-performance.mdfor any app that renders user or external data — that is every app). Full catalog in the plugin'srules/README.md. - Base branch for PRs (if both
developandmainexist). - Viewport policy — mobile-only (default) vs responsive; which container component; allowed breakpoints.
- Error surface — how errors are shown to users.
- Permissions allowlist — seed
.claude/settings.jsonwith safe commands for the detected package manager (fewer approval interruptions duringexecute-tasks)? - Iron-Law Stop hook (opt-in) — seed
.claude/iron-law.jsonwith a fast verify command (recommendtsc --noEmit && {pm} vitest run --changed --passWithNoTestswhen atypecheck-capable tsconfig exists — the type check catches what--changedtests skip;{pm} vitest run --changed --passWithNoTestsalone otherwise;tsc --noEmitfor projects without tests)? Explain: it mechanically blocks ending a turn with modified source files until the verify command passes. Mention the two always-on hooks that need no config:block-no-verifyandblock-lint-config-edits.
Done when: every decision has a user answer or a detection-backed default the user saw.
Step 3: Write the Config
.claude/rules/— copy the chosen rule files from the plugin'srules/directory. Resolve the plugin root:${CLAUDE_PLUGIN_ROOT}if set; otherwise the directory two levels above this skill's own directory (this skill lives at<plugin-root>/skills/setup-daher-skills/).docs/agents/project-conventions.md— fill templates/project-conventions.md with the confirmed values.- Project
CLAUDE.md— append the block from templates/claude-md-block.md (create the file if missing; in update mode, replace the previous block between its markers). The block uses@docs/agents/project-conventions.mdimport syntax — one source of truth, zero drift — and carries the compaction instruction that protectsexecute-tasksfrom auto-compact. .claude/settings.json(if accepted) — merge the permissions allowlist for the detected package manager. If the file exists, read it and merge into the existingpermissions.allowarray — never clobber other settings..claude/iron-law.json(if accepted) —{ "verify": "<command>", "timeoutSeconds": 120 }.
Done when: every accepted file exists on disk and cat docs/agents/project-conventions.md shows the confirmed values.
Step 4: Verify and Report
- Re-read each written file — confirm valid content (JSON parses, markdown has no placeholders left).
- Report: files written, files skipped and why, values chosen.
- Point the user at the pipeline: "Start with
/brainstorm(vague idea) or/generate-prd(clear feature);/pipeline-helpexplains the full flow."
Done when: the report lists every file with its path and the user knows the next command.
Rules
- Never guess a project value silently — detect it, or ask.
- Never overwrite user-edited config without showing the diff and asking.
- Seeded files belong to the project — tell the user they can edit them freely; skills read them at run time.
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.

