Skip to content
Development
Skill

/sprint-plan

Start the Plan phase of the SPARK loop: the Engineering Manager turns an approved spec into a technical plan — architecture decision with rejected alternatives, ordered task breakdown with definitions of done, test strategy and risks. Use after the spec is approved, or to revise

From plugin
aspark
2512 skills7 agents

Claude Code

$ npx -y skills add a-lottes/aSPARK --skill sprint-plan --agent claude-code

SKILL.md

sprint-plan.SKILL.md
name: sprint-plan
description: >
  Start the Plan phase of the SPARK loop: the Engineering Manager turns an
  approved spec into a technical plan — architecture decision with rejected
  alternatives, ordered task breakdown with definitions of done, test
  strategy and risks. Use after the spec is approved, or to revise a plan
  after review/QA findings.

/sprint-plan — Plan (Engineering Manager)

You are running the **Plan** ceremony. The Engineering Manager locks the "how" so that `/increment` never has to invent architecture on the fly.

Input

Optional argument: the feature name. Resolve as usual (single feature in `.spark/` → use it; several → ask).

Steps

1. **Check the gate.** `.spark/<feature-name>/spec.md` must exist with status `approved`. If not, STOP and tell the user what's missing — `/story-time` or `/look-and-feel` come first. Never plan against a draft. The gate needs the spec's `Status` row, not the spec: the `engineering-manager` agent reads it whole in its own context, and a copy in this conversation would only crowd out the phases still to come.

  • **Only after the gate has passed**, resolve optional tool availability,

once: if the session exposes MCP tools whose names end in `staleness` and `impact` (they are normally namespaced, e.g. `mcp__aspark-graph__staleness`), treat that as the available surface and run no command; otherwise probe once, read-only, with `command -v aspark-graph >/dev/null 2>&1 && echo runner=yes || echo runner=no; test -f .aspark-graph/graph.json && echo graph=yes || echo graph=no` — it reports both facts and **always exits 0**, so the absent case never looks like a failed command. Resolve **both** facts — is there a surface, and does `.aspark-graph/graph.json` exist — and act on the four states in `${CLAUDE_PLUGIN_ROOT}/tools/aspark-graph.md`: pass the tool file in step 2 only when both hold; say its one-sentence hint, at most once, in either mixed state; and when **neither** holds, **say nothing at all** and continue exactly as you would otherwise. Never probe in a run that already stopped, and never let the outcome change a gate. 2. **Delegate to the Engineering Manager.** Invoke the `engineering-manager` agent with the feature paths and the plan template from `${CLAUDE_PLUGIN_ROOT}/templates/plan.md`. Point it at `.spark/constitution.md` if it exists — the architecture must live within its technical constraints. If a tool resolved as available in step 1, pass `${CLAUDE_PLUGIN_ROOT}/tools/aspark-graph.md` too — one more path alongside the template, nothing else. For a plan revision (rework after `/peer-review` or `/demo-day` findings), pass those findings along and say explicitly that this is a revision. 3. **Relay questions.** If the agent returns technical questions that change the architecture, put them to the user (AskUserQuestion for enumerable choices), then re-invoke with the answers.

  • The agent may also return a **tool query request** — it has no shell of

its own. Run only the read-only `query` call it names, exactly as the tool file documents it, and re-invoke with the result. Never run a build, an install, or anything that writes. If the call fails or returns nothing, say so and let the agent proceed without it. 4. **Present the plan.** Show the user: the architecture decision **with the rejected alternatives**, the task table (count, order, walking-skeleton start), the test strategy, and the top risks. This is the moment for the user to veto the approach — say so. 5. **Iterate** on feedback via the agent until the user is satisfied. 6. **Close the gate.** Walk the PLAN GATE checklist with the user. On their explicit approval: set the plan status to `approved`.

Rules

  • Never set `approved` without the user's explicit approval.
  • If planning surfaced a spec problem, don't patch the spec here — offer to

run `/story-time` to rework it, then return.

Handoff

  • Plan approved → **`/increment`** (build it)
Read more
@a-lottes
Ships withaspark

A gated agile delivery process for Claude Code: an AI product team (PO, Designer, EM, Reviewer, QA, Release) where every feature must pass a quality gate before it moves on — including real-browser QA.

2512 skills7 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
25
Star history of a-lottes/aSPARK on GitHub, a chart by star-history.com

Other skills on aspark.

backlog

backlog

Seed a backlog from the project's documents: the Product Owner reads docs/ (plus the constitution and ROADMAP.md), proposes an…

@a-lottes@a-lottesInstall Skill
campaign

campaign

Start a campaign draft: build `.spark/campaigns/<name>/campaign.md` from an existing campaign kind, asking only what the kind…

@a-lottes@a-lottesInstall Skill
charter

charter

Establish or amend the project constitution — the standing principles and constraints that bind every SPARK phase. Use once at…

@a-lottes@a-lottesInstall Skill
demo-day

demo-day

Hands-on QA in a real browser: the QA Tester clicks through the running app, verifies every acceptance criterion from the spec,…

@a-lottes@a-lottesInstall Skill
go-live

go-live

Start the Keep phase of the SPARK loop: the Release Manager runs fresh pre-flight checks, writes the user-facing changelog,…

@a-lottes@a-lottesInstall Skill
increment

increment

Start the Act phase of the SPARK loop: build the increment strictly following the approved plan, task by task, with progress…

@a-lottes@a-lottesInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc11d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about sprint-plan.

Which coding agents can use sprint-plan?
sprint-plan installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.