Skip to content

ADR 0087: Prefix the bundled skills with discern- and expand the set to nine

Amendments.

  • Vocabulary: current spellings are standards (formerly ratchets), accept (formerly graduate), and Project Script (formerly project Recipe); the decision and reasoning are unchanged.
  • ADR 0173 — the bundled set: ADR 0173 later trimmed the bundled set — its merges, retirements, and renames are recorded there — and later records grew it again through the ceiling it set; templates/skills/ and the skills-count standard hold the live set. The discern- prefix and the naming convention decided here stand.

Status: accepted

Context

§

The bundled skills materialize into each agent's skills directory alongside skills from every other source — the user's own, other tools', a vendor's — with nothing marking where they came from. A user watching fix-a-bug-class run had no way to see discern behind it, and a user authoring a skill could collide with a bundled name by accident. Meanwhile the set itself was due to grow: the two skills that had proven the bar (fix-a-bug-class, delegate-task) are general working disciplines, and a curation pass identified five more playbooks worth shipping — plus two naming problems ("class" in fix-a-bug-class parses as an object-oriented class before it parses as a category; delegate-task had no answer for parallel fan-out beyond an appendix section).

ADR 0046 set the quality bar that constrains any expansion: a bundled skill must be a genuine multi-step judgement playbook, never a wrapper around a deterministic verb.

Decision

§

Every bundled skill is named discern-<imperative verb>-<object>, and the set grows from four to nine.

The naming convention: an imperative verb plus a concrete object, articles where they read naturally — a name you could say aloud to a colleague (discern-cure-a-bug, discern-survey-the-fleet). The discern- prefix is the one namespace that works across every provider (no cross-vendor plugin namespace exists): it attributes the skill at the moment it runs, groups the bundled set in any alphabetical picker, and removes by construction the collision class where an authored skill accidentally shares a bundled name. Each description ends with a "Bundled with discern." provenance tail for skill pickers that show descriptions.

Renames:

  • write-adrdiscern-write-adr; document-subsystemdiscern-document-subsystem (prefix only).
  • fix-a-bug-classdiscern-cure-a-bug — "cure", as opposed to symptomatic relief, states the same promise (every instance, permanently, behind a guard) without the object-oriented misreading.
  • delegate-taskdiscern-delegate-work — absorbs parallel fan-out as a first-class "shape the handoff" step (one brief, a sub-agent fan-out, parallel worktrees on real seams, or staged briefs), per ADR 0046's one-real-skill-over-two-thin-ones doctrine.

New skills:

  • discern-diagnose-a-bug — prove a bug's cause (reproduction, falsifying hypothesis loop, history interrogation) before any fix; hands the proven class to discern-cure-a-bug.
  • discern-standard-a-metric — the judgement around the standard feature: defendable metrics, rates over raw counts, limits at today's value, the never-loosen discipline, and the retire-at-zero end state.
  • discern-outlaw-a-pattern — codebase-wide pattern elimination as legislation: detector, falling standard (a one-way door, not gradualism — removal goes as fast as budget allows), permanent gate rule at zero.
  • discern-teach-the-project — route a session's lesson to exactly one of the project's knowledge surfaces (guidance line, authored skill, Project Script, doc, ADR). The built-in skills guidance gains one ambient line telling agents to offer this at natural pauses — the first bundled-skill mention in the always-on guidance.
  • discern-survey-the-fleet — read-only reconnaissance across all worktrees: per-effort intent, classification, cross-worktree file-collision detection, and recommendations that stay the owner's calls. A judgement layer over discern status's fleet rows, not a wrapper of the verb.

Consequences

§
  • Materialization prunes the old names from agent skills directories via the ownership manifest — renames self-heal on the next refresh/upgrade, no migration step.
  • An authored skill that shadowed a bundled one under an old name (./skills/write-adr) stops shadowing: it stands alone while the renamed built-in materializes beside it. Accepted — shadowing under the new name restores the override, and the pre-launch install base is small.
  • Historical ADRs keep the old names as a record; ADR 0049 carries a rename note. The install surface tables the full set; other docs point at templates/skills/ rather than hand-enumerating names.
  • Nine descriptions now ride in every agent's context. Accepted for this size; a config-selected catalog (packs, or a [skills] selection list) is the escape hatch if the set grows further, and is deliberately not designed here.

Alternatives considered

§
  • No prefix (the precedent of vendors shipping their own bundled skills without a prefix). Rejected: a vendor's skills are first-party defaults in its own product; discern's are a guest in someone else's agent, across several vendors at once — the guest wears the name tag, and the collision class disappears with it.
  • Dropping the prefix on skills eject (an ejected copy becomes yours, so it sheds the badge). Rejected: override-by-name is the customization mechanism — an ejected copy renamed to drop the prefix would stop shadowing the built-in, and both would surface. Eject keeps the name.
  • A discern: namespace separator rather than a hyphen. Rejected: skill names must stay valid directory names and slash-command tokens everywhere; the hyphen is the portable spelling.
choose openEsc close