# Model-invoked vs user-invoked 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: true` in the frontmatter. The `description` is **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`. The `description` is **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 model-facing trigger, 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. The localized READMEs and the top-level `README.md` mark invocation in the fourth catalog column. ## Which skills are user-invoked, and why Default to model-invoked. A skill is user-invoked only when the model should never reach it on its own — either its trigger is a deliberate, human-decided action (commit, push, publish, deploy), or its mere presence in the model's reach would bias the agent. The twelve today: - `hate` — a demolition reflex always in reach biases the agent toward demolition. - `macrothink` — plural fresh reads are an opt-in perspective spend; convergence must not masquerade as automatic proof. - `feynman` — a challenge-every-decision reflex in reach biases toward chronic self-doubt. - `reorder` — reordering churns a listing; its logical order is an opinionated, deliberate call. - `dedash` — the human owns the exact prose scope. - `debloat` — how tight and what to cut is an opinionated, scope-dependent call the human owns; a compress reflex in reach would over-compress or strip intended richness. - `re0-git` — committing is human-decided; a commit-cleanup reflex in reach would bias toward committing. - `re0-release` — publishing a release is a deliberate, human-decided action. - `re0-merge` — reviewing and landing a contribution is a deliberate maintainer act a review reflex would bias toward merging. - `re0-upgrade` — it makes consequential local changes (reinstalling skill entries, writing a session-start hook into each agent's config). - `re0-plan` — it assumes the full paperthin package installed and pairs deliberately with `re0-release`, not a general-purpose reflex. - `prism` — plural lenses are an opt-in spend whose convergence must not pass as automatic proof. Two skills stay model-invoked against the grain: `autobahn` (the model should autonomously carve risk-adjacent scope before execution) and `modelchk` (advisory capability sizing should be available before the model spends a run). ## Dependencies between them Dependencies are expressed as **`/skill`-style prose invocation** ("Run the `/re0` 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. ## Passive vs active domain work Merely reading a local context file for vocabulary is a one-line prose pointer, not a skill invocation. Only active cleanup or verification work should name the relevant skill, such as `/re0` for a drifting artifact or `/ssotize` for a scattered fact.