From jaan-to
Assesses project progress from ROADMAP.md gaps and git history to build prioritized sprint plans with execution queue. Use for sprint cycle planning.
npx claudepluginhub parhumm/jaan-to --plugin jaan-toThis skill is limited to using the following tools:
> Assess project state and build a prioritized sprint plan with execution queue.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Assess project state and build a prioritized sprint plan with execution queue.
$JAAN_CONTEXT_DIR/config.md - Project configuration$JAAN_CONTEXT_DIR/boundaries.md - Trust rules$JAAN_TEMPLATES_DIR/jaan-to-pm-sprint-plan.template.md - Sprint plan template$JAAN_LEARN_DIR/jaan-to-pm-sprint-plan.learn.md - Past lessons (loaded in Pre-Execution)$JAAN_CONTEXT_DIR/tech.md - Tech context (if exists)${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md - Language resolution protocol${CLAUDE_PLUGIN_ROOT}/docs/extending/pm-sprint-plan-reference.md - Reference tables and schemasArguments: $ARGUMENTS
Parse from arguments:
spec, scaffold, code, test, audit. If omitted, auto-detect from progress matrix bottleneck.- [ ] lines).
MANDATORY — Read and execute ALL steps in: ${CLAUDE_PLUGIN_ROOT}/docs/extending/pre-execution-protocol.md
Skill name: pm-sprint-plan
Execute: Step 0 (Init Guard) → A (Load Lessons) → B (Resolve Template) → C (Offer Template Seeding)
Also read context files if available:
$JAAN_CONTEXT_DIR/tech.md — Tech stack for skill filtering$JAAN_CONTEXT_DIR/config.md — Project configurationIf the file does not exist, continue without it.
Read and apply language protocol: ${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md
Override field for this skill: language_pm-sprint-plan
Language exception: Generated sprint plans, skill names, YAML, and technical terms remain in English.
ultrathink
Use extended reasoning for:
Read all available project data. Handle missing files gracefully.
- [ ] items with their priority labels (P0, P1, etc.) and section groupings.
/jaan-to:pm-roadmap-add to generate."gap-reports/*-cycle/ directories. Read the latest gap report.
scorecards/ directory. Read recent scorecards for trend data.
launch-gaps.md if it exists.
$JAAN_CONTEXT_DIR/tech.md for stack-specific skill filtering.
Record which data sources were found and which were skipped.
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/pm-sprint-plan-reference.mdsection "Progress Matrix Calculation" for formulas, evidence types, and weighting rules.
If gap reports exist: Calculate percentages from concrete evidence:
| Dimension | How to Measure |
|---|---|
| Specification | PRD exists + stories written + acceptance criteria defined |
| Scaffold | Project structure created + API contracts + data models |
| Production Code | Service implementations + frontend components + integrations |
| Tests | Test coverage + test passing + mutation score |
| Infrastructure | Docker/CI + deployment config + monitoring |
If gap reports missing: Skip this step. Record: "Progress matrix unavailable — gap reports not found."
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/pm-sprint-plan-reference.mdsection "Bottleneck State Machine" for state definitions and transition rules.
If progress matrix available: Determine project stage:
| Stage | Condition | Focus |
|---|---|---|
| ideation-to-spec | Spec < 50% | Specification skills |
| spec-to-scaffold | Spec ≥ 50%, Scaffold < 30% | Scaffold skills |
| scaffold-to-code | Scaffold ≥ 30%, Code < 30% | Implementation skills |
| code-to-tested | Code ≥ 30%, Tests < 30% | Testing skills |
| tested-to-deployed | Tests ≥ 30%, Infra < 30% | DevOps skills |
| quality-and-polish | All ≥ 30% | Audit + polish skills |
If --focus argument provided, override auto-detected bottleneck.
If progress matrix unavailable: Use --focus if provided. Otherwise default to spec stage.
For each unchecked ROADMAP item:
If --tasks filter is active, only include matching items.
Mapping rules:
pm-prd-write, pm-story-writebackend-task-breakdown, backend-scaffold, backend-service-implementfrontend-task-breakdown, frontend-scaffoldqa-test-generate, qa-tdd-orchestratedevops-infra-scaffoldsec-audit-remediatedocs-create, docs-updateIf a task cannot be mapped to any skill, flag it as "MANUAL" — requires direct implementation.
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/pm-sprint-plan-reference.mdsection "Execution Queue Algorithm" for priority sources, scoring, and ordering rules.
Build a prioritized queue of max 12 items from 7 priority sources:
| Source | Priority | Description |
|---|---|---|
| 1. P0 blockers | Highest | Critical path items from gap reports |
| 2. --tasks filter | High | User-specified task keywords |
| 3. Bottleneck skills | Medium-High | Skills that address the classified bottleneck |
| 4. P1 features | Medium | Important but not blocking |
| 5. Quick wins | Low-Medium | Small tasks completable in one skill invocation |
| 6. Untested skills | Low | Skills not yet validated in this project |
| 7. Closing skills | Always | detect-pack, release-iterate-changelog (always included) |
Source 7 (closing skills) ALWAYS runs regardless of other selections. Reserve 2 queue slots for closing skills.
Order items within each source by dependency (prerequisites first).
For each queue item, flag risks:
Present the complete sprint plan to the user.
SPRINT PLAN
───────────
Data Sources: {list_found_and_skipped}
PROGRESS MATRIX (if available)
──────────────────────────────
Specification: {spec_pct}% {bar}
Scaffold: {scaffold_pct}% {bar}
Production Code: {code_pct}% {bar}
Tests: {test_pct}% {bar}
Infrastructure: {infra_pct}% {bar}
BOTTLENECK: {stage_name}
FOCUS: {focus_area}
EXECUTION QUEUE ({count}/12 items)
──────────────────────────────────
{numbered_list_with_skill_and_role}
TASK GROUPS
───────────
Group 1: {group_description}
1. {skill_invocation} — {description}
2. {skill_invocation} — {description}
Group 2: {group_description}
3. {skill_invocation} — {description}
...
RISKS
─────
{risk_flags}
MULTI-MATCH KEYWORDS (if any)
─────────────────────────────
{keyword}: matched {count} items
UNMATCHED KEYWORDS (if any)
───────────────────────────
{keyword}: no matching ROADMAP items
DEFERRED (items beyond queue capacity)
──────────────────────────────────────
{deferred_items}
"Approve this sprint plan? [y/approve/edit/n]"
Do NOT proceed without explicit approval.
Use the template from: $JAAN_TEMPLATES_DIR/jaan-to-pm-sprint-plan.template.md
Fill all sections with the approved plan data.
source "${CLAUDE_PLUGIN_ROOT}/scripts/lib/id-generator.sh"
SUBDOMAIN_DIR="$JAAN_OUTPUTS_DIR/pm/sprint-plan"
mkdir -p "$SUBDOMAIN_DIR"
NEXT_ID=$(generate_next_id "$SUBDOMAIN_DIR")
slug="sprint-plan"
OUTPUT_FOLDER="${SUBDOMAIN_DIR}/${NEXT_ID}-${slug}"
MAIN_FILE="${OUTPUT_FOLDER}/${NEXT_ID}-${slug}.md"
mkdir -p "$OUTPUT_FOLDER"
Write the sprint plan artifact to $MAIN_FILE using the filled template.
The artifact MUST include a machine-readable YAML block at the top for consumption by team-ship --track sprint:
---
type: sprint-plan
version: 1
created: {date}
focus: {focus_area}
bottleneck: {stage_name}
progress: # Omit section entirely if gap reports unavailable
specification: {0-100}
scaffold: {0-100}
production_code: {0-100}
tests: {0-100}
infrastructure: {0-100}
queue_count: {count}
queue:
- id: 1
skill: {skill_name}
role: {role}
args: "{arguments}"
group: {group_number}
depends_on: []
roadmap_ref: "{original_roadmap_line}"
- id: 2
skill: {skill_name}
role: {role}
args: "{arguments}"
group: {group_number}
depends_on: [1]
roadmap_ref: "{original_roadmap_line}"
closing_skills:
- detect-pack
- release-iterate-changelog
deferred: # Omit if no items deferred
- title: "{deferred_item}"
reason: "{why_deferred}"
priority_boost: true
---
Before writing the artifact, verify:
queue_count equals actual queue array lengthdepends_on IDs reference valid id values in the queuegroup numbers are sequential (1, 2, 3...) with no gapsclosing_skills is present and non-emptyIf validation fails → present errors to user, do NOT write. Offer to fix.
source "${CLAUDE_PLUGIN_ROOT}/scripts/lib/index-updater.sh"
add_to_index \
"$SUBDOMAIN_DIR/README.md" \
"$NEXT_ID" \
"${NEXT_ID}-${slug}" \
"Sprint Plan" \
"{1-2 sentence summary of sprint focus and queue size}"
Confirm:
Sprint plan written to: {MAIN_FILE} This artifact can be consumed by
/team-sprintor/team-ship --track sprint.
"Any feedback on this sprint plan? [y/n]"
If yes:
/jaan-to:learn-add pm-sprint-plan "{feedback}"If no: Sprint plan workflow complete.
$JAAN_OUTPUTS_DIR/pm/sprint-plan/