Skip to content
Back to skills

Specflo Plan

ASecurity

Use at a specflo project's plan phase, when turning a validated spec into a dependency-ordered, testable task plan before any code. Triggers include "write the plan", "break this into tasks", or `specflo status` showing the plan phase. Do NOT use for trivial fixes or before a spec has been validated.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 3, 2026
ai-agentsgo

Works with

  • cli

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add TacoTakumi/specflo --skill specflo-plan --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Specflo Plan?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Specflo Plan
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tacotakumi-specflo-plan/badge)](https://www.skillsdirectory.com/skills/tacotakumi-specflo-plan)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: specflo-plan
description: Use at a specflo project's plan phase, when turning a validated spec into a dependency-ordered, testable task plan before any code. Triggers include "write the plan", "break this into tasks", or `specflo status` showing the plan phase. Do NOT use for trivial fixes or before a spec has been validated.
---

# plan

Drive a validated `spec.md` to a validated `plan.md` for the active project: a
synthesized approach, dependency-ordered `T-NN` tasks (each with behavioral
acceptance, a verification step, and `Implements: REQ-NN` traceability), and a
clean handoff toward execution. The CLI does the structured work (`specflo plan start`, `specflo task add`, `specflo validate plan`, `specflo advance`); this
skill carries the synthesis, decomposition judgement, and discipline.

## When to use

- At the **plan phase**, after a validated `spec.md`.
- **Synthesize, don't re-spec** — the spec captured *what* to build; the plan
  captures *in what order, and verified how*.

## When NOT to use

- Before a spec has been validated (`specflo validate spec` must pass).
- For trivial one-off fixes that don't warrant the pipeline.

## HARD-GATE

No implementation code until the plan is validated (`specflo validate plan`
passes) and the user approves. *"I'll just write the code"* → that's execution,
not planning.

## Process

1. **Preflight** — confirm an active project at the plan phase; run `specflo plan start` to create/locate `plan.md` (it prints the locator `<project>/plan`); **read the spec with `specflo doc show spec`** (the `REQ-NN`s + their
   acceptance + boundaries) and the brainstorm's architecture decisions (`specflo doc show brainstorm`) as input.
   Treat `spec.md` as read-only.
2. **Decompose into vertical slices** — each task is a thin, end-to-end,
   independently testable/reviewable deliverable. Reject horizontal layers.
   Split a task when it would take >2 h, needs >3 acceptance bullets, touches ≥2
   independent subsystems, or has "and" in its title.
3. **Shape each task** — a behavioral pass/fail **acceptance** criterion, a
   **verification** command/step, and `Implements: REQ-NN` (repeatable). Structure
   behavior-adding tasks as RED→GREEN (write the failing test first). Declare
   `Depends on` for ordering.
   **Decomposition rules (fan-out capable).** Every plan is shaped this way
   **regardless of** the project's execution mode, so an orchestrator could fan
   it out to subagents without replanning — and a linear run loses nothing:
   - **Files.** List every file a task edits in `--files`; the CLI parses it
     into the task's ownership set (a trailing parenthetical note per entry is
     allowed: `~/x/y (venv, outside repo)`).
   - **Shared files get an edge.** Wherever two tasks **share a file**, add a
     `--depends-on` edge so they never run at once; `specflo validate plan`
     warns naming the pair when you miss one.
   - **Parallel producers, one merge.** Give tasks that produce results in
     parallel their own per-task output files, then add one deterministic
     **merge task** that depends on all of them — never have producers append
     to a shared file.
   - **Contract first.** Order the task that fixes a **contract** (schema, wire
     format, interface) before the tasks on either side of it, so both sides
     can proceed against it at once.
   - **Pools.** Declare hardware and shared environments (a GPU, a venv, a
     port) with `--needs <pool>` and size them with `specflo pool add <name>
     --size N`; an undeclared pool has one slot.
   - **User in the loop.** Mark a task that needs the user (a by-eye verdict,
     a desktop session) with `--needs user`; it is never delegated.
4. **Capture inline** — run `specflo task add` with `--text … --acceptance … --verify … --from REQ-NN [--from REQ-NN …] [--depends-on T-NN …] [--files …] [--needs <pool> …]` the moment each task
   lands (un-batched). **Emit artifact-writing add calls sequentially: one at a
   time, never batched in parallel.** The CLI's advisory lock (D-01) makes
   concurrent adds safe but cannot fix ordering — minted `T-NN`/`M-NN` IDs follow
   execution order, so parallel emission can record IDs out of authoring order.
   Keep Approach / Global constraints / Open questions / Canonical refs updated
   with `specflo section set plan "<section>" --file <path>` (or `--stdin`): it
   replaces that one section's body and leaves every task and milestone
   untouched (Tasks, Milestones, and Pools are refused there — they belong to
   their own verbs).
5. **Scope-reduction guard** — the plan delivers what each `REQ-NN`/`D-NN`
   requires; never silently degrade to "v1 / simplified / for now / a stub." On
   genuine overflow, recommend a phase split or a superseding requirement. Clear
   `specflo validate plan` scope-reduction warnings before advancing.
6. **Coverage by construction** — every active `REQ-NN` is implemented by ≥1 task,
   and every task cites ≥1 live `REQ-NN`. Aim for this so `specflo validate plan` passes first try.
7. **Self-review** — coverage both ways, no placeholders, dependencies ordered and
   acyclic, ≤~5 files per task, every task has acceptance + verification.
8. **Readiness + phase boundary** — get an explicit user **"ready?"**, then
   `specflo validate plan` → fix issues + address warnings → re-validate. Then
   **pause at the boundary, don't auto-advance**: the plan is complete and
   validated, the **checkpoint is saved** (the project's `checkpoint.md`; resume any
   time with `specflo checkpoint`), so this is a **safe place to clear context**.
   `specflo advance` (moves `plan → execute`) is the user's to call — **wait** for
   their go; don't start executing tasks yourself.

   **Auto-mode carve-out.** The pause-and-wait above is the *manual* default.
   Under an opt-in `specflo auto` run, the auto-mode bootstrap's **boundary
   override** (marked `== specflo auto-mode bootstrap ==`) supersedes it — once
   the phase validates, advance across `brainstorm → spec → plan → execute` on
   your own without pausing here. This carve-out applies only under that
   bootstrap; absent it, pause as above.

## Milestones

Group the plan's tasks into ordered **milestones** — user-verifiable slices —
when it spans more than a couple. The CLI owns every milestone mechanic
(document-order sequence, rollup, the current milestone, the boundary beat); this
skill only directs *authoring*, so reference the commands rather than restating
that logic:

- Author each milestone with an **Exit checklist** (what proves the slice works):
  `specflo milestone add --text "Auth works" --exit "login" --exit "logout"`.
- Assign **every** task to a milestone — `--milestone M-NN` on `specflo task add`,
  or `specflo task set-milestone T-NN M-NN` after the fact. Once milestones
  exist, `specflo validate plan` flags any unassigned task, requires milestone
  dependencies to point backward, and checks the per-milestone `REQ-NN` union
  covers the spec.
- Milestones are **optional**: a plan with zero milestones stays dormant and
  behaves exactly as today — add them only when they earn their keep.

## Correcting and annotating tasks

Never hand-edit `plan.md` — the CLI owns it. While a task is not yet done, fix a
wrong field with `specflo task edit T-NN` (`--title`, `--acceptance`,
`--verify`, `--scope`, `--files`, `--needs`, `--implements`, and the repeatable
`--add-depends-on` / `--drop-depends-on`), rather than rewriting the entry by
hand or minting a near-duplicate task. Prose sections go through
`specflo section set plan "<section>"`; entries go through the task, milestone,
and pool verbs; nothing goes through an editor.

Record the reasoning behind a change — why an approach was dropped, what a
review resolved — with `specflo task note T-NN --text "…" --label Design`. The
labels are a closed set: `Note` (the default), `Design`, `Resolution`,
`Descoped`; `Edit` is reserved for `task edit --force`.

Once a task is done its entry is history: annotate it with `task note`, or
replace the work with `specflo task add --supersedes T-NN`. A superseded entry
is frozen.

## Fast level

When `specflo status` shows `Level: fast`, this skill runs short:

- **You make the decisions.** At most 3, recorded with `specflo decision add`.
  For each, weigh 2 or 3 approaches, pick one, and put the approaches weighed
  and why you chose that one in the `--rationale`.
- **Do not interview the user,** and **do not pause** at the phase boundary:
  once the phase validates, run `specflo advance` and go on, from brainstorm to
  spec to plan.
- **Deferred work** goes in the brainstorm's Out of scope / Deferred section.
- **Caps:** 3 decisions and 7 tasks. A cap only warns: finish the work already
  recorded, add no more, and put new work in the brainstorm's Out of scope /
  Deferred section. Do not move the project up; the user chose fast.
- **Targeted Verify.** Each task's `--verify` runs the tests that task adds or
  changes: a test file, a test ID or a `-k` filter, not the whole suite. A
  bare `uv run pytest` is the whole suite. The execute skill runs the full
  suite once, after the last task.
- **One approval, before execute.** When the plan validates, stop. Show the
  user `specflo doc show brief` and list every choice you made that they have
  not seen: each decision, and any requirement or task beyond what they asked
  for. Run `specflo advance` into execute only after they approve.

Keep to 3 to 7 tasks; skip milestones.

## Anti-sycophancy

Do not open with "Great plan!", "You're absolutely right", or similar. State the
plan's gaps plainly. A plan that hides a coverage hole to seem agreeable is worse
than no plan.

## Rationalizations

| Rationalization | Reality |
|---|---|
| "The spec is enough." | The spec says *what*; the plan says *in what order, verified how*. |
| "I'll just write the code." | That's execution, not planning — **HARD-GATE**. |
| "This task is obvious; skip the acceptance." | Every task carries a pass/fail criterion by construction. |
| "Ship a simplified version for now." | Deliver what the requirement needs, or split — don't silently reduce scope. |
| "Every task is one big slice." | Prefer many thin vertical slices over few thick ones. |

## Red flags

- A task with no `Implements: REQ-NN`, or an active requirement no task covers.
- Acceptance criteria that are not pass/fail, or a task with no verification step.
- Horizontal layer tasks ("all the models", "all the endpoints") instead of
  end-to-end slices.
- Dependency edges that form a cycle, or that reference a non-existent task.

## Verification

Before declaring the plan ready:

- [ ] `specflo validate plan` exits 0 (bidirectional coverage holds; every task has acceptance + verification; dependencies resolve and are acyclic).
- [ ] Every prose section was written with `specflo section set`, never by editing the file.
- [ ] Any `specflo validate plan` warnings are addressed or justified.
- [ ] The user has explicitly approved the plan.
- [ ] Then, and only then, surface the checkpoint-saved phase-end beat and leave `specflo advance` to the user.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.