type: adr id: 0042-skill-carrier-and-standalone-conditioning status: accepted created: 2026-06-03 updated: 2026-06-03 supersedes: superseded_by:
ADR-0042: Skills carry as SKILL.md, and conditioning ships as many standalone, surgically-activated skills
Refined by ADR-0051. The
SKILL.mdcarrier + surgical activation are unchanged, but the catalogue splits by role: the starter kit ships the 20 authoring skills; the 17 code-implementation skills (per-kind implement guides, code personas,implement-and-verify) aredocs/library/code-skills/reference, not bundled. The 13-persona closed set is intact (6 authoring + 7 code).
Context
The kernel's procedural conditioning layer shipped as eight files named GUIDE.md under starter-kit/.agents/skills/. Four problems compounded:
-
The carrier filename is not the one agent tools discover. The Open Agent Skills convention and the agent CLIs that load skills discover and activate a
SKILL.mdby itsname+descriptionfrontmatter. The framework's own activation evidence [ACTIVATION-BLOG] treats theSKILL.mddescriptionas the most load-bearing line — the field an agent scans to decide whether to pull a skill into context. A file namedGUIDE.mdcarries the same skill-shaped frontmatter but is not discovered as a skill, so the kernel's pass guides silently opted out of the "load what the task names / description-match fallback" activation path (§26.4, 0037). The build-source layout never specified the filename;GUIDE.mdwas a generation-time choice that leaked the "pass guide, not standalone skill" relabeling (0036) into the filename, where it breaks interoperability. -
One implement guide bundled nine task kinds under one broad description — the "Everything Skill" anti-pattern [ACTIVATION-BLOG]: a description broad enough to cover all nine implementation kinds is too broad to activate surgically, and an agent loading it carries all nine kinds' procedures.
-
Only one of the thirteen heuristic profiles shipped as a loadable file (the Skeptic, inlined in the review guide). The other twelve stances existed in the model but no agent could load them.
-
The
authorpass shipped no guide at all — nothing taught an agent how to author a*.mdspec, an audit, a research doc, or a bug-report the corpus way (SOL blocks, the artifact contracts, the epistemic stances).
The authoring research is explicit that each unit of conditioning should be a self-contained, surgically-described SKILL.md so only the one the task needs loads — bundling forces an agent to read all of them to find the relevant one ([SKILLSPEC]: one self-contained skill per folder, only the one the task names loads).
Decision
-
The carrier file for every pass guide, heuristic profile, and cross-cutting fragment is
SKILL.md(renamed fromGUIDE.md). It is discoverable and activatable by the Open Agent Skills convention. The "pass guide" / "profile" identity is preserved in the body prose and atype:frontmatter field; the rename is to the filename only. -
Conditioning ships as many standalone, surgically-
description-activated skills, not a few bundled guides. Specifically: one skill per implementationtask_kind(thewrite-*set), one skill per authored artifact (write-spec/write-audit/write-research/write-bug-report, and theprd/rfcauthoring skills), and all thirteen heuristic profiles as standalone files. Each carries a tightdescription(anALWAYS apply when… / Skip when…form) so it activates only for the task kinds it fits. -
The pass × profile routing is unchanged (0029, 0036). This is a carrier/packaging decision — 0036 already holds that a profile's "carrier is an implementation detail." A task still names a pass and MAY name the profile and skill it activates; description-matching remains the launcher-less fallback (0037).
-
Every skill stays self-contained (0016), lazily loaded (0017), and SOFT control that owns no semantics (§26.1): it cites SOL/IR, the artifact contracts, the
docs/reference/templates, and thedocs/research/sources.mdbibliography, but defines none of them.
This record refines, and does not supersede, ADRs 0016, 0017, 0019, 0029, 0036, and 0037.
Alternatives considered
| Alternative | Why rejected |
|---|---|
Keep GUIDE.md | Not the filename agent tools discover/activate; opts the kernel's own guides out of the activation mechanism its research calls load-bearing. |
| Keep one implement guide with nine branches | The "Everything Skill" anti-pattern: one broad description can't activate surgically, and the agent carries all nine kinds at once. |
| Keep profiles inlined in pass guides / ship only a few | An agent can't load a stance that has no file; bundling forces reading all stances to find one. Standalone + surgical descriptions cost less context, not more. |
Leave the author pass guide-less | Leaves agents with no conditioning for authoring the corpus way — the highest-leverage gap. |
Consequences
Positive
- Pass guides, profiles, and the per-kind/author skills are discoverable and activate surgically by description; an agent loads only what the task needs.
- The
authorpass gains real conditioning; all thirteen stances become loadable; per-kind implement depth is restored without reintroducing the persona×task-type routing matrix 0036 removed.
Negative
- The shipped skill count grows substantially (~37 files —
pass-improve-specandpass-lower-specwere added later so all nine passes have a guide; see 0048's Update). This is acceptable because the ~15/25 practitioner ceiling concerns broad descriptions causing mis-activation, not file count; surgical descriptions + name-based loading keep per-task context small.
Neutral / tradeoffs
- The framework statements that "five stdlib pass guides ship in v0.1" are replaced by the larger shipped set; the flow-graph, conformance manifest, and the
docs/library/pass-guides.mdcatalogue are updated. The frozen build-source spec is not re-synced, so its stdlib-guide count intentionally lags.
Status
Accepted (v0.1).
Affected obligations / constraints
- Adds: the
SKILL.mdcarrier contract; the standalone per-task_kind, per-artifact, and per-profile skill set; surgical-descriptionactivation as the shipped norm. - Modifies: the carrier filename (
GUIDE.md→SKILL.md) and the shipped-skill inventory (the "five stdlib pass guides" packaging). - Refines: 0016, 0017, 0019, 0029, 0036, 0037.
Ledger note (2026-06-11): refined by ADR-0064; per-kind routing clauses partially superseded by ADR-0068.
Ready to run the loop on your own repo? Get started — copy the kit and write your first spec.