From jaan-to
Orchestrates full development sprint cycles from planning to PR creation using git workflows, sub-skills, and automated orchestration. Use for advancing projects via structured cycles.
npx claudepluginhub parhumm/jaan-to --plugin jaan-toThis skill is limited to using the following tools:
> Full development sprint cycle — plan, execute, verify, and ship via PR.
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.
Full development sprint cycle — plan, execute, verify, and ship via PR.
$JAAN_CONTEXT_DIR/config.md - Project configuration$JAAN_CONTEXT_DIR/boundaries.md - Trust rules$JAAN_TEMPLATES_DIR/jaan-to-team-sprint.template.md - Cycle report template$JAAN_LEARN_DIR/jaan-to-team-sprint.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 protocolArguments: $ARGUMENTS
Parse from arguments:
5). If omitted, auto-detect by counting gap-reports/*-cycle/ directories + 1. If no gap-reports exist, default to 1.spec, scaffold, code, test, audit. Passed through to pm-sprint-plan.MANDATORY — Read and execute ALL steps in: ${CLAUDE_PLUGIN_ROOT}/docs/extending/pre-execution-protocol.md
Skill name: team-sprint
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 context$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_team-sprint
Language exception: Git operations, skill names, YAML, and technical terms remain in English.
ultrathink
Use extended reasoning for:
dev or a cycle branch. If not, ask user to switch.${CLAUDE_PLUGIN_ROOT} resolves and contains skills/. If not → "jaan-to plugin not found. Install or update the plugin."If cycle number provided in arguments, use it.
If not:
# Count existing cycle gap reports
CYCLE_COUNT=$(ls -d gap-reports/*-cycle 2>/dev/null | wc -l | tr -d ' ')
CYCLE_NUMBER=$((CYCLE_COUNT + 1))
If no gap-reports directory exists, default to cycle 1.
CYCLE_BRANCH="cycle/$(printf '%02d' "$CYCLE_NUMBER")"
git checkout dev
git pull origin dev
if git show-ref --verify --quiet "refs/heads/$CYCLE_BRANCH"; then
git checkout "$CYCLE_BRANCH"
else
git checkout -b "$CYCLE_BRANCH"
fi
If the branch already exists (retry after failure), switch to it. Otherwise create it.
Confirm: "On branch $CYCLE_BRANCH (from dev)."
Verify no secrets in tracked files before any commits:
git diff --name-only HEAD 2>/dev/null | tr '\n' '\0' | xargs -0 grep -liE '(sk-|ghp_|token=|password=|api_key=|secret=)' 2>/dev/null || true
If matches found → STOP: "Security risk detected. Remove secrets before proceeding."
Pass through user arguments to pm-sprint-plan:
/pm-sprint-plan [--focus {focus}] [--tasks {tasks}]
Forward --focus and --tasks from the user's original /team-sprint arguments. Omit flags the user did not provide.
This invokes the full pm-sprint-plan workflow:
Wait for pm-sprint-plan to complete. The approved sprint plan artifact will be at $JAAN_OUTPUTS_DIR/pm/sprint-plan/.
After pm-sprint-plan completes, read the sprint plan artifact:
SPRINT_PLAN=$(find "$JAAN_OUTPUTS_DIR/pm/sprint-plan" -name '*.md' -not -name 'README.md' -type f 2>/dev/null | sort -r | head -1)
Verify it contains:
type: sprint-planqueue array with at least 1 itemclosing_skills arrayIf verification fails → "Sprint plan artifact is invalid. Re-run /pm-sprint-plan."
cycle/XX remains. User can re-run /team-sprint to re-plan on the same branch./pm-sprint-plan manually to regenerate, then re-run /team-sprint.Pass the sprint plan to team-ship:
/team-ship --track sprint
team-ship reads the sprint plan artifact and:
Wait for team-ship to complete. This is the autonomous execution phase.
After team-ship completes, stage and commit:
git add -A
git commit -m "$(cat <<'EOF'
feat(cycle): complete cycle {CYCLE_NUMBER} execution
Sprint plan executed via team-sprint.
Skills completed: {completed_count}/{total_count}
EOF
)"
For each successfully completed queue item:
roadmap_ref from the sprint plan- [ ] line in ROADMAP.md- [x] and append commit hash# Example: mark item complete
# - [ ] Implement OAuth login → - [x] Implement OAuth login (abc1234)
Commit ROADMAP changes:
git add ROADMAP.md
git commit -m "docs(roadmap): mark cycle ${CYCLE_NUMBER} items complete"
Create gap report for this cycle at gap-reports/${CYCLE_NUMBER}-cycle/gap-report.md:
# Cycle {CYCLE_NUMBER} Gap Report
## Summary
- Sprint focus: {focus}
- Queue items: {completed}/{total} completed
- Skills executed: {skill_list}
## Completed
{list of completed items with skill and output paths}
## Incomplete
{list of items that failed or were skipped, with reasons}
## New Gaps Discovered
{gaps found during execution that weren't in the original plan}
## Recommendations for Next Cycle
{suggested focus and priority items for cycle N+1}
Commit:
git add gap-reports/
git commit -m "docs(gaps): add cycle ${CYCLE_NUMBER} gap report"
Invoke:
/release-iterate-changelog
Commit changelog updates separately.
git push -u origin "$CYCLE_BRANCH"
gh pr create \
--base dev \
--title "feat(cycle): cycle ${CYCLE_NUMBER} — {focus_summary}" \
--body "$(cat <<'EOF'
## Cycle {CYCLE_NUMBER} Summary
### Sprint Focus
{focus_area} — {bottleneck_stage}
### Execution Queue
{completed_count}/{total_count} items completed
### Skills Used
{skill_list_with_status}
### Changes
{file_change_summary}
### Gap Report
See gap-reports/{CYCLE_NUMBER}-cycle/gap-report.md
---
Sprint plan: $JAAN_OUTPUTS_DIR/pm/sprint-plan/{id}/
Executed via: /team-sprint
EOF
)"
Present PR URL to user.
CYCLE {CYCLE_NUMBER} — COMPLETE
────────────────────────────────
Branch: {CYCLE_BRANCH}
PR: #{pr_number} ({pr_url})
EXECUTION RESULTS
─────────────────
Completed: {completed_count}/{total_count}
Skills: {skill_names}
Focus: {focus_area}
PROGRESS DELTA (if available)
─────────────────────────────
Specification: {before}% → {after}%
Scaffold: {before}% → {after}%
Code: {before}% → {after}%
Tests: {before}% → {after}%
Infra: {before}% → {after}%
NEXT STEPS
──────────
Bottleneck: {next_bottleneck}
Suggested: /team-sprint {CYCLE_NUMBER + 1} --focus {suggested_focus}
"Any feedback on this sprint cycle? [y/n]"
If yes:
/jaan-to:learn-add team-sprint "{feedback}"If no: Cycle complete.