.claude/skills/planning-sprints/SKILL.md
--- parallel_threshold: null timeout_minutes: 60 zones: system: path: .claude permission: none state: paths: [grimoires/loa, .beads] permission: read-write app: paths: [src, lib, app] permission: read --- # Sprint Planner <objective> Transform PRD and SDD into actionable sprint plan with 2.5-day sprints, including deliverables, acceptance criteria, technical tasks, dependencies, and risk mitigation. Generate `grimoires/loa/sprint.md`. </objective> <zone_constrain
npx skillsauth add 0xhoneyjar/loa-beauvoir .claude/skills/planning-sprintsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
<zone_constraints>
This skill operates under Managed Scaffolding:
| Zone | Permission | Notes |
| --------------------------- | ---------- | ------------------------------------- |
| .claude/ | NONE | System zone - never suggest edits |
| grimoires/loa/, .beads/ | Read/Write | State zone - project memory |
| src/, lib/, app/ | Read-only | App zone - requires user confirmation |
NEVER suggest modifications to .claude/. Direct users to .claude/overrides/ or .loa.config.yaml.
</zone_constraints>
<integrity_precheck>
Before ANY operation, verify System Zone integrity:
yq eval '.integrity_enforcement' .loa.config.yamlstrict and drift detected -> HALT and reportwarn -> Log warning and proceed with caution
</integrity_precheck><factual_grounding>
Before ANY synthesis, planning, or recommendation:
"[exact quote]" (file.md:L45)[ASSUMPTION]Grounded Example:
The SDD specifies "PostgreSQL 15 with pgvector extension" (sdd.md:L123)
Ungrounded Example:
[ASSUMPTION] The database likely needs connection pooling
</factual_grounding>
<structured_memory_protocol>
grimoires/loa/NOTES.md<tool_result_clearing>
After tool-heavy operations (grep, cat, tree, API calls):
Example:
# Raw grep: 500 tokens -> After decay: 30 tokens
"Found 47 AuthService refs across 12 files. Key locations in NOTES.md."
</tool_result_clearing>
<attention_budget>
This skill follows the Tool Result Clearing Protocol (.claude/protocols/tool-result-clearing.md).
| Context Type | Limit | Action | | -------------------- | ------------- | ----------------------------------- | | Single search result | 2,000 tokens | Apply 4-step clearing | | Accumulated results | 5,000 tokens | MANDATORY clearing | | Full file load | 3,000 tokens | Single file, synthesize immediately | | Session total | 15,000 tokens | STOP, synthesize to NOTES.md |
grimoires/loa/NOTES.md"Planning: N requirements → M tasks → sprint.md"
</attention_budget><trajectory_logging>
Log each significant step to grimoires/loa/a2a/trajectory/{agent}-{date}.jsonl:
{"timestamp": "...", "agent": "...", "action": "...", "reasoning": "...", "grounding": {...}}
</trajectory_logging>
<kernel_framework>
Transform PRD and SDD into actionable sprint plan with 2.5-day sprints. Generate grimoires/loa/sprint.md.
grimoires/loa/prd.md (requirements), grimoires/loa/sdd.md (technical design)grimoires/loa/a2a/integration-context.md (if exists) for current state, priority signals, team capacity, dependenciesgrimoires/loa/prd.md AND grimoires/loa/sdd.md completelygrimoires/loa/a2a/integration-context.md for project state and prioritiesSuccess = Complete sprint plan saved to grimoires/loa/sprint.md + engineers can start immediately without clarification
Each sprint MUST include:
<uncertainty_protocol>
<grounding_requirements> Before creating sprint plan:
grimoires/loa/a2a/integration-context.md (if exists) for organizational contextgrimoires/loa/prd.md completely—extract all MVP featuresgrimoires/loa/sdd.md completely—understand technical architecture> From prd.md: FR-1.2: "..."> From sdd.md: §3.2 Database Design
</grounding_requirements><citation_requirements>
Beads task tracking is the EXPECTED DEFAULT. Check health before starting sprint planning.
health=$(.claude/scripts/beads/beads-health.sh --json)
status=$(echo "$health" | jq -r '.status')
| Status | Action |
| ------------------ | ---------------------------------------------- |
| HEALTHY | Proceed silently to Phase 0 |
| DEGRADED | Show recommendations, offer quick fix, proceed |
| NOT_INSTALLED | Check opt-out, prompt if needed |
| NOT_INITIALIZED | Check opt-out, prompt if needed |
| MIGRATION_NEEDED | Must address before proceeding |
| UNHEALTHY | Must address before proceeding |
Check for valid opt-out:
opt_out=$(.claude/scripts/beads/update-beads-state.sh --opt-out-check 2>/dev/null || echo "NO_OPT_OUT")
If no valid opt-out, present HITL gate using AskUserQuestion:
Beads Preflight Check
════════════════════════════════════════════════════════════
Status: {status}
Beads is not available. Task tracking is the EXPECTED DEFAULT
for safe, auditable agent workflows.
"We're building spaceships. Safety of operators and users is paramount."
Options:
[1] Install beads (Recommended)
└─ .claude/scripts/beads/install-br.sh
└─ Or: cargo install beads_rust
[2] Initialize beads
└─ br init
[3] Continue without beads (24h acknowledgment)
└─ Requires reason for audit trail
[4] Abort
If "Continue without beads" selected:
beads.opt_out.require_reason).claude/scripts/beads/update-beads-state.sh --opt-out "Reason"grimoires/loa/a2a/trajectory/beads-preflight-{date}.jsonlUpdate state after health check:
.claude/scripts/beads/update-beads-state.sh --health "$status"
Show recommendations but proceed:
Beads Health: DEGRADED
Recommendations:
$(echo "$health" | jq -r '.recommendations[]')
Proceeding with sprint planning...
See .claude/protocols/beads-preflight.md for full specification.
Check if grimoires/loa/ledger.json exists:
[ -f "grimoires/loa/ledger.json" ] && echo "EXISTS" || echo "MISSING"
If MISSING, use AskUserQuestion to offer creation:
No Sprint Ledger found at grimoires/loa/ledger.json
A Sprint Ledger provides:
• Global sprint numbering across development cycles
• Cycle tracking with PRD/SDD references
• Sprint history and metrics for retrospectives
Options:
[1] Create ledger (recommended)
[2] Continue without ledger
If user selects "Create ledger":
Create grimoires/loa/ledger.json with initial schema:
{
"version": "1.0.0",
"next_sprint_number": 1,
"active_cycle": "cycle-001",
"cycles": [
{
"id": "cycle-001",
"label": null,
"status": "active",
"created_at": "<ISO timestamp>",
"prd": "grimoires/loa/prd.md",
"sdd": "grimoires/loa/sdd.md",
"sprints": []
}
]
}
Log creation to trajectory: {"action": "ledger_created", "path": "grimoires/loa/ledger.json"}
If EXISTS, proceed to Step 1.
Check if grimoires/loa/a2a/auditor-sprint-feedback.md exists:
If exists + "CHANGES_REQUIRED":
If exists + "APPROVED - LETS FUCKING GO":
If missing:
Check if grimoires/loa/a2a/integration-context.md exists:
[ -f "grimoires/loa/a2a/integration-context.md" ] && echo "EXISTS" || echo "MISSING"
If EXISTS, read it to understand:
If MISSING, proceed with standard workflow using only PRD/SDD.
Read and synthesize both PRD and SDD, noting:
Identify gaps:
Ask clarifying questions about:
Wait for responses before proceeding. Questions should demonstrate deep understanding of the product and technical landscape.
Design sprint breakdown with:
Overall Structure:
Per Sprint (see template in resources/templates/sprint-template.md):
→ **[G-1]**Extract Goals from PRD:
| ID | Goal | Measurement | Validation Method |Create Goal Mapping:
→ **[G-N]** format⚠️ WARNING: Goal G-N has no contributing tasks⚠️ WARNING: No E2E validation task foundE2E Validation Task:
Self-Review Checklist:
Save to grimoires/loa/sprint.md.
</workflow>
<output_format>
See resources/templates/sprint-template.md for full structure.
Each sprint includes:
<success_criteria>
<planning_principles>
<beads_workflow>
When beads_rust (br) is installed, use it to track sprint structure:
br sync --import-only # Import latest state from JSONL
Use helper scripts for epic and task creation:
# Create sprint epic
EPIC_ID=$(.claude/scripts/beads/create-sprint-epic.sh "Sprint N: Theme" 1)
# Create tasks under epic
.claude/scripts/beads/create-sprint-task.sh "$EPIC_ID" "Task description" 2 task
# Add blocking dependencies between tasks
br dep add <blocked-task-id> <blocker-task-id>
Use labels instead of dependency types:
| Relationship | Label | Example |
| ----------------- | ---------------- | ------------------------------------- |
| Sprint membership | sprint:<n> | br label add beads-xxx sprint:1 |
| Epic association | epic:<epic-id> | Auto-added by create-sprint-task.sh |
| Review status | needs-review | br label add beads-xxx needs-review |
br sync --flush-only # Export SQLite → JSONL before commit
Protocol Reference: See .claude/protocols/beads-integration.md
After creating beads from the sprint plan, optionally run the Flatline Beads Loop to refine the task graph:
# Check if beads exist and br is available
if command -v br &>/dev/null && [[ $(br list --json 2>/dev/null | jq 'length') -gt 0 ]]; then
# Run iterative multi-model refinement
.claude/scripts/beads-flatline-loop.sh --max-iterations 6 --threshold 5
fi
This implements the "Check your beads N times, implement once" pattern:
When to use:
/sprint-plan creates tasks/run sprint-plan begins executionSkip when:
<visual_communication>
Follow .claude/protocols/visual-communication.md for diagram standards.
Sprint plans may benefit from visual aids for:
If including diagrams, use Mermaid with preview URLs:
## Appendix A: Task Dependencies
```mermaid
graph TD
T1[Task 1.1] --> T2[Task 1.2]
T1 --> T3[Task 1.3]
T2 --> T4[Task 1.4]
T3 --> T4
```
Preview: View diagram
### Theme Configuration
Read theme from `.loa.config.yaml` visual_communication.theme setting.
Diagram inclusion is **optional** for sprint plans - use agent discretion.
</visual_communication>
tools
Control headless Chrome via Cloudflare Browser Rendering CDP WebSocket. Use for screenshots, page navigation, scraping, and video capture when browser automation is needed in a Cloudflare Workers environment. Requires CDP_SECRET env var and cdpUrl configured in browser.profiles.
testing
# valid-skill Test skill with valid license for unit testing. ## Purpose Used in test_constructs_loader.bats to verify correct handling of valid licenses.
testing
# grace-skill Test skill in license grace period for unit testing. ## Purpose Used in test_constructs_loader.bats to verify correct handling of licenses in grace period.
testing
# expired-skill Test skill with expired license for unit testing. ## Purpose Used in test_constructs_loader.bats to verify correct handling of expired licenses.