.claude/skills/create-sprint/SKILL.md
Guide sprint planning from scope assessment to spec artifacts.
npx skillsauth add leogodin217/leos_claude_starter create-sprintInstall 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.
This command guides the sprint planning process.
Load and review:
docs/CAPABILITIES.md - What the system should do (includes status per capability)docs/architecture/README.md - Implementation status by moduleIdentify gaps: What capabilities are not started or partial?
Based on gaps and dependencies, propose what this sprint should deliver.
Scope can be:
Write a scope proposal:
## Proposed Scope
**Delivers:** [What this sprint produces]
**Capabilities touched:**
- actors: generated actors, properties (not arrivals, not lifecycle)
- entities: generated entities, properties
**Rationale:** [Why this scope makes sense—dependencies, complexity, coherence]
**Not included:** [What's explicitly deferred]
Present scope to user for approval before proceeding.
Once scope is approved, load relevant docs:
docs/architecture/README.md - See reading order for which docs to loaddocs/architecture/*.md - Design rationale and constraintsdocs/architecture/pending/*.md - Design doc for this feature (if one exists)If a design doc exists in pending/, extract contracts from it. The design doc provides rationale and semantics (the WHY). The sprint spec provides contracts, phases, and test cases (the WHAT). Do not duplicate prose from the design doc — reference it.
Write a clear purpose statement:
Use the architect agent to design interface contracts.
Each contract needs:
def function_name(
param1: Type1,
param2: Type2,
) -> ReturnType:
"""
One-line summary.
Args:
param1: Description
param2: Description
Returns:
Description
Raises:
ValueError: When X
"""
...
For modified functions, describe behavioral changes in the docstring. Do not show implementation diffs (for-loops, if-blocks, code to insert). The implementer writes the code; the contract says what the code should do.
Anti-scaffolding checklist:
# Future: comments in contractspass placeholders)Divide work into independently testable phases:
| Phase | Delivers | Demo Proves | |-------|----------|-------------| | 1 | Core functionality | Basic operation works | | 2 | Extended features | Full capability works | | N | Integration | End-to-end works |
Each phase must:
Demo scripts live in docs/sprints/current/demos/.
For each phase, specify:
Create docs/sprints/current/spec.md:
# Sprint: [Name]
## Purpose
[One sentence + educator use case]
## Scope
**Capabilities touched:**
- capability1: sub-capability A, sub-capability B
- capability2: sub-capability C
**Not included:** [What's deferred]
## Breaking Changes
Document any changes to existing public interfaces, field types becoming optional,
constructor signatures changing, or validator behavior changing. For each:
- What changes
- Why existing configs/code still work (or don't)
Omit this section if the sprint is purely additive.
## Success Criteria
- [ ] Criterion 1
- [ ] Criterion 2
## Contracts
[Function signatures with docstrings — no implementation code]
## Phases
### Phase 1: [Name]
**Delivers:** [What]
**Demo:** [What it proves]
**Contracts:** [Which functions from this phase]
**Files:**
| Action | File |
|--------|------|
| Modify | `packages/<pkg>/src/<module>.py` |
| Create | `packages/<pkg>/tests/<module>/test_<name>.py` |
**Tests:**
- Specific test case description (e.g., "Write single role twice: second overwrites first")
- Another specific test case
- Existing tests that must still pass
Test files go in the directory matching the code under test (e.g., `tests/journeys/` for journey code, `tests/config/rules/` for validation rules). Never create sprint-named test files or a `tests/sprints/` directory.
### Phase 2: [Name]
...
## What Doesn't Change
Explicit scope boundaries to prevent implementer drift. List functions, modules, or
behaviors that must NOT be modified even though they're adjacent to the work.
- [Function/module] stays as-is because [reason]
- [Existing behavior] is not affected because [reason]
## Module Changes Summary
Quick-reference table of all files touched across all phases:
| File | Change |
|------|--------|
| `path/to/file.py` | One-line summary of change |
Update docs/sprints/current/state.yaml:
sprint: sprint-name
started: YYYY-MM-DD
current_phase: 1
capabilities:
- actors: [generated, properties]
- entities: [generated, properties]
phases:
1: {status: pending}
2: {status: pending}
After sprint completes:
docs/CAPABILITIES.md status markers for touched capabilitiesdocs/architecture/README.md Implementation Status table if modules changeddocs/sprints/archive/When exploring existing code during planning, use LSP tools instead of Grep for structural queries:
| Task | Use | Not |
|------|-----|-----|
| Find where a class/function is defined | find_definition | Grep "def foo" |
| Find all callers/usages of a symbol | find_references | Grep "foo(" across dirs |
| Get type info without reading whole file | get_hover | Read entire file |
| Find what calls a function | get_incoming_calls | Grep "function_name" |
| Search for symbols by name | find_workspace_symbols | Glob + Grep |
Reserve Grep for pattern searches (anti-patterns, TODOs, regex matching).
Invoke the architect agent when you need to:
development
Spec-fidelity verification tracing requirements through code.
development
Analyze Claude Code session transcripts — search, summarize, list, or inspect how a session went.
testing
Course designer mode for creating exercises, configs, and QA criteria.
testing
System architect mode for designing interfaces, contracts, and architecture decisions.