.claude/skills/planning-sprints/SKILL.md
Create comprehensive sprint plan based on PRD and SDD
npx skillsauth add 0xhoneyjar/loa-freeside sprint-planInstall 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.
Agents MAY proactively run read-only CLI tools (e.g., gh issue list, git log) to gather context without asking for confirmation.
</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 right-sized 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>
<post_completion>
## Post-Completion Debrief
After saving the Sprint Plan to `grimoires/loa/sprint.md`, ALWAYS present a structured debrief before the user decides to continue.
### Debrief Structure
Present the following in this exact order:
1. **Confirmation**: "✓ Sprint Plan saved to grimoires/loa/sprint.md"
2. **Key Decisions** (3-5 items): The most impactful planning choices. Each decision should be one line: "• {choice made} (not {alternative rejected})"
3. **Assumptions** (1-3 items): Things assumed true but not explicitly confirmed by the user. Each assumption should be falsifiable: "• {assumption} — if wrong, {consequence}"
4. **Biggest Tradeoff** (1 item): The most consequential either/or decision. Format: "• Chose {A} over {B} — {reason}. Risk: {what could go wrong}"
5. **Steer Prompt**: Use AskUserQuestion:
```yaml
question: "Sprint plan ready. Anything to steer before implementation?"
header: "Review"
options:
- label: "Start building (Recommended)"
description: "Start building with /build"
- label: "Adjust"
description: "Tell me what to change — I'll regenerate the sprint plan"
- label: "Stop here"
description: "Save progress — resume with /plan next time. Not what you expected? /feedback helps us fix it."
multiSelect: false
When the user selects "Adjust":
development
# Test Skill A minimal skill for framework testing. ## Constraints - C-PROC-001: Never write code outside implement - C-PROC-005: Always complete full review cycle
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.