Author or change a Crewforth component (skill / agent / command) against the template and its gates.
Scanned 10/1/2026
npx -y skills add crewforth/crewforth --skill crew-skill --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Crew Skill?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/crewforth-crew-skill)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: crew-skill
description: Author or change a Crewforth component (skill / agent / command) against the template and its gates.
disable-model-invocation: true
metadata:
kind: command
---
# /crew-skill
`AGENT_TEMPLATE.md` states the contract for a component. Full installs carry it (refreshed on `update`); the
plugin edition does not. No gate routes to it, so this command is the route, and it ends in the gates.
**A component is not finished when it is written. It is finished when the suite says so.**
## 1. Decide the shape before writing anything
Read `.claude/AGENT_TEMPLATE.md`. Then answer, in one line each:
- **What is the smallest form that works?** A rule in an existing skill's body beats a new skill; a new skill beats
a new agent. Every new skill costs its NAME in every session, forever, for every user — and its description too,
until the listing overflows its budget, at which point descriptions start being dropped from the skills you
invoke least. Say what that buys.
- **Who reaches it?** An agent, a command, or the discipline's trigger map. If the answer is "the model will notice
the description", stop — that is the dark component §3b exists to catch.
- **Read or write?** A component that reports and a component that changes files do not belong together: different
risk, different done-criterion. Split them.
- **Is it stack-neutral?** Anything shipped to every profile names no language, framework or vendor as *the* case.
The example you have in mind is not the scope.
## 2. Write it
- Skill: `.claude/skills/<name>/SKILL.md` — the directory name and the `name:` field must match. Keep the body
lean; depth goes to `references/*.md` and is loaded on demand.
- Agent: a thin trigger — *who and when*. The *how* lives in the skill it applies; do not copy the method in.
- The `description` says **when to reach for this**, not what its author knows.
## 3. Register it — the cascade, in this order
Skipping one of these is how a component ships half-installed:
1. **Route it.** Name it in an agent body, a command, or the trigger map. §3b checks exactly this.
2. **Golden case.** Add a positive line to `.claude/eval/golden-routing.txt` — and a **negative** one
(`prompt|!target`) for a neighbour it must NOT steal.
3. **Catalog + counts** *(Crewforth repository only — `packaging/` is not installed anywhere)*.
Add the Turkish summary line (`packaging/skill-summaries.tr.tsv`; agents and commands have their own `.tr.tsv`),
which the site build requires (`cd site && npm ci && npm run build`), and the diagrams if the component set changed:
`node packaging/gen-diagrams.mjs` writes `assets/`, and smoke fails while any of them is stale.
4. **Plugin edition** *(Crewforth repository only)*. `bash packaging/build-plugin.sh` — in the same commit, or the
release stops at the sync gate.
5. **Budget.** A new skill moves `BUDGET_SKILL_LISTING` (the skill listing in characters, counted like Claude Code
counts it; `/crew-doctor` reports the same number). Raise it in the same commit with the justification comment the
file's convention requires. Never raise it to make a red gate green without saying why.
## 4. Prove it — run all four, in this order, with the Bash tool, not PowerShell
```
bash .claude/eval/scan-skill.sh .claude/skills/<name> # supply-chain: SAFE, and rc=3 means NOT scanned
bash .claude/eval/routing-eval.sh # the golden case, positive and negative
bash .claude/eval/smoke-test.sh # structure, budget, §3b routed, cross-links
CREW_NO_STAR=1 bash .claude/eval/doctor.sh # the live install still healthy (star line off here)
```
In the plugin edition none of the four commands above exist — it ships no `eval/` scripts — so there the proof is
the Crewforth repository's own suite, not a local run.
**Do not finish while §3b is red.** "It works when I invoke it by name" is not the claim being tested — the claim
is that something reaches it without being told to. If the suite skips a case, that is not a pass: chase why.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!