plot-deliver
npx skills add https://github.com/eins78/skills --skill plot-deliver
Agent 安装分布
Skill 文档
Plot: Deliver Plan
Verify all implementation is done, then deliver the plan. This workflow can be run manually (using git and forge CLI), by an AI agent interpreting this skill, or via a workflow script (once available).
For docs/infra work, this is the end â live when merged. For features/bugs, /plot-release follows when the team is ready to cut a versioned release.
Input: $ARGUMENTS is the <slug> of a plan on main.
Example: /plot-deliver sse-backpressure
Setup
Add a ## Plot Config section to the adopting project’s CLAUDE.md:
## Plot Config
- **Project board:** <your-project-name> (#<number>) <!-- optional, for `gh pr edit --add-project` -->
- **Branch prefixes:** idea/, feature/, bug/, docs/, infra/
- **Plan directory:** docs/plans/
- **Active index:** docs/plans/active/
- **Delivered index:** docs/plans/delivered/
Model Guidance
| Steps | Min. Tier | Notes |
|---|---|---|
| 1-4. Parse through Verify PRs | Small | Git/gh commands, helper script, state checks |
| 5. Verify Completeness | Frontier (orchestrator) + Small (subagents) | Orchestrator extracts deliverables and consolidates; small subagents gather PR diffs in parallel |
| 6. Release Note Check | Small | File existence checks |
| 7-8. Deliver and Summary | Small | File ops, git commands, template |
Step 5 is the prime example of subagent delegation: a frontier orchestrator handles the judgment (extracting deliverables, consolidating Done/Partial/Missing), while small subagents handle the data collection (running gh pr diff, reading PR metadata) in parallel. Without subagents, the frontier model does everything sequentially.
1. Parse Input
If $ARGUMENTS is empty or missing:
- List active plans:
ls docs/plans/active/ 2>/dev/null - If exactly one exists, propose: “Found plan
<slug>. Deliver it?” - If multiple exist, list them and ask which one to deliver
- If none exist, explain: “No active plans found in
docs/plans/active/.”
Extract slug from $ARGUMENTS (trimmed, lowercase, hyphens only).
2. Verify Plan Exists
Check that an active plan exists for this slug: ls docs/plans/active/<slug>.md on main.
- If not in
active/, checkdocs/plans/delivered/<slug>.mdâ if found there: “Already delivered.” - Also check the Phase field in the plan file â if already
Delivered, stop. - If not found anywhere: “No plan found for
<slug>.”
Resolve the symlink to find the actual plan file path (e.g., docs/plans/YYYY-MM-DD-<slug>.md).
3. Read and Parse Plan
Read the plan file (resolved from the active/ symlink) and parse the ## Branches section for PR references. If the plan has a Sprint: <name> field in its Status section, extract it for the summary.
Expected format after /plot-approve:
- `feature/name` â description â #12
4. Verify All PRs Merged
Run the helper:
../plot/scripts/plot-impl-status.sh <slug>
Or for each PR number found in the Branches section:
gh pr view <number> --json state,isDraft --jq '{state: .state, isDraft: .isDraft}'
- If all are
MERGED: proceed to step 5 - If any are
OPEN:- If any open PRs have
isDraft: true, list them and rungh pr ready <number>to mark each one ready for review â this is part of the delivery flow, not optional - List all remaining open PRs and ask the user: “These PRs are still open. Merge them first, or deliver anyway?”
- If user declines, stop and list the unfinished PRs
- If any open PRs have
- If any are
CLOSED(not merged): warn â these need manual attention
5. Verify Plan Completeness
Model tiers for this step:
- Frontier (e.g., Opus): Full deliverable extraction, parallel PR diff review via subagents (small-model subagents gather diffs, frontier consolidates), Done/Partial/Missing checklist.
- Mid (e.g., Sonnet): Extract deliverables and check PR titles/descriptions (skip full diff review). Can delegate PR metadata collection to small subagents. Present a simplified checklist based on PR metadata rather than code changes. Ask user to verify.
- Small (e.g., Haiku): Skip entirely. Verify all PRs are merged (step 4), then ask: “All implementation PRs are merged. Ready to deliver this plan?” Human judgment is the final gate.
Compare what the plan promised against what was actually delivered.
-
Extract deliverables from the plan file. Look for actionable items in sections like
## Design,## Branches, or bulleted lists that describe what should be built. Number each deliverable for reference. -
Gather PR evidence using parallel subagents. Launch one Task agent per merged PR to review what was implemented:
- Each agent receives the PR number and the full list of deliverables.
- Each agent runs
gh pr diff <number>and reads the PR body viagh pr view <number> --json title,body,files. - Each agent returns: which deliverables (by number) are addressed by that PR, with a one-line summary of the evidence for each.
- Launch all PR agents in parallel since they are independent.
-
Consolidate results. Merge the per-PR reports into a single checklist. For each deliverable, mark it:
- Done â clear evidence in one or more PRs
- Partial â some work done but not fully matching the plan
- Missing â no evidence found in any PR
-
Present the checklist to the user and ask to confirm the plan is complete enough to deliver.
- If all items are done: “All deliverables verified. Proceed with delivery?”
- If any are partial/missing: list them and ask “Deliver anyway, or hold off?”
- If the user declines, stop â do not deliver.
6. Check for Release Note Entries
For feature and bug plans, check whether release note entries exist:
Discover release note tooling â check in this order, stop at first match:
- Changesets: Does
.changeset/config.jsonexist? If so, the project uses@changesets/cli. Check if.changeset/*.mdfiles (excluding README.md) exist on main. - Project rules: Read
CLAUDE.mdandAGENTS.mdfor release note instructions (e.g., custom scripts, specific commands). - Custom scripts: Check
package.jsonfor release-related scripts (e.g.,release,version,changelog).
If no tooling is found, skip this step.
If tooling was found but no release note entries exist for this plan’s work, warn the user: “No release note entries found for this feature. Consider adding one before releasing.”
This is a warning, not a blocker â proceed with delivery regardless.
Skip this step entirely for docs/infra plans (they don’t need release notes).
7. Deliver Plan
The plan file stays in place â only the symlink moves from active/ to delivered/.
git checkout main && git pull origin main
# Update Phase field in the plan file
# Change **Phase:** Approved â **Phase:** Delivered
# Add - **Delivered:** YYYY-MM-DD to the Status section
DELIVER_DATE=$(date -u +%Y-%m-%d)
# Move symlink from active/ to delivered/
git rm docs/plans/active/<slug>.md
ln -s ../YYYY-MM-DD-<slug>.md docs/plans/delivered/<slug>.md
git add docs/plans/delivered/<slug>.md docs/plans/YYYY-MM-DD-<slug>.md
git commit -m "plot: deliver <slug>"
git push
(Replace YYYY-MM-DD-<slug>.md with the actual date-prefixed filename from the resolved symlink.)
8. Summary
Print:
- Delivered:
<slug> - Plan file:
docs/plans/YYYY-MM-DD-<slug>.md(unchanged location) - Index: moved from
active/todelivered/ - All implementation PRs: merged
- If the plan has a Sprint field: show sprint progress (“N/M sprint items delivered”)
- Type reminder:
- If feature/bug: “Run
/plot-releasewhen ready to cut a versioned release.” - If docs/infra: “Live on main â no release needed.”
- If feature/bug: “Run