Skip to content
This repository was archived by the owner on May 26, 2026. It is now read-only.
This repository was archived by the owner on May 26, 2026. It is now read-only.

Narrow plugin scope — extract engineering-workflow skills from cairn-notes #94

Description

@SnowboardTechie

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

  • Coupling audit completed (single PR or comment on this issue listing every cross-skill reference and where it lands post-extraction).
  • Decision recorded on each borderline (issue-create, find-skills) — extract or keep, with rationale.
  • Per-skill extraction PRs merged for each in-scope skill (six PRs, or fewer if grouping makes sense — e.g., the two dependency-* skills together).
  • impl-reviewer and ticket-analyst spokes moved with their callers; no orphaned spoke files in plugins/cairn-notes/agents/.
  • AGENTS.md updated — Capture Triggers table, spoke roster, and any cross-skill references no longer pointing at extracted skills.
  • plugins/cairn-notes/.claude-plugin/plugin.json description rewritten to reflect the capture-first scope.
  • README opening paragraph rewritten to match.
  • CHANGELOG entries land per PR; final release PR bumps plugin.json to 0.7.0 (or appropriate version).

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestepicLarge body of work tracked as parent issue with sub-issuesreframing-2026Touched by the capture-first reframing + rename to cairn-notes. See tracking issue.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions