Problem / Motivation
v0.6.0 reframed cairn-notes around capture and storage (commits c5a0b7c, 6f16491, 02d11f3). The plugin's "north star" — per AGENTS.md Capture Triggers and the new /capture + /recall surfaces — is low-friction note capture and retrieval, not generalized engineering automation.
Several skills in plugins/cairn-notes/skills/ are inherited from earlier framings and don't pass the capture-first test ("does this skill produce or retrieve a vault artifact?"). They're useful skills, but they overstretch what the plugin is for, dilute the README/plugin description, and force every install of cairn-notes to ship engineering tooling a notes-only user doesn't need.
Notable self-tell: issue-work/SKILL.md frontmatter already says "Standalone — does not require any specific note system... writes state under ~/.claude/issue-work/ (not the notes vault)." The skill itself signals it doesn't belong.
Proposed behavior
Extract the engineering-workflow skills out of plugins/cairn-notes/skills/ and into plain skills (either standalone ~/.claude/skills/ skills or a sibling plugin under plugins/). The cairn-notes plugin retains only skills that produce or retrieve a vault artifact (capture/storage focus).
After extraction, the cairn-notes plugin skill list reads cleanly as a capture system:
capture, recall, cairn-notes (note types), obsidian, agent-workspace,
meeting-sync, session-review, workday-planning, weekly-planning
Spokes (scribe, archivist, pyre, forge, kindle, sage) stay — all support the capture/planning skills above.
Scope
In scope — extract
| Skill |
Why |
Notes |
dependency-review |
Pure dependency-PR review; no vault artifact |
Standalone candidate |
dependency-triage |
Pure dependency-PR triage; no vault artifact |
Standalone candidate |
pr-self-review |
Three-lens parallel PR review; no vault artifact |
impl-reviewer spoke leaves with it (partly — see issue-work) |
ship |
Push branch + open PR; git/PR workflow |
Standalone candidate |
issue-work |
Ticket → implementation; frontmatter self-declares standalone |
ticket-analyst spoke leaves with it; takes the remainder of impl-reviewer |
update-pr-description |
Edits a PR body; no vault artifact |
Standalone candidate |
Borderline — discuss before deciding
issue-create — produces a GitHub issue, not a vault note. But AGENTS.md L156 explicitly routes session-review's plugin-misbehavior signal through /issue-create. Extracting it forces session-review to call across the plugin boundary, which complicates the dependency graph. Options: (a) keep issue-create as a "capture-adjacent" skill on the grounds that it captures plugin-improvement signal; (b) extract it and have session-review shell out to the new home; (c) extract it and drop the plugin-misbehavior route from session-review entirely.
find-skills — meta/discovery skill for browsing skills.sh. Not capture, not storage; arguably belongs in a plugin-management plugin or as a standalone.
Out of scope — keep in cairn-notes
capture, recall, cairn-notes (note types), obsidian, agent-workspace, meeting-sync, session-review, workday-planning, weekly-planning. All produce or retrieve a vault artifact, or are required infrastructure for those that do.
Implementation hints
- Per-skill extraction PRs. Each extraction is a versionable change under
AGENTS.md Git & Commits rules and needs a CHANGELOG.md entry under ## [Unreleased]. Doing them as separate PRs keeps blast radius small and lets reverts target one skill at a time.
- Spoke migrations follow their primary caller.
ticket-analyst is only invoked by issue-work — leaves with it.
impl-reviewer is invoked by both pr-self-review and issue-work — moves with whichever extracts first; the second extraction depends on the first.
- Coupling audit (do this first). Grep for cross-skill references inside the candidates and the keepers:
grep -rln 'dependency-review\|dependency-triage\|pr-self-review\|ship\|issue-work\|update-pr-description' plugins/cairn-notes/
Known coupling: pr-self-review is invoked from issue-work Phase 4 (frontmatter), and issue-create references issue-work as "natural next step." Any reference that crosses the new boundary becomes a cross-plugin call — confirm those still resolve.
- Identity / config touchpoints. Candidates that read
~/.claude/cairn/identity.md or write to ~/.claude/cairn/ need to be checked — extracting them shouldn't strand them dependent on cairn-notes' identity bootstrap. Spot-check: issue-work writes under ~/.claude/issue-work/ (clean), but verify the others.
- Plugin description rewrite. After extraction, the cairn-notes plugin's
description field in .claude-plugin/plugin.json and the README opening should be rewritten to match the narrower scope. This is the user-visible payoff of the change.
- Release shape. Treat the full extraction as one minor bump (e.g.,
0.7.0) once all extractions land, not a major. The plugin's public surface narrows but doesn't break: removed skills will still exist, just at a different namespace.
Acceptance criteria
Open questions
- Where do the extracted skills live? Three plausible homes: (1) personal
~/.claude/skills/ standalone skills, (2) a new sibling plugin in plugins/ (e.g., plugins/eng-workflow/), (3) entirely separate repos. Each has different discoverability and dependency-management trade-offs.
- Should
issue-create extract with the engineering-workflow group, stay as capture-adjacent, or get its own borderline-resolution decision? (See Scope → Borderline.)
- Does
find-skills extract with this batch, or get filed as its own separate scope-narrowing issue?
- Is there appetite to also split
workday-planning / weekly-planning into a "planning" plugin? They do write notes to the vault, so they pass the capture test — but if the broader narrowing is "notes only, no orchestration," planning is the next ring out. Probably out of scope here, but worth naming so it doesn't surprise anyone later.
Problem / Motivation
v0.6.0 reframed cairn-notes around capture and storage (commits c5a0b7c, 6f16491, 02d11f3). The plugin's "north star" — per
AGENTS.mdCapture Triggers and the new/capture+/recallsurfaces — is low-friction note capture and retrieval, not generalized engineering automation.Several skills in
plugins/cairn-notes/skills/are inherited from earlier framings and don't pass the capture-first test ("does this skill produce or retrieve a vault artifact?"). They're useful skills, but they overstretch what the plugin is for, dilute the README/plugin description, and force every install of cairn-notes to ship engineering tooling a notes-only user doesn't need.Notable self-tell:
issue-work/SKILL.mdfrontmatter already says "Standalone — does not require any specific note system... writes state under~/.claude/issue-work/(not the notes vault)." The skill itself signals it doesn't belong.Proposed behavior
Extract the engineering-workflow skills out of
plugins/cairn-notes/skills/and into plain skills (either standalone~/.claude/skills/skills or a sibling plugin underplugins/). The cairn-notes plugin retains only skills that produce or retrieve a vault artifact (capture/storage focus).After extraction, the cairn-notes plugin skill list reads cleanly as a capture system:
Spokes (
scribe,archivist,pyre,forge,kindle,sage) stay — all support the capture/planning skills above.Scope
In scope — extract
dependency-reviewdependency-triagepr-self-reviewimpl-reviewerspoke leaves with it (partly — see issue-work)shipissue-workticket-analystspoke leaves with it; takes the remainder ofimpl-reviewerupdate-pr-descriptionBorderline — discuss before deciding
issue-create— produces a GitHub issue, not a vault note. ButAGENTS.mdL156 explicitly routes session-review's plugin-misbehavior signal through/issue-create. Extracting it forcessession-reviewto call across the plugin boundary, which complicates the dependency graph. Options: (a) keepissue-createas a "capture-adjacent" skill on the grounds that it captures plugin-improvement signal; (b) extract it and havesession-reviewshell out to the new home; (c) extract it and drop the plugin-misbehavior route fromsession-reviewentirely.find-skills— meta/discovery skill for browsing skills.sh. Not capture, not storage; arguably belongs in a plugin-management plugin or as a standalone.Out of scope — keep in cairn-notes
capture,recall,cairn-notes(note types),obsidian,agent-workspace,meeting-sync,session-review,workday-planning,weekly-planning. All produce or retrieve a vault artifact, or are required infrastructure for those that do.Implementation hints
AGENTS.mdGit & Commits rules and needs aCHANGELOG.mdentry under## [Unreleased]. Doing them as separate PRs keeps blast radius small and lets reverts target one skill at a time.ticket-analystis only invoked byissue-work— leaves with it.impl-revieweris invoked by bothpr-self-reviewandissue-work— moves with whichever extracts first; the second extraction depends on the first.pr-self-reviewis invoked fromissue-workPhase 4 (frontmatter), andissue-createreferencesissue-workas "natural next step." Any reference that crosses the new boundary becomes a cross-plugin call — confirm those still resolve.~/.claude/cairn/identity.mdor write to~/.claude/cairn/need to be checked — extracting them shouldn't strand them dependent on cairn-notes' identity bootstrap. Spot-check:issue-workwrites under~/.claude/issue-work/(clean), but verify the others.descriptionfield in.claude-plugin/plugin.jsonand the README opening should be rewritten to match the narrower scope. This is the user-visible payoff of the change.0.7.0) once all extractions land, not a major. The plugin's public surface narrows but doesn't break: removed skills will still exist, just at a different namespace.Acceptance criteria
issue-create,find-skills) — extract or keep, with rationale.dependency-*skills together).impl-reviewerandticket-analystspokes moved with their callers; no orphaned spoke files inplugins/cairn-notes/agents/.AGENTS.mdupdated — Capture Triggers table, spoke roster, and any cross-skill references no longer pointing at extracted skills.plugins/cairn-notes/.claude-plugin/plugin.jsondescriptionrewritten to reflect the capture-first scope.plugin.jsonto0.7.0(or appropriate version).Open questions
~/.claude/skills/standalone skills, (2) a new sibling plugin inplugins/(e.g.,plugins/eng-workflow/), (3) entirely separate repos. Each has different discoverability and dependency-management trade-offs.issue-createextract with the engineering-workflow group, stay as capture-adjacent, or get its own borderline-resolution decision? (See Scope → Borderline.)find-skillsextract with this batch, or get filed as its own separate scope-narrowing issue?workday-planning/weekly-planninginto a "planning" plugin? They do write notes to the vault, so they pass the capture test — but if the broader narrowing is "notes only, no orchestration," planning is the next ring out. Probably out of scope here, but worth naming so it doesn't surprise anyone later.