Implementing a plan
Execute the plan the user names, one step at a time. The plan is the specification. The repository's instructions own
branching, commits, pushes, and merges; this skill never merges.
A change plan is one step. Its frontmatter status is the step status. Checkpoint records the last completed task, its
evidence, and the branch when one exists. Next names the current task and nothing else. Blocked records a deviation and
its evidence. Amendments records approved deviations with their dates. While a step with its own change plan is active,
that plan's frontmatter is authoritative and the arc row is updated from it at the step boundary.
A change plan starts in draft; treat that as its pending state. For a change plan, references below to Notes mean
Blocked for a deviation and Amendments for an approved change. Its Verification table supplies the Completion
verification rows.
Read
In a Specful repository, apply the development workflow:
start at docs/specs/index.md, follow scope indexes and relevant Requirements, Designs and ADRs, then check their
claims against targeted code and existing tests. Use broader search when coverage or directions are missing or
inaccurate. Identify the step's affected obligations. Propose a worthwhile missing artifact's subject, type and durable
benefit for the user's decision and input before writing it; a change beyond the plan follows Deviation below. Routine
code work can follow the workflow directly without a saved plan; this skill remains for executing a named plan.
- Read the plan in full, then the artifacts its Binding inputs cite at the cited lines, before any task creates a
branch or worktree. A cited line that no longer carries what the table says it locks is a deviation.
- Read the Progress log. The first
pending or active step is the current step; never repeat a complete or
skipped step.
- For an
active step, check its branch when the repository has one. With commits, judge the work against the step's
Exit criteria. With a merged pull request, set the step complete; the merge is the maintainer's confirmation of
every Merge condition. Without commits, treat the step as pending.
- Confirm every Prerequisite with its command before the first step.
Execute one step
- Set the step
active in the Progress log and record the branch when the repository has one. For a change plan, set
frontmatter status: active.
- Read the step's Context and confirm it matches the repository. A mismatch is a deviation.
- Do the tasks in order. Every statement is exact. An open choice stated in the task with a reason is the executor's;
record the choice made in Notes. Where the plan is silent, follow the repository's instructions and do what is
correct.
- Run each task's Verify command and compare the output to the expected result. A mismatch is a deviation.
- Run the step's Verification and the plan's every-step rows. Check the Exit criteria. Complete required local
verification before publication, including after remediation. For each consequential affected acceptance criterion,
record exact-revision test or inspection evidence and its result, or the unresolved gap, in the step's evidence.
Reuse existing checks before proposing additional tests; corpus validation and a Design's
satisfies link are not
proof of implemented behaviour.
- After opening or updating a pull request, inspect remote checks once for its exact head. Remediate completed CI
failures within approved scope; failures requiring a deviation follow Deviation below. If checks are pending, record
them as unrun Merge conditions and stop after any in-scope remediation. Each published update gets one inspection. Do
not poll, watch, sleep, or keep the session active solely for CI unless the user explicitly asks to monitor or wait.
Checks that have not appeared or cannot be inspected remain unrun, never presumed successful.
- Record the evidence in Notes and report the PR URL, exact head SHA, completed checks and their results, pending
checks, and every other Merge condition unrun, then stop. The step stays
active until its pull request merges, and
a review change is an amendment on the active step. The user starts the next step.
Deviation
A deviation is anything the plan states that the repository contradicts, any change correctness requires beyond what the
plan states, or any verification that does not match its expected result.
- Stop the step. Do not work around it.
- Set the step
blocked. Record in Notes what the plan states, what was found, and the proposed change with its
evidence. When a tool wrote a verdict, quote that line before any inferred cause.
- Report and wait. On approval, record the change under Amendments with the date, then continue.
Mutate
Apply only an approved change. Record every mutation in Notes with its reason.
- Split: rename Step N to Na, add Nb, update the graph.
- Insert: add a letter suffix, never renumber, update the graph.
- Skip: mark the heading
[SKIP: reason], set the row skipped, never delete.
- Reorder: only where the graph allows, then re-check that no step reads a later step's output.
- Abandon: set frontmatter
status: complete, record the reason in Notes, never delete.
- A change to a Binding input is not a mutation; it stops for the owner.
Complete
When every step is complete or skipped, run the plan's Completion verification rows. When they pass, set frontmatter
status: complete and report. When durable rationale in the plan has no ADR, say so in the report; do not write one.
1---2name: specful-implement3description: Use when the user asks to implement, execute, resume, or continue a saved change plan or arc plan step by step.4---56# Implementing a plan78Execute the plan the user names, one step at a time. The plan is the specification. The repository's instructions own9branching, commits, pushes, and merges; this skill never merges.1011A change plan is one step. Its frontmatter `status` is the step status. Checkpoint records the last completed task, its12evidence, and the branch when one exists. Next names the current task and nothing else. Blocked records a deviation and13its evidence. Amendments records approved deviations with their dates. While a step with its own change plan is active,14that plan's frontmatter is authoritative and the arc row is updated from it at the step boundary.1516A change plan starts in `draft`; treat that as its pending state. For a change plan, references below to Notes mean17Blocked for a deviation and Amendments for an approved change. Its Verification table supplies the Completion18verification rows.1920## Read2122In a Specful repository, apply the [development workflow](https://unkos-dev.github.io/specful/authoring-workflow/):23start at `docs/specs/index.md`, follow scope indexes and relevant Requirements, Designs and ADRs, then check their24claims against targeted code and existing tests. Use broader search when coverage or directions are missing or25inaccurate. Identify the step's affected obligations. Propose a worthwhile missing artifact's subject, type and durable26benefit for the user's decision and input before writing it; a change beyond the plan follows Deviation below. Routine27code work can follow the workflow directly without a saved plan; this skill remains for executing a named plan.28291. Read the plan in full, then the artifacts its Binding inputs cite at the cited lines, before any task creates a30 branch or worktree. A cited line that no longer carries what the table says it locks is a deviation.312. Read the Progress log. The first `pending` or `active` step is the current step; never repeat a `complete` or32 `skipped` step.333. For an `active` step, check its branch when the repository has one. With commits, judge the work against the step's34 Exit criteria. With a merged pull request, set the step `complete`; the merge is the maintainer's confirmation of35 every Merge condition. Without commits, treat the step as `pending`.364. Confirm every Prerequisite with its command before the first step.3738## Execute one step39401. Set the step `active` in the Progress log and record the branch when the repository has one. For a change plan, set41 frontmatter `status: active`.422. Read the step's Context and confirm it matches the repository. A mismatch is a deviation.433. Do the tasks in order. Every statement is exact. An open choice stated in the task with a reason is the executor's;44 record the choice made in Notes. Where the plan is silent, follow the repository's instructions and do what is45 correct.464. Run each task's Verify command and compare the output to the expected result. A mismatch is a deviation.475. Run the step's Verification and the plan's every-step rows. Check the Exit criteria. Complete required local48 verification before publication, including after remediation. For each consequential affected acceptance criterion,49 record exact-revision test or inspection evidence and its result, or the unresolved gap, in the step's evidence.50 Reuse existing checks before proposing additional tests; corpus validation and a Design's `satisfies` link are not51 proof of implemented behaviour.526. After opening or updating a pull request, inspect remote checks once for its exact head. Remediate completed CI53 failures within approved scope; failures requiring a deviation follow Deviation below. If checks are pending, record54 them as unrun Merge conditions and stop after any in-scope remediation. Each published update gets one inspection. Do55 not poll, watch, sleep, or keep the session active solely for CI unless the user explicitly asks to monitor or wait.56 Checks that have not appeared or cannot be inspected remain unrun, never presumed successful.577. Record the evidence in Notes and report the PR URL, exact head SHA, completed checks and their results, pending58 checks, and every other Merge condition unrun, then stop. The step stays `active` until its pull request merges, and59 a review change is an amendment on the active step. The user starts the next step.6061## Deviation6263A deviation is anything the plan states that the repository contradicts, any change correctness requires beyond what the64plan states, or any verification that does not match its expected result.65661. Stop the step. Do not work around it.672. Set the step `blocked`. Record in Notes what the plan states, what was found, and the proposed change with its68 evidence. When a tool wrote a verdict, quote that line before any inferred cause.693. Report and wait. On approval, record the change under Amendments with the date, then continue.7071## Mutate7273Apply only an approved change. Record every mutation in Notes with its reason.7475- Split: rename Step N to Na, add Nb, update the graph.76- Insert: add a letter suffix, never renumber, update the graph.77- Skip: mark the heading `[SKIP: reason]`, set the row `skipped`, never delete.78- Reorder: only where the graph allows, then re-check that no step reads a later step's output.79- Abandon: set frontmatter `status: complete`, record the reason in Notes, never delete.80- A change to a Binding input is not a mutation; it stops for the owner.8182## Complete8384When every step is `complete` or `skipped`, run the plan's Completion verification rows. When they pass, set frontmatter85`status: complete` and report. When durable rationale in the plan has no ADR, say so in the report; do not write one.