From springfield
Use Springfield plan to compile a new work request into a runnable batch for the current project.
How this skill is triggered — by the user, by Claude, or both
Slash command
/springfield:planThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use Springfield plan to compile a new work request into a runnable batch for the current project.
Use Springfield plan to compile a new work request into a runnable batch for the current project.
Source: builtin/springfield.md
Built-in Springfield playbook.
Run springfield version first. It prints one of:
springfield vX.Y.Z — a released build.springfield dev — a local source build (e.g. go install .).Then:
brew install brentguistwite/tap/springfieldspringfield_<version>_linux_<arch>.tar.gz from the GitHub Releases page and put the springfield binary on PATH.go install . inside the Springfield repo (no Windows release tarballs are published yet).springfield dev, this is a local development build. Continue without a floor check — the user is responsible for keeping it current.v from the reported version), tell the user to upgrade, then stop:
brew upgrade springfieldspringfield_<version>_linux_<arch>.tar.gz from the GitHub Releases page and replace the binary on PATH.go install . inside the Springfield repo (no Windows release tarballs yet).Do not try to work around a missing or too-old CLI — surface the exact command above instead. (A plugin older than the CLI is fine and needs no action; the CLI stays backward-compatible with older skills within a major version.)
Reads are allowed — recover and status flows specifically inspect .springfield/run.json and per-plan prd.json. Never write, edit, or delete files under .springfield/. That directory is Springfield's state — the CLI is your only interface for mutating it. Writing there directly will abort the current batch. This applies regardless of which agent is invoking the skill.
Compile a Springfield batch from the user's work request.
Read project guidance from AGENTS.md first, then CLAUDE.md, then GEMINI.md when present.
Ask the user whether they have an existing plan file or want to describe the work directly:
Do not infer file-vs-prompt from one ambiguous input.
Run springfield status to check whether an active batch already exists.
running, tell the user to wait before replacing.If the user pointed to a file, read it. If prompt-mode, treat the prompt as source.
Decide slice boundaries based on the plan's meaning, not syntax. A slice should:
Markdown cues to consider (in priority order):
## Task N: / ## Step N: headers — honor them.If the plan is genuinely one step, emit one slice. Don't pad.
For each slice, settle how we will know it is done — its acceptance_criteria.
Aim each criterion at something checkable: a test command (e.g. go test ./auth passes), a file path, or an HTTP response (e.g. GET /health returns 200). Springfield emits a non-fatal warning at ingest on any criterion with no such signal — vague criteria still compile, they just get a nudge.
How criteria are actually used — be honest with the user, don't oversell:
<story-pass>US-NNN</story-pass> or it hits the iteration cap (default 50). That marker — the agent's own judgment — is what gates completion, not the criteria themselves.Ask, as its own question: "Enable independent pre-merge review for this batch?"
plans[].review in the envelope to true (force review on) or false (force it off). Leave it unset to inherit the project default.springfield.local.toml ([review].enabled, an operator-wide concern) — mention it only if the user wants every batch reviewed rather than choosing per-plan.Serialize the answer. Write the same review value onto every plan object — all true if the user enabled review, all false if they declined (the example below shows true on each plan). Only use different values per plan if the user explicitly asks for per-plan control. Omitting review means "inherit the project default", so dropping it after the user opted in would silently ship an unreviewed batch.
Show the user the proposed plans (title + one-line intent per plan). Ask for confirmation before writing.
Once confirmed, compile a PRD envelope and pipe it to springfield plan --prd -:
springfield plan --prd - <<'JSON'
{
"title": "<batch title>",
"source": "<original plan text, verbatim>",
"phases": [
{"mode": "serial", "plans": ["plan-01", "plan-02"]}
],
"plans": [
{
"id": "plan-01",
"title": "<plan 1 title>",
"description": "<plan 1 description>",
"context_md": "Project uses TypeScript + Bun. Follow existing test patterns.",
"review": true,
"user_stories": [
{
"id": "US-001",
"title": "<story title>",
"description": "<story description>",
"acceptance_criteria": ["<criterion 1>"],
"priority": 1,
"passes": false,
"deps": []
}
]
},
{
"id": "plan-02",
"title": "<plan 2 title>",
"description": "<plan 2 description>",
"context_md": "Project uses TypeScript + Bun. Follow existing test patterns.",
"review": true,
"user_stories": [
{
"id": "US-001",
"title": "<story title>",
"description": "<story description>",
"acceptance_criteria": ["<criterion 1>"],
"priority": 1,
"passes": false,
"deps": []
}
]
}
]
}
JSON
Schema notes:
phases: execution ordering. Each phase has mode ("serial" or "parallel") and plans (list of plan IDs in that phase).plans: each plan has id, title, description, optional context_md, optional review (the per-plan pre-merge review toggle from Step 5 — omit to inherit the project default), and user_stories.context_md: plan-specific context only. Project-wide guidance (build commands, repo conventions) lives in root AGENTS.md and is auto-loaded by the runner — do not duplicate it into context_md or you double the prompt-token cost of that material every iteration.user_stories: each story has id (US-NNN), title, description, acceptance_criteria, priority (int, lower = runs first), passes (false initially), deps (story IDs within same plan).docs/prd-format.md for full field semantics, validation rules, and stop conditions.Constraint — documentation acceptance criteria must name an explicit target file. Any
acceptance_criteriaentry that prescribes writing or updating documentation MUST name the exact target as apath/to/file.md(add a:lineanchor when pointing at an existing section). If no canonical file exists yet, the criterion must say to create it at a named path. Rationale: in a dogfood batch an agent burned ~75 turns hunting for a "review docs" file that never existed because the criterion never named one — vague targets cause thrash.
- Allowed:
"Document the off-target marker rule in docs/prd-format.md under the 'Stop Conditions' section"- Forbidden:
"Document the off-target marker rule in the review docs"and"note this in the relevant section"— no file path, so the agent has nothing concrete to target.
Use --replace or --append if an active batch exists (per Step 2).
Keep Springfield as the only user-facing surface.
npx claudepluginhub brentguistwite/springfield --plugin springfieldGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.