A skill library for Claude Code and other agents. 52 skills organized into 3 plugin groups (reasoning, context-engineering, professional), each with its own orchestrator. Skills are the primary artifact — everything else (plugins, routing, scripts) exists to distribute and compose them.
skills/{name}/SKILL.md — canonical skill files (flat, for npx skills)
plugins/craftwork-{group}/skills/ — copies of skills grouped for Claude Code marketplace
routing.yaml — single source of truth for skill composition
scripts/validate-routing.sh — validates routing.yaml (run after any change)
.claude-plugin/marketplace.json — marketplace metadata (versions, descriptions)
Two copies of each skill exist: one in skills/ (canonical) and one in plugins/craftwork-{group}/skills/. When editing a skill, edit the canonical skills/ version, then copy it to the appropriate plugin group directory. For skills that appear in craftwork-all, also copy there.
| Group | Plugin dir | Orchestrator | Skill count |
|---|---|---|---|
| reasoning | plugins/craftwork-reasoning/ |
reasoning-orchestrator |
22 |
| context-engineering | plugins/craftwork-context-engineering/ |
context-engineering-orchestrator |
12 |
| professional | plugins/craftwork-professional/ |
professional-orchestrator |
18 |
| all (bundle) | plugins/craftwork-all/ |
all 3 orchestrators | 52 |
Scoping rule: The reasoning-orchestrator in craftwork-reasoning only references reasoning skills. The version in craftwork-all references all 52 skills. This prevents orphan references when a user installs a single group.
The single source of truth for how skills compose. Contains:
- groups: which skills belong to which plugin group
- edges: directed
from → tocomposition links with conditions andcross_groupflags - chains: named canonical sequences (e.g.,
context-engineering-lifecycle) - parallel_sets: skills that can run concurrently
After any change to routing.yaml, run: bash scripts/validate-routing.sh
This checks: skills exist on disk, edges point to real skills, cross-group edges are marked, chains reference valid skills.
- Create
skills/{skill-name}/SKILL.mdwith frontmatter (name,description) - Create
plugins/craftwork-{group}/skills/{skill-name}/SKILL.md(copy) - Create
plugins/craftwork-all/skills/{skill-name}/SKILL.md(copy) - Add the skill to the appropriate group in
routing.yaml - Add any composition edges to
routing.yaml(markcross_group: trueif it connects to a skill in another group) - Update the group's orchestrator SKILL.md with a routing entry for the new skill
- Update the
craftwork-allorchestrator if the skill should be routable from there - Run
bash scripts/validate-routing.sh— must pass - Run
bash scripts/bump-version.sh {group}— bumps the plugin version - Update
README.md: skill count, table entry
- Edit the canonical file at
skills/{skill-name}/SKILL.md - Copy to
plugins/craftwork-{group}/skills/{skill-name}/SKILL.md - Copy to
plugins/craftwork-all/skills/{skill-name}/SKILL.md - If composition relationships changed, update
routing.yamland the relevant orchestrator(s) - Run
bash scripts/validate-routing.sh - Run
bash scripts/bump-version.sh {group}— bumps the version for the changed group (andall)
Orchestrators live at skills/{name}-orchestrator/SKILL.md (canonical) and are copied to plugin dirs. The craftwork-reasoning orchestrator has a scoped version (only reasoning skills) in its plugin dir and a full version in craftwork-all.
When editing the reasoning-orchestrator:
- Edit
skills/reasoning-orchestrator/SKILL.md(full version, goes to craftwork-all) - Edit
plugins/craftwork-reasoning/skills/reasoning-orchestrator/SKILL.mdseparately (scoped version) - These are NOT identical — the scoped version omits cross-group references
Plugin versions in marketplace.json use semver. The bump-version.sh script handles this:
bash scripts/bump-version.sh reasoning— bumpscraftwork-reasoning+craftwork-allbash scripts/bump-version.sh context-engineering— bumpscraftwork-context-engineering+craftwork-allbash scripts/bump-version.sh professional— bumpscraftwork-professional+craftwork-allbash scripts/bump-version.sh all— bumps all 4 plugins- Default bump is patch. Pass
minorormajoras second arg:bash scripts/bump-version.sh reasoning minor
- Skill changes:
Add/Update/Remove {skill-name} skill - Orchestrator changes:
Update {group} orchestrator routing - Routing changes:
Update routing.yaml: {what changed} - Infrastructure:
Update {script/config}: {what changed}
- Never reference a skill from another group in a group-scoped orchestrator. The user may only have that one group installed.
- Cross-group edges in routing.yaml must have
cross_group: true. The validator catches this. - Skill counts in README.md and marketplace.json must match the actual directory counts. Verify after adding/removing skills.
- The reasoning-orchestrator exists in two forms: full (craftwork-all) and scoped (craftwork-reasoning). They must be edited separately.