5.1 KiB
5.1 KiB
Proposal: add-os-adr-plugin
Why
~43% of the user's projects carry ADR-like content in 5+ mutually-incompatible shapes; the rest
have none, and no project uses ADR tooling. Because AI agents (not just the user) work across
every project, decision records must be discoverable and writable consistently by an agent
that has never seen a given repo — and cc-os's own 19-ADR/601-line monolithic file is already
near the size where research says monolithic logs stop working. The requirements are locked
(docs/adr-system/04-plugin-requirements.md) and the PRD is written
(docs/adr-system/05-plugin-prd.md); this change builds the plugin.
What Changes
- New global Claude Code plugin
os-adratcc-os/plugins/os-adr/, following the established cc-os plugin conventions:os-prefix, verb-first skills, nocommands/dispatcher, symlink into~/.claude/plugins/, registered in thelocal-pluginsmarketplace manifest (the three-place rename/registration procedure in CLAUDE.md). - Phase 1 — authoring: customized-Nygard template (Status/Context/Decision/Consequences +
Alternatives rejected; frontmatter with
supersedes/superseded-by,affected-paths/affected-components,date, sequential ID),docs/adr/NNNN-title.mdone-file-per-decision convention, mechanically-maintained index file, and anewskill that writes a correctly templated + indexed ADR in one invocation. No LLM in the mechanical path. - Phase 2 — SessionStart hook: deterministic existence check for
docs/adr/+ index. Present → near-zero-token context note; absent → suggest setup, with a per-project suppression flag so a deliberately ADR-less project doesn't re-nag (same shape asos-doc-hygienesnooze state). - Phase 3 — non-destructive migration: a
migrateskill converting existing ADR content of any surveyed shape into the new template alongside (never replacing) the old system; heuristic fill for structurally unambiguous fields, LLM fill only for interpretive fields, one consistent uncertainty-flagging mechanism (migration_confidencefrontmatter + a migration report file); deletion of the old system only as an explicit, separate user-approved step. Piloted on 2–3 real projects with an uncertain-flag-rate gate before wider rollout. - Phase 4 — retrieval: deterministic-first layering — path/component frontmatter match →
status filter (Accepted by default) → Graphify graph traversal (reusing
os-vaultinfrastructure) → AI judgment only over the already-narrowed candidate set. Exposed as a query surface callable mid-task, not just at SessionStart. - Implementation style: OO per Sandi Metz principles; Ruby-preferred core with Python acceptable for hook entry points, decided per-component (thin hook scripts wrapping an OO core).
- Held-out eval scenarios (write-trigger, retrieval) are sketched as part of this change so
the plugin surface isn't missing what the eval needs — but the evaluation itself stays a
separate later stage (locked sequencing in
04-plugin-requirements.md).
Capabilities
New Capabilities
adr-authoring: the ADR template,docs/adr/NNNN-title.md+ index location convention, and the one-invocation new-ADR generator skill with mechanical index maintenance.adr-session-awareness: the deterministic SessionStart existence-check hook — minimal context injection when the ADR system exists, setup suggestion with per-project suppression when it doesn't.adr-migration: non-destructive conversion of existing ADR content (all surveyed shapes plus a fallback) into the new template, with the mechanical/LLM field-mapping boundary, single uncertainty-flagging mechanism, and pilot gate.adr-retrieval: the deterministic-first retrieval stack (frontmatter path match → status filter → Graphify traversal → narrowed AI judgment) exposed as a mid-task query surface.adr-plugin-packaging: plugin structure, naming, marketplace registration, and install procedure per cc-os conventions (os-prefix, verb-first skills, symlink +local-pluginsmanifest +settings.jsonenablement).
Modified Capabilities
Impact
- New code:
cc-os/plugins/os-adr/(hooks, skills, OO core, template assets, tests/fixtures). - Host config:
~/.claude/plugins/os-adrsymlink,~/.claude/plugins/.claude-plugin/marketplace.jsonentry,settings.jsonenabledPlugins(and hook wiring if hooks are registered by absolute path like os-vault, or via pluginhooks.jsonlike os-doc-hygiene — decided in design). - Reuses: Graphify /
os-vaultgraph infrastructure for the retrieval layer;os-doc-hygienepatterns for deterministic SessionStart reminders and snooze state. - Target projects (pilot, later phases): viking-warrior-training-log, delta-refinery, llf-schema; cc-os itself is retrofitted only after the pilot, per the locked rollout order.
- Out of scope: per-project template variants, multi-editor governance, enforceable-constraints mirroring, the unprompted-behavior evaluation itself, and retrofitting cc-os's ADR file.