Convex Create Component
spokvulcan/poker-planning
Builds reusable Convex components with isolated tables and app-facing APIs.
Sprint Management — generic sprint capability for ANY bkit user.
$ npx skills add ww-w-ai/bkit-claude-code --skill sprint -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ww-w-ai/bkit-claude-code sprint --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ww-w-ai/bkit-claude-code.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/sprint .claude/skills/sprint && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sprint" agent skill from https://github.com/ww-w-ai/bkit-claude-code/tree/main/skills/sprint into .claude/skills/sprint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sprint", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ww-w-ai/bkit-claude-code/tree/main/skills/sprintType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ww-w-ai/bkit-claude-code --skill sprint -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ww-w-ai/bkit-claude-code sprint --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ww-w-ai/bkit-claude-code.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/sprint .agents/skills/sprint && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sprint" agent skill from https://github.com/ww-w-ai/bkit-claude-code/tree/main/skills/sprint into .agents/skills/sprint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sprint", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ww-w-ai/bkit-claude-code --skill sprint -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ww-w-ai/bkit-claude-code sprint --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ww-w-ai/bkit-claude-code.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/sprint .cursor/skills/sprint && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sprint" agent skill from https://github.com/ww-w-ai/bkit-claude-code/tree/main/skills/sprint into .cursor/skills/sprint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sprint", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ww-w-ai/bkit-claude-code.git --path skills/sprint--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ww-w-ai/bkit-claude-code --skill sprint -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ww-w-ai/bkit-claude-code sprint --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ww-w-ai/bkit-claude-code.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/sprint .gemini/skills/sprint && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sprint" agent skill from https://github.com/ww-w-ai/bkit-claude-code/tree/main/skills/sprint into .gemini/skills/sprint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sprint", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ww-w-ai/bkit-claude-code sprintInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ww-w-ai/bkit-claude-code --skill sprint -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ww-w-ai/bkit-claude-code.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/sprint .github/skills/sprint && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sprint" agent skill from https://github.com/ww-w-ai/bkit-claude-code/tree/main/skills/sprint into .github/skills/sprint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sprint", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ww-w-ai/bkit-claude-code --skill sprint -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ww-w-ai/bkit-claude-code sprint --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ww-w-ai/bkit-claude-code.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/sprint .opencode/skills/sprint && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sprint" agent skill from https://github.com/ww-w-ai/bkit-claude-code/tree/main/skills/sprint into .opencode/skills/sprint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sprint", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sprintSprint Management — generic sprint capability for ANY bkit user.
Sprint is an agent skill from ww-w-ai/bkit-claude-code. 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
Its SKILL.md is about 6.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files (for example `PHASES.md`, `examples/archive-and-carry.md` and `examples/basic-sprint.md`).
It sits in Product & Project Management, covering Sprint planning and agile. The repository describes itself as: bkit Vibecoding Kit - PDCA methodology + Claude Code mastery for AI-native development. The licence is Apache-2.0.
2 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 85b4913. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditGlobGrepBashAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Sprint loads about 6.7k tokens when it runs. Until then it costs about 83 tokens; SKILL.md has 2,492 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestionAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ww-w-ai/bkit-claude-code at commit 85b4913, republished under its Apache-2.0 licence (© ww-w-ai). 2,492 words, ~6,664 tokens.
.claude/skills/sprint/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.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.
/sprint init my-launch --name "Q2 Launch" --trust L3
/sprint start my-launchThe skill handler routes through <bkit-root>/scripts/sprint-handler.js
(bkit convention — handlers live at the bkit repo root scripts/ directory,
NOT inside skills/<name>/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.jsin this document: throughout this SKILL.md, references toscripts/sprint-handler.jsmean<bkit-root>/scripts/sprint-handler.js(the canonical location). LLM dispatchers MUST NOT composeskills/sprint/scripts/sprint-handler.js— that path does not exist (Issue #107, fixed v2.1.19 S2 F2-1).
| 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 |
| 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) |
Four armed triggers can pause a running sprint:
QUALITY_GATE_FAIL — M3 > 0 OR S1 < 100ITERATION_EXHAUSTED — iter >= 5 AND matchRate < minAcceptableBUDGET_EXCEEDED — cumulativeTokens > config.budgetPHASE_TIMEOUT — phase elapsed > config.phaseTimeoutHoursPause writes an audit log entry and a SprintPaused event. Resume
re-evaluates the triggers and refuses if any are still firing.
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>.jsonlSee:
examples/basic-sprint.mdexamples/multi-feature-sprint.mdexamples/archive-and-carry.mdbkit:pdca insteadExtended 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:
bkit:pdca — single-feature PDCA cycle (foundation primitive)bkit:control — automation level (L0-L4) — surfaces SPRINT_AUTORUN_SCOPEbkit:sprint-orchestrator (agent) — full lifecycle coordinatorbkit:sprint-master-planner (agent) — plan/design generationbkit:sprint-qa-flow (agent) — 7-Layer dataFlowIntegrity verifierbkit:sprint-report-writer (agent) — KPI + lessons + carry itemsThis 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.
| 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" } |
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 # single gate
/sprint measure my-launch --gates M4,M8 # multi-gate (CSV)
/sprint measure my-launch --phase design # phase batch (ACTIVE_GATES_BY_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:
const { createTaskToolRunner } = require('<bkit-root>/scripts/lib/sprint-handler-shared');
const runner = createTaskToolRunner({
invokeTaskTool: async ({ subagent_type, prompt }) => {
// delegate to Claude Code's Task tool in the main session
return { text: await callTaskTool({ subagent_type, prompt }) };
},
});
await handleSprintAction('measure', { id, gate }, { agentTaskRunner: runner });Fork mode changes when the result arrives (ENH-478, v2.1.37).
The snippet above assumes
callTaskToolresolves to the subagent's finished text. On Claude Code v2.1.232 and later that assumption does not hold in an interactive session: fork mode is on by default, the Agent tool loses itsrun_in_backgroundparameter, and "a background subagent's results reach Claude as a completion notification in a later turn" (code.claude.com/docs/en/sub-agents). The result is not lost — it arrives on a later turn — but it is not available inside the turn that spawned the subagent.A dispatcher that awaits it in-turn therefore receives nothing, and the gate reports
no_output: an honest "not measured" rather than a wrong score, with the likely cause named in the message. To measure inside one turn, either run non-interactively (-p, where fork mode is off) or setCLAUDE_CODE_FORK_SUBAGENT=0.Nothing here is a workaround for a defect. It is the shape of the runtime, and a dispatcher that spans turns is the correct adaptation to it.
Two invocation paths:
handleSprintAction(...) directly with deps.agentTaskRunner injected.
Gate measurement works end-to-end.node scripts/sprint-handler.js ...): runs in a
separate Node process that cannot see the Task tool, so it passes {}
and gate measurement returns no_agent_runner. Use this path only for
non-measurement actions (status, list, help) or when the in-process path
is unavailable; for any action that measures gates, use the in-process
dispatcher call with an injected runner.phase --approve semantics (v2.1.16, Issue #95)When a sprint is at Trust Level L2 (scope.stopAfter = "design") or any other
level whose scope.requireApproval blocks a forward transition, the user can
re-issue the phase action with --approve (and optional --reason) to
cross the scope boundary for this single call only:
/sprint phase my-launch --to do --approve --reason "Design review complete, M4/M8 gates pass"Semantics (Master Plan §11.2 AC1-AC6):
sprint.autoRun.scope is NOT mutated. The next transition
faces the same scope check. To advance through multiple scope-blocking
transitions, re-issue --approve each time (or escalate Trust Level via
/bkit:control level <N>).sprint.autoRun.trustLevelAtStart and the global
automation level (/bkit:control) are unchanged. The approval is recorded
per-call.--approve boundary crossing emits an
audit-logger.writeAuditLog({ action: 'scope_boundary_approved', details: { sprintId, from, to, trustLevel, stopAfter, approvedBy, reason } }) entry.
The --reason "..." value is the recorded rationale (null when omitted).--approve the legacy deadlock behavior is preserved: handler
returns { ok: false, reason: 'requires_user_approval', stopAfter, hint }.Use this when you want to advance past the scope boundary for one specific transition (e.g., L2 design → do after design review) without permanently relaxing the trust level.
--approve does NOT bypass Quality Gate failures (v2.1.19 S1, CO-S0-6)Critical semantic clarification (added v2.1.19 S1 in response to S0 discovery of ambiguity — master plan carry-over CO-S0-6):
--approve is the Trust Level scope-boundary escape hatch ONLY.
It is NOT a Quality Gate override mechanism.
| Situation | --approve works? | Correct remediation |
|---|---|---|
Trust scope blocks transition (requires_user_approval) | ✅ Yes — single-use cross | Re-issue with --approve --reason "..." |
Quality Gate fails (gate_fail, e.g., M8=not_measured) | ❌ No — gate still blocks | Run /sprint measure <id> --gate <key> first, then re-issue phase |
| Both scope + gate fail | ❌ Gate wins | Measure gate, then --approve if scope still blocks |
Why this matters: in v2.1.19 S0 (master plan §23 step 0) we attempted
/sprint phase s0-sqm-baseline --to plan --approve and observed
{ ok: false, reason: 'gate_fail', ... } despite --approve. This is
expected behavior — --approve does not satisfy M8 designCompleteness.
Future work (deferred to v2.1.20+): --allowGateOverride flag may be
introduced as a gate override (with stronger audit + alarm trail than
--approve). Until then, gate failures must be resolved via /sprint measure.
/sprint trust <sprintId> --to <Level> [--reason "<text>"] [--force]
Mutate the stored sprint.autoRun.trustLevelAtStart for a specific
sprint. Unlike --approve (single-use scope boundary override, §10.1.2) or
--trustLevel L<N> (per-call volatile override), this command persists
the trust level across all subsequent operations on the sprint.
Use cases:
s1-foundation scenario).Example:
$ /sprint trust s1-foundation --to L3 --reason "P0 32/32 ready for measurement"
{
"ok": true,
"sprintId": "s1-foundation",
"from": "L1",
"to": "L3",
"reason": "P0 32/32 ready for measurement",
"actor": "user",
"forced": false,
"trustScoreAtMutation": null,
"blastRadius": "low",
"auditEntryId": "..."
}
$ /sprint measure s1-foundation --gate M1
{ "trustLevel": "L3", "mode": "record", "value": 92.3, ... } # ✦ now record modeDowngrade Guardrail:
Major downgrades (≥2 levels, e.g. L4 → L2 or L3 → L1) require:
trustScore >= 80 (from .bkit/state/trust-profile.json trustScore field
— 6-component weighted sum: pdcaCompletionRate 0.25 / gatePassRate 0.2 /
rollbackFrequency 0.15 / destructiveBlockRate 0.15 / iterationEfficiency 0.15
/ userOverrideRate 0.1), OR--force flag (explicit override + forced: true audit + blastRadius: 'high'
for Defense Layer 6 alarm).Minor downgrades (1-level diff, e.g. L3 → L2) are not blocked.
Idempotent Path:
from === to (e.g. --to L3 when sprint already at L3) returns
{ ok: true, noop: true } and also emits audit with noop: true field
(CTO §C3 review: monitoring blind-spot prevention — surfaces automation
patterns hitting idempotent paths).
Actor Auto-Detection (CTO §E6 spoofing mitigation):
actor field is auto-detected:
args.actor (if 'user'|'agent'|'system'), elseprocess.env.CLAUDE_AGENT_ID set → 'agent', else'user'.Audit:
Every mutation (including no-op) emits an audit-logger entry:
{
"action": "sprint_trust_changed",
"category": "sprint",
"actor": "user",
"target": "s1-foundation",
"targetType": "feature",
"blastRadius": "low",
"details": {
"sprintId": "s1-foundation",
"from": "L1",
"to": "L3",
"reason": "...",
"trustScoreAtMutation": null,
"forced": false,
"noop": false,
"actor": "user",
"timestamp": "2026-05-21T..."
}
}Comparison Table:
| Command | Scope | Persistence | Use When |
|---|---|---|---|
/sprint phase --to ... --approve | Single transition | Single-use (no state change) | One-time boundary override (#95) |
/sprint trust --to <L> ✦ | Whole sprint (this sprint only) | Persistent (sprint.autoRun.trustLevelAtStart) | Permanent policy change for this sprint |
/bkit:control level <N> | Global (all sprints + PDCA) | Persistent (~/.bkit/state/control.json) | Global automation policy change |
--trustLevel <L> (per-call) | Single call | Volatile (no state change) | One-time debug override |
All actions that accept a Trust Level recognize three input forms (handled
by normalizeTrustLevel in scripts/sprint-handler.js):
args.trustLevel (preferred, explicit handler arg)args.trust (CLI --trust L3 natural mapping)args.trustLevelAtStart (stored property leak; defensive only)Precedence: trustLevel > trust > trustLevelAtStart. Defaults to L2
when none provided or value is invalid (case-insensitive match against L0-L4).
v2.1.19 S1 F1-4 default change: default lowered from L3 to L2 per
Safe Defaults principle (master plan §3.2 Controllable AI Principles). The
handler now aligns with lib/domain/sprint/entity.js createSprint which
already defaulted to L2 — eliminates the v2.1.16~v2.1.18 drift between
handler default (L3) and entity default (L2).
--trust L1 explicit warning: when the user explicitly requests L1 at
/sprint init, the handler emits a stderr warning + audit
sprint_trust_warning event re: preview-mode lockout risk
(v2.1.18 #101 follow-up). The warning is education-only — L1 sprint init
still succeeds.
When the user invokes the skill with mixed slash command + natural language
(e.g., /sprint start S1-UX Phase 1 PRD please proceed thoroughly), the
LLM dispatcher SHOULD:
/sprint → action./^[a-z][a-z0-9-]{1,62}[a-z0-9]$/). Lowercase if
needed. Example: S1-UX → s1-ux.start action on an existing sprint, the
name field can be resolved by handleStatus({ id }) first; otherwise
fall back to the id itself.User: /sprint start s1-ux
LLM dispatch:
1. action = "start", id = "s1-ux"
2. status = await handleSprintAction("status", { id: "s1-ux" })
3. name = status.sprint.name // "S1-UX P0/P1 Quick Fixes"
4. await handleSprintAction("start", { id: "s1-ux", name })
5. Handler invokes load-then-resume path (P0 fix) — phase preservedUser: /sprint start S1-UX Phase 1 PRD proceed thoroughly
LLM dispatch:
1. action = "start"
2. Candidates: ["s1-ux"] (kebab-case extracted from "S1-UX")
3. AskUserQuestion: "Did you mean to start sprint 's1-ux' and continue
with Phase 1 (PRD)?" → user confirms
4. await handleSprintAction("start", { id: "s1-ux", ... })Handler returns { ok: false, error: <string>, ... } on failure. LLM
dispatcher SHOULD surface the error verbatim to the user and offer
remediation (e.g., for error: 'Sprint not found', suggest /sprint list).
The same handler is invokable as a standalone CLI when run as
node scripts/sprint-handler.js <action> [id] [--flags]. Useful for
headless tests, debugging, and CI integration. The CLI parser accepts
--key value and --key=value forms, with the first positional argument
after action treated as id if no --id flag is provided.
Exit codes: 0 (success), 1 (handler returned ok: false), 2
(exception thrown).
The master-plan action generates a multi-sprint roadmap via the
bkit:sprint-master-planner agent (isolated subagent spawn) and persists
both markdown documentation and state JSON.
USER: /sprint master-plan q2-launch --name "Q2 Launch" --features auth,payment
|
SKILL.md dispatches -> scripts/sprint-handler.js handleMasterPlan
|
handleMasterPlan calls lib/application/sprint-lifecycle/master-plan.usecase.js generateMasterPlan
|
generateMasterPlan validates input + loads existing state (idempotent check)
|
If deps.agentSpawner provided: spawn bkit:sprint-master-planner agent -> markdown
If not: dry-run via templates/sprint/master-plan.template.md substitution
|
Atomic write: .bkit/state/master-plans/<projectId>.json (state first)
|
File write: docs/01-plan/features/<projectId>.master-plan.md (markdown)
|
Audit: lib/audit/audit-logger.js writeAuditLog({ action: 'master_plan_created' })
|
Optional Task wiring: deps.taskCreator called N times for N sprint tasks--force flag: overwrites both state JSON and markdown. Audit entry has
details.forceOverwrite: true.'master_plan_created' for both cases (PM-S2G).When the caller (LLM dispatcher at main session) does NOT inject
deps.agentSpawner, the use case generates a minimal valid markdown by
substituting variables in templates/sprint/master-plan.template.md. The
output is a skeleton — header, context anchor placeholders, empty features
table, empty sprints array. This dry-run mode is useful for unit tests and
when the user wants a starting template to fill manually.
When deps.agentSpawner is injected, the use case calls it with
{ subagent_type: 'bkit:sprint-master-planner', prompt: <built> } and uses
the returned output field as the markdown content.
The state JSON at .bkit/state/master-plans/<projectId>.json:
{
"schemaVersion": "1.0",
"projectId": "q2-launch",
"projectName": "Q2 Launch",
"features": ["auth", "payment", "reports"],
"sprints": [],
"dependencyGraph": {},
"trustLevel": "L3",
"context": { "WHY": "", "WHO": "", "RISK": "", "SUCCESS": "", "SCOPE": "" },
"generatedAt": "2026-05-12T20:00:00Z",
"updatedAt": "2026-05-12T20:00:00Z",
"masterPlanPath": "docs/01-plan/features/q2-launch.master-plan.md"
}The sprints array is populated by the S3-UX context-sizer.js use case.
S2-UX leaves it as an empty stub.
When the caller injects deps.taskCreator, the use case iterates
plan.sprints sequentially (ENH-292 caching alignment) and calls
deps.taskCreator(...) once per planned sprint with addBlockedBy populated
from the previous sprint's task ID. This enables automatic Task list creation
for multi-sprint roadmaps.
When deps.taskCreator is undefined or plan.sprints.length === 0, Task
creation is silently skipped (no error).
© ww-w-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files in skills/sprint of ww-w-ai/bkit-claude-code.
Open the folder on GitHubat commit 85b4913
Sprint next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sprint this skillww-w-ai/bkit-claude-code | 601 | — | ~6.7k | Automated safety check: Notes | Apache-2.0 | |
| Convex Create Componentspokvulcan/poker-planning | 115 | 8 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Convex Migration Helperspokvulcan/poker-planning | 115 | 8 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Agile Product Owneralirezarezvani/claude-skills | 28k | 3 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Convex Performance Auditspokvulcan/poker-planning | 115 | 7 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Walking Skeleton Roadmap Scopingprime-radiant-inc/iterative-development | 181 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 |
spokvulcan/poker-planning
Builds reusable Convex components with isolated tables and app-facing APIs.
spokvulcan/poker-planning
Plans Convex schema and data migrations with widen-migrate-narrow and @convex-dev/migrations.
alirezarezvani/claude-skills
Writes INVEST-checked user stories with acceptance criteria, splits epics, plans sprints from velocity and ranks the backlog with a weighted score.
spokvulcan/poker-planning
Audits Convex performance for reads, subscriptions, write contention, and function limits.
prime-radiant-inc/iterative-development
Turns extracted requirements into a roadmap by choosing a walking skeleton iteration with its first journey scenario and ordering the remaining work into follow-on iterations.
spokvulcan/poker-planning
Routes general Convex requests to the right project skill. An agent skill from spokvulcan/poker-planning.
ww-w-ai/bkit-claude-code
View audit logs, decision traces, and session history for AI transparency.
ww-w-ai/bkit-claude-code
bkend.ai authentication — email/social login, JWT tokens, RBAC, session management.
ww-w-ai/bkit-claude-code
bkend.ai project tutorials (todo to SaaS) and common error troubleshooting.
ww-w-ai/bkit-claude-code
bkend.ai onboarding — MCP setup, resource hierarchy, tenant/user model, first project.
ww-w-ai/bkit-claude-code
bkend.ai file storage — upload (presigned URL), download (CDN), visibility levels, buckets.
ww-w-ai/bkit-claude-code
bkit plugin help - list available functions including /pdca (9-phase feature cycle), /sprint (8-phase feature container, v2.1.13), /control (Trust L0-L4 + SPRINTAUTORUNSCOPE), /bkit-explore, and 40+…
Categories
Sprint Management — generic sprint capability for ANY bkit user. Sprint is an agent skill from ww-w-ai/bkit-claude-code. Sprint Management — generic sprint capability for ANY bkit user.
Sprint fits situations like: tasks that involve Sprint planning and agile.
Run `npx skills add ww-w-ai/bkit-claude-code --skill sprint -a claude-code`. Or copy the skill folder (skills/sprint in ww-w-ai/bkit-claude-code) into .claude/skills/sprint in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ww-w-ai/bkit-claude-code --skill sprint -a codex`. Or copy the skill folder (skills/sprint in ww-w-ai/bkit-claude-code) into .agents/skills/sprint in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ww-w-ai/bkit-claude-code --skill sprint -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sprint, .gemini/skills/sprint, .github/skills/sprint and .opencode/skills/sprint in your project.
Going by SKILL.md and its folder, Sprint needs the command-line tools its instructions call (node). Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Sprint is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.7k tokens (SKILL.md is roughly 27k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Sprint: Convex Create Component (spokvulcan/poker-planning, 115 stars), Convex Migration Helper (spokvulcan/poker-planning, 115 stars), Agile Product Owner (alirezarezvani/claude-skills, 28k stars) and Convex Performance Audit (spokvulcan/poker-planning, 115 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ww-w-ai (a GitHub organization) maintains it in ww-w-ai/bkit-claude-code, which has 601 GitHub stars. The repository holds 44 skills in this directory. The repository was last updated on September 27, 2026.
Source: ww-w-ai/bkit-claude-code on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.