Every SKILL.md in this repo is a skill. The one axis that splits them is invocation — who can reach it:
- User-invoked — reachable only by the human typing its name. Set
disable-model-invocation: truein the frontmatter. Thedescriptionis human-facing: a one-line summary read by a person browsing slash-commands. Strip trigger lists ("Use when the user says…"). - Model-invoked — reachable by model or user. The default: omit
disable-model-invocation. Thedescriptionis model-facing and keeps rich trigger phrasing ("Use when the user wants…, mentions…, asks for…") so auto-invocation fires. The test for whether a skill should stay model-invoked: could the model usefully reach for this autonomously? (Reuse is the reason to extract a skill, not the test.)
Because a user-invoked skill has no description, nothing but the human can reach it — no other skill can fire it. So a user-invoked skill may invoke model-invoked skills, but it can never reach another user-invoked skill.
Bucket README.mds and the top-level README.md group entries into User-invoked and Model-invoked.
Dependencies are expressed as /skill-style prose invocation ("Run the /grilling skill"), not deep ../other-skill/FILE.md cross-references. Shared reference docs live inside the skill that owns them; other skills reach that material by invoking the skill, not by linking across folders.
Merely reading CONTEXT.md for vocabulary is a one-line prose pointer, not the domain-modeling skill. Only the active build/sharpen discipline (challenge terms, edge-case scenarios, write ADRs, update CONTEXT.md inline) is domain-modeling.