| name | sprint |
| classification | workflow |
| classification-reason | Sprint orchestration independent of model capability evolution |
| deprecation-risk | none |
| effort | medium |
| description | Sprint Management — generic sprint capability for ANY bkit user.
16 sub-actions: init, start, status, watch, phase, iterate, qa, report,
archive, list, feature, pause, resume, fork, help, master-plan.
Triggers: sprint, sprint start, sprint init, sprint status, sprint list, master plan, multi-sprint plan,
sprint master plan
|
| argument-hint | [action] [name] [--trust L0-L4] [--from <phase>] |
| user-invocable | true |
| allowed-tools | ["Read","Write","Edit","Glob","Grep","Bash","AskUserQuestion"] |
| agents | {"orchestrate":"bkit:sprint-orchestrator","plan":"bkit:sprint-master-planner","qa":"bkit:sprint-qa-flow","report":"bkit:sprint-report-writer"} |
| imports | [] |
| next-skill | null |
| pdca-phase | null |
| task-template | [Sprint] {action} {name} |
Sprint Skill — Generic Sprint Management for bkit Users
Sprint = meta-container above bkit's PDCA 9-phase. A sprint groups one or
more features under a shared scope, budget, and timeline. Each sprint runs
its own 8-phase lifecycle: prd -> plan -> design -> do -> iterate -> qa
-> report -> archived.
Quick Start
/sprint init my-launch --name "Q2 Launch" --trust L3
/sprint start my-launch
The skill handler routes through <bkit-root>/scripts/sprint-handler.js
(bkit convention — handlers live at the bkit repo root scripts/ directory,
NOT inside skills//scripts/). The handler composes
Sprint 3 adapters (state-store + telemetry + doc-scanner + matrix-sync)
into Sprint 2 use cases (start / advance / iterate / qa / report / archive).
Sprint 1 entities (createSprint / SprintEvents / typedefs) are produced
and consumed transparently along the way.
Resolving scripts/sprint-handler.js in this document: throughout
this SKILL.md, references to scripts/sprint-handler.js mean
<bkit-root>/scripts/sprint-handler.js (the canonical location).
LLM dispatchers MUST NOT compose skills/sprint/scripts/sprint-handler.js
— that path does not exist (Issue #107, fixed v2.1.19 S2 F2-1).
Arguments
| Argument | Description | Example |
|---|
init <id> | Create a sprint with default config | /sprint init my-launch |
start <id> | Run auto-run loop bounded by Trust Level scope | /sprint start my-launch --trust L3 |
status <id> | Show current sprint state from disk | /sprint status my-launch |
list | Union of state-store entries and master-plan discoveries | /sprint list |
phase <id> --to <phase> | Advance to a specific phase | /sprint phase my-launch --to qa |
iterate <id> | Run matchRate-100 loop (max 5 cycles) | /sprint iterate my-launch |
qa <id> --feature <name> | Run 7-Layer data-flow check on one feature | /sprint qa my-launch --feature auth |
report <id> | Generate KPI + lessons + carry-items report | /sprint report my-launch |
archive <id> | Move to terminal archived status | /sprint archive my-launch |
pause <id> | Manually pause a running sprint | /sprint pause my-launch |
resume <id> | Re-evaluate triggers and resume | /sprint resume my-launch |
watch <id> | Live dashboard (Sprint 5 — current returns snapshot) | /sprint watch my-launch |
feature <id> | Per-feature operations (Sprint 5) | /sprint feature my-launch --feature auth |
fork <id> | Fork into a new sprint (Sprint 5) | /sprint fork my-launch --new my-launch-v2 |
help | Print sub-action help | /sprint help |
master-plan <project> | Generate multi-sprint Master Plan (agent isolated spawn) | /sprint master-plan q2-launch --name "Q2 Launch" --features auth,payment |
measure <id> | Measure single gate / multi-gate / phase batch (v2.1.16 #94) | /sprint measure my-launch --gate M4 |
Trust Level Scope (auto-run boundary)
| Level | Stop after | Manual | Notes |
|---|
| L0 | prd | true | Each phase requires user approval |
| L1 | prd | true (hint) | Hint mode but still manual |
| L2 | design | false | Plan -> Design auto, Do requires approval |
| L3 | report | false | Plan -> Report auto, Archive requires approval (default) |
| L4 | archived | false | Full auto including archive (Trust >= 85 recommended) |
Auto-Pause Safety Pins
Four armed triggers can pause a running sprint:
QUALITY_GATE_FAIL — M3 > 0 OR S1 < 100
ITERATION_EXHAUSTED — iter >= 5 AND matchRate < minAcceptable
BUDGET_EXCEEDED — cumulativeTokens > config.budget
PHASE_TIMEOUT — phase elapsed > config.phaseTimeoutHours
Pause writes an audit log entry and a SprintPaused event. Resume
re-evaluates the triggers and refuses if any are still firing.
Cross-Sprint Architecture (Sprint 1+2+3+4)
USER COMMAND
v
skills/sprint/SKILL.md (this file — frontmatter triggers in 8 languages)
v
scripts/sprint-handler.js (English dispatcher)
v
Sprint 3: lib/infra/sprint -> { stateStore, eventEmitter, docScanner, matrixSync }
v
Sprint 2: lib/application/sprint-lifecycle -> startSprint / advancePhase / ...
v
Sprint 1: lib/domain/sprint -> createSprint / SprintEvents / typedefs
v
DISK: .bkit/state/sprints/<id>.json + .bkit/audit/<date>.jsonl
Examples
See:
examples/basic-sprint.md
examples/multi-feature-sprint.md
examples/archive-and-carry.md
When NOT to Use
- Single-feature PDCA work — use
bkit:pdca instead
- Starter level projects — sprint overhead exceeds value
- One-off bug fixes that do not warrant a master plan
Delegation notes
Extended trigger keywords, moved here from the frontmatter description
(issue #129 token diet) — one anchor per language stays in the description;
the full multilingual list is preserved below:
- JA: スプリント開始, スプリント状態, マスタープラン, マルチスプリント計画, スプリントマスタープラン
- ZH: 冲刺开始, 冲刺状态, 主计划, 多冲刺计划, 冲刺主计划
- ES: iniciar sprint, estado sprint, plan maestro, plan multi-sprint, plan maestro sprint
- FR: demarrer sprint, statut sprint, plan maître, plan multi-sprint, plan maître sprint
- DE: Sprint starten, Sprint Status, Masterplan, Multi-Sprint-Plan, Sprint-Masterplan
- IT: avviare sprint, stato sprint, piano principale, piano multi-sprint, piano principale sprint
Related Skills and Agents
bkit:pdca — single-feature PDCA cycle (foundation primitive)
bkit:control — automation level (L0-L4) — surfaces SPRINT_AUTORUN_SCOPE
bkit:sprint-orchestrator (agent) — full lifecycle coordinator
bkit:sprint-master-planner (agent) — plan/design generation
bkit:sprint-qa-flow (agent) — 7-Layer dataFlowIntegrity verifier
bkit:sprint-report-writer (agent) — KPI + lessons + carry items
10. Skill Invocation Contract (for LLM Dispatchers)
This contract specifies how an LLM dispatcher should construct the args
object for each of the 16 sub-actions when invoking the underlying handler
via scripts/sprint-handler.js.
10.1 Args Object Schema (per action)
| Action | Required | Optional | Example call |
|---|
init | id, name | trust/trustLevel, phase, context, features | args = { id: "my-launch", name: "Q2 Launch", trust: "L3" } |
start | id, name | trust/trustLevel, phase, context, features | args = { id: "my-launch", name: "Q2 Launch" } (resume preserves phase) |
status | id | — | args = { id: "my-launch" } |
list | — | — | args = {} |
phase | id, to | approve (boolean), reason (string) | args = { id: "my-launch", to: "do", approve: true, reason: "Design review complete" } |
iterate | id | — | args = { id: "my-launch" } |
qa | id, featureName | — | args = { id: "my-launch", featureName: "auth" } |
report | id | — | args = { id: "my-launch" } |
archive | id | projectRoot | args = { id: "my-launch" } |
pause | id | triggerId, severity, message | args = { id: "my-launch", triggerId: "USER_REQUEST" } |
resume | id | — | args = { id: "my-launch" } |
watch | id | — | args = { id: "my-launch" } |
feature | id, action | featureName (required for add/remove) | args = { id: "my-launch", action: "list" } |
fork | id, newId | — | args = { id: "my-launch", newId: "my-launch-v2" } |
help | — | — | args = {} |
master-plan | id (projectId), name (projectName) | features (CSV or array), trust/trustLevel, context, projectRoot, force (boolean), duration | args = { id: "q2-launch", name: "Q2 Launch", features: ["auth", "payment"] } |
measure | id | one of: gate (string) / gates (CSV or array) / phase (string); plus trustLevel, source ('manual'|'auto'), agentTaskRunner (function in deps) | args = { id: "my-launch", gate: "M4" } |
10.1.2 measure action semantics (v2.1.16, Issue #94 F3)
/sprint measure <id> is the user-invokable partial-gate measurement command
added in v2.1.16. It routes the requested gate(s) through
lib/application/quality-gates/measure-router.js (single SoT shared with
sprint-orchestrator self-assessment) and persists results into
sprint.qualityGates subject to Trust Level scope.
Three invocation modes (mutually exclusive precedence: gate > gates > phase):
/sprint measure my-launch --gate M4
/sprint measure my-launch --gates M4,M8
/sprint measure my-launch --phase design
Agent routing (Master Plan §11.3 AC4 — 7 gates × 4 agents):
| Gate | Agent | Source artifact |
|---|
| M1 | gap-detector | Design §9 API Contract ↔ shipped implementation |
| M2 | code-analyzer | lib/ + tests/ quality scan |
| M3 | gap-detector | critical severity issue scan |
| M4 | gap-detector | Design §9 API Contract ↔ module boundaries (#92) |
| M7 | code-analyzer | style + naming convention scan |
| M8 | sprint-orchestrator | design §14 self-assessment checklist |
| S1 | sprint-qa-flow | 7-Layer hop traversal |
Gates outside this table (M5, M10, S2, S4) return
{ ok: false, reason: 'unsupported_gate' } — carried to v2.1.17.
Trust Level scope (Master Plan AC5):
L0 / L1: preview mode — measurement returned but
sprint.qualityGates NOT updated, no gate_measured audit entry.
L2 / L3 / L4: record mode — qualityGates updated +
gate_measured audit entry emitted per gate.
Audit emission (when in record mode):
{
"action": "gate_measured",
"category": "sprint",
"actor": "user",
"target": "<sprintId>",
"details": {
"sprintId": "...", "gateKey": "M4", "field": "M4_apiComplianceRate",
"agent": "gap-detector", "value": 100, "threshold": 95, "passed": true,
"source": "manual", "phase": "design", "trustLevel": "L3",
"previousValue": null
}
}
ENH-292 alignment: multi-gate / phase batch dispatches measurements
sequentially (no Promise.all) to avoid #56293 sub-agent caching 10x.
Dispatcher requirement: the LLM dispatcher (main session) must inject
deps.agentTaskRunner wrapping Claude Code's Task tool. Without it the use
case returns reason: 'no_agent_runner' per gate (deterministic, not silent
fail). The handler layer exposes createTaskToolRunner({ invokeTaskTool })
(in scripts/lib/sprint-handler-shared.js, re-exported from
scripts/sprint-handler.js) to build this wrapper: