feat(skills) Share cross-repo workflow skills through a recipe-workflow plugin #14
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "shared-workflow-plugin"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Shares the workflow skills that more than one repo needs through a Claude Code plugin marketplace hosted in this repo. Decision and alternatives:
docs/adr/2026-09-26-shared-workflow-plugin.md. Please read the ADR first.What changes
.claude-plugin/marketplace.jsonpublishesplugins/recipe-workflow/..claude/settings.jsonregisters it by the Forgejo git URL and enablesrecipe-workflow@recipe-platform.pr-feedback: moved; references updated.check-workspace: new; replacescheck-siblingshere andcheck-platformin both siblings.adr: new; owns the template (moved fromdocs/adr/template.md), file naming and the supersede procedure, for all threedocs/adr/directories.implement-plan: new; the implementer procedure. Ends with an open PR (--no-prstops before it) and counts every verification the repo'sCLAUDE.mdrequires.review-implementation: new; the reviewer procedure. Read-only, and checks against the repo's ownCLAUDE.mdinstead of a copied checklist.implement-featureandreview-featurenow spawn one sub-agent per sibling that runs those skills.plan-featureandarchitect.mdpoint to theadrskill.CLAUDE.md,README.md,ONBOARDING.md(new install step for the plugin).Verification
claude plugin validatepasses for the marketplace and the plugin. The only warning is the missingversion, left out on purpose (see below).recipe-backendwith--plugin-dir plugins/recipe-workflowspawned a general-purpose sub-agent. It listed all fiverecipe-workflow:skills (the review skill was then still calledreview-plan) and had the backendCLAUDE.mdloaded.main. This can only be tested after merge.Merge order
main)Open points
versioninplugin.json(verified against the plugin docs): with no version set, Claude Code uses the commit SHA as the version, so every merged change counts as an update. A pinned version would keep users on the cached copy until it's bumped. Auto-update is off by default for non-Anthropic marketplaces, soautoUpdate: trueis now set in all three repos' settings.ONBOARDING.mddescribes the update path.build-contract-for-nodeoverlap: resolved.mainis merged in. Its "Superseding an ADR" section inCLAUDE.mdis now the### ADRssection: a pointer to theadrskill that keeps the supersede wording and the Why: line.Addition: an ADR for every skill and agent
New rule in
CLAUDE.md(### ADRs): creating or changing a skill or agent requires an ADR explaining why it is built the way it is, written withrecipe-workflow:adr.<skill-dir>/adr/.claude/agent-adr/<agent>/. Claude Code loads every.mdin.claude/agents/as an agent, so they can't sit next to the agent file.The
adrskill knows both locations. Initial ADRs are included for:plan-feature,implement-featureandreview-featurepoandarchitectagentsThe same rule is added to recipe-backend #17 and recipe-app #40; #40 also adds an ADR for
verify-ui.Addition: workflow howto
docs/howto-feature-workflow.mdwalks through the feature pipeline step by step: which agent or skill runs in each step, where to start it (platform or sibling), what it produces, and what you need to do at each gate. It's linked fromREADME.mdandONBOARDING.md.It also records a known gap: no step in the pipeline commits the spec, the plans or the repo ADRs.
Addition: review feedback (review 38)
architectagent fills in a new "Affected Repos" section of the spec, and you approve it at GATE A.plan-feature,implement-featureandreview-featurespawn sub-agents only in affected repos, using one prompt per role with the repo as a parameter.implement-plannow opens its PR by default.implement-plancounts every verification the repo'sCLAUDE.mdrequires (e.g.verify-ui) and reports what it couldn't run.review-planis nowreview-implementation.adrskill says so.🤖 Generated with Claude Code
@ -28,3 +33,3 @@### Step 2 — Spawn implementers (parallel)**Backend implementer** (working directory: `../recipe-backend`):**Backend implementer** (working directory: `../recipe-backend`) and **frontendOnly backend implementer is left.... If I understand this skill correctly, it's the orchestrator for implementation inf frontend and backend. If that is correct, it should check for plans in both repos. If both exist, it can spawn implementers, if theres only a single plan in one of the repos, it needs to ask the user, if it's correct that there is no backend/frontend work to do (or either be able to deduce it from the feature spec, but I'm not sure, that this is possible. If no plan exists in either repo, it needs to ask the user to plan first.
@ -0,0 +6,4 @@## ContextAfter plans are approved at GATE C, both repos are implemented independently against thesame contract. The implementer procedure used to be inlined here; it moved into the sharedNo history please. That's unecessary. just the why and why is it done like this plus alternatives
@ -59,3 +58,1 @@Never edit an existing ADR — if a prior decision is being superseded, write a new ADRthat names the one it replaces, then add a single "Superseded by: <path>" line to thetop of the old ADR as the only permitted post-acceptance change.If a new decision is required: write it with the recipe-workflow:adr skill, whichthis skill also only references the backend. Will this work as intended?
@ -0,0 +19,4 @@/recipe-workflow:implement-plan <NNN>-<slug> [--open-pr]````--open-pr` is the go-ahead to push and open the PR at the end (Step 6). Without it, stopI'd like for this to be the default. I like work to end in a pr that we can discuss. Only stop if you're told so.
@ -0,0 +55,4 @@## Step 4 — VerifySuccess is **the full build and the full test suite passing** — not a clean compile. AWill this work with the frontend, where the UI needs to be verified as well? It should due to the frontend's claude.md, right?
@ -0,0 +1,69 @@---name: review-planThe name is a bit confusing. For me review-plan would just review the plan. "If i'd implement it, would all adrs be fullfilled, all ACs covered" For me this is review-plan-implementation
Addressed in
c6b2e6a:implement-planends with an open PR;--no-pror an instruction to stop ends after the report.--open-pris gone.CLAUDE.mdbefore, but Step 4 read as "build + tests only". It now counts every verification the repo'sCLAUDE.mdrequires, e.g.verify-ui. A verification that can't run is reported as not verified instead of being counted as done. That is the usual case when started from the platform: the sub-agent lacks recipe-app'sverify-uiskill and browser setup, and the feature's backend must be running.review-implementationtreats a missing verification as a finding, and the howto says to run it in a recipe-app session.review-implementation, here and in recipe-backend #17 and recipe-app #40.adrskill now requires this, and the verify-ui ADR in #40 is updated too.🤖 Generated with Claude Code