Run plan
Execute an APPROVED plan.md (the A3 plan-artifact at .forsvn/runs/<slug>/plan.md) step by step — auto-advance the non-publish steps within the governor envelope, narrate each applied play, and STOP hard at every publish / spend / irreversible gate, never publishing. Use to run a plan a human already approved. Not for building the plan (that's /forsvn's multi-step planner), a channel launch (run-launch), or a generic produce-and-measure loop (run-pipeline).From its SKILL.md
npx -y skills add hungv47/meta-skills --skill run-planAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.3 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Run Plan — Approved-Plan Executor
Meta process skill. Walks an approved plan.md, auto-advancing only the non-publish steps within the A6 governor envelope and stopping hard at every publish gate. Orchestrate, don't fuse; never auto-publish, never auto-ratify, never run an unapproved plan.
Core question: "Did every non-publish step advance legibly within the envelope, and did the run STOP — publishing nothing — at the first publish gate or governor limit?"
The executor loop, the stricter-gate rule, the governor config, the worked example:
run-plan-spec.md[SPEC]. Plan schema + writer:bin/plan.ts. Governor:bin/lib/governor.ts.
Critical Gates
- Approval first — refuse otherwise. Read
.forsvn/runs/<slug>/plan.md. Ifstatus != approved, STOP and report it (proposed→ a human must approve before step 1). Never run, never self-approve. - Publish gate is absolute. A step resolved to
publishSTOPS the run unconditionally — hand to the human, publish nothing, do not advance. Hard-coded ingate_class; never downgradable by.forsvn/config.json. - Stricter gate wins. Resolve each step's gate from the live capability
gate_class(the capability index, built bybin/build-capability-index.ts) AND the plan row'sgate. If either sayspublish, it's a publish stop. A missing/unknown gate is treated asreview(neverauto). - Governor envelope (A6). Before each step call
bun bin/lib/governor.ts check …. On a stop (max-steps/checkpoint/domain-jump/budget) STOP and narrate the reason. The governor only tightens — it cannot relax a gate. - Legible + never auto-ratify. Every advance narrates
▸ Step n/N …; every leaf artifact staysdecision_state: pending. No black-box run; no auto-acceptance.
Quality Gate — 5 dimensions
Pre-exit self-check — all 5 must hold (the executor's critic):
- Approval honored — the run only proceeded because
status: approved; an unapproved plan was refused. - Publish-stop honored — every
publishstep stopped the run; nothing was published or advanced past it. - Envelope honored — each advanced step passed the governor check; a governor stop was narrated with its reason.
- Narrated — every advanced step printed
▸ Step n/N /<skill> — <play>; every stop printed■ …. - No auto-ratify — each produced artifact is
decision_state: pending; the executor approved nothing.
Before Starting
Read the plan: bun bin/plan.ts show <slug>. Refuse unless status: approved. Resume is native — the Current step pointer + the steps table's status column say exactly what ran and what's next; no chat history needed. Session profile: _shared/execution-policy.md. Mode: _shared/mode-resolver.md — --fast skips narration verbosity, never a gate or the publish stop.
Dispatch
Per ready step (all depends_on done), in depends_on order:
- Resolve the gate — stricter of the plan row
gateand the capability's livegate_class(defaultreview, neverauto). - Check the envelope —
bun bin/lib/governor.ts check --step-index <done-count> --running-domain <chain-domain> --next-domain <step-domain> [--next-skill <id> --cost-so-far <usd>]. Exit2→ STOP, narrate the reason. - If
auto/reviewand the governor proceeds — dispatch the step's leaf skill (it runs its own agents + critic), leave the artifactdecision_state: pending, narrate▸ Step n/N /<skill> — <applied play / why>, thenbun bin/plan.ts set-status <slug> <stepId> doneandbun bin/plan.ts advance <slug>. - If
publish— narrate■ Step n/N /<skill> — publish gate: human required (nothing published).and STOP. Do not dispatch, advance, or publish.
Continue until a publish gate, a governor stop, or no ready step remains. The executor owns sequencing + gate enforcement only — each step's work is the leaf's (orchestrate, don't fuse).
Chain Position
Deference: build/propose the plan → /forsvn multi-step planner (A3); a single channel launch → run-launch; a generic produce-and-measure loop → run-pipeline; approve the plan → the human, in the review surface. run-plan runs what they approved; it never plans, launches, or approves.
Anti-Patterns
anti-patterns.md [ANTI-PATTERN] — run an unapproved plan · publish or advance past a publish gate · let .forsvn/config.json downgrade a gate · auto-ratify an artifact · black-box a step (no ▸ line) · fuse a step's work instead of dispatching its leaf · ignore a governor stop.
Durable Rules (protected)
<!-- SLOW_UPDATE_START --> <!-- No pinned rules yet (populate via the slow-update workflow — references/slow-update-fence.md). --> <!-- SLOW_UPDATE_END -->Completion Status
- DONE — the plan ran to a clean terminal: every ready non-publish step advanced + narrated within the envelope, and the run stopped at a publish gate, a governor limit, or plan completion.
- DONE_WITH_CONCERNS — a leaf returned
DONE_WITH_CONCERNS, or a step degraded; the run stopped legibly but a step needs attention. - NEEDS_CONTEXT — no plan at
.forsvn/runs/<slug>/, or the slug is ambiguous. - BLOCKED —
status != approved(a human must approve first), or a leafGUARD_FAIL.
Worked Example
A 3-step plan that auto-advances research → copy, then stops at the publish gate — narration + gate resolution visible: run-plan-spec.md § Worked example.
What ships with it: 5 files
27.7 KB alongside SKILL.md
references/
- anti-patterns.md1.5 KB
- run-plan-spec.md5.4 KB
- _shared/execution-policy.md7.0 KB
- _shared/mode-resolver.md11.0 KB
- routing.yaml2.7 KB