| name | plan-status |
| description | Show current status and progress of active feature plans. Pass a stage filename to refresh it against the current codebase. |
| argument-hint | [feature-name] | refresh <stage-file> |
Plan Status
Display current status and progress for active feature plans.
When to Use
Use this when:
- Want to see all active plans at a glance
- Need to check progress on a specific feature
- Daily standup / status review
- Deciding what to work on next
Usage
/plan-status โ show all active plans
/plan-status <feature-name> โ show details for specific plan
/plan-status refresh <stage-file> โ refresh a stage plan against current codebase
Instructions
If first argument is refresh, run the Refresh Stage Plan flow below.
Otherwise, run the standard plan status display.
Refresh Stage Plan (when refresh <stage-file> is passed)
Refreshes a stage plan to account for decisions and changes made during prior stages.
- Find and read the stage plan file at
plans/active/$STAGE_FILE.md (add .md if not present; also check plans/archive/)
- Read the master plan at
plans/README.md
- Read completed stage plans from
plans/archive/ to understand what was actually built
- Read project conventions:
CLAUDE.md, .claude/rules/architecture.md, .claude/rules/api-conventions.md
- Scan the actual codebase: list key source directories, grep for exported interfaces/types/functions this stage depends on, look at established patterns and test utilities
- Compare the stage plan against reality โ identify drift in file paths, imports, interfaces, dependencies, and architectural decisions
- Rewrite the stage plan file with corrections: update file paths, imports, code snippets, test code, and verification commands to reflect the real codebase
- Display summary of what changed:
Stage [N] plan refreshed:
Updated:
- [task]: [what changed]
Architecture notes:
- [any decisions from prior stages that affect this stage]
Without Feature Name: Show All Plans
echo "๐ Active Feature Plans"
echo "======================"
echo ""
if [ ! -d "plans/active" ] || [ -z "$(ls -A plans/active 2>/dev/null)" ]; then
echo "No active plans found"
echo ""
echo "Create a plan with: /create-plan <feature-name>"
exit 0
fi
for plan_dir in plans/active/*; do
if [ -d "$plan_dir" ]; then
FEATURE_NAME=$(basename "$plan_dir")
PLAN_FILE="$plan_dir/plan.md"
if [ -f "$PLAN_FILE" ]; then
TITLE=$(grep "^title:" "$PLAN_FILE" | sed 's/title: *//')
STATUS=$(grep "^status:" "$PLAN_FILE" | sed 's/status: *//')
TYPE=$(grep "^type:" "$PLAN_FILE" | sed 's/type: *//')
TOTAL_PHASES=$(grep -c " - id:" "$PLAN_FILE" || echo "0")
COMPLETED_PHASES=$(grep "status: completed" "$PLAN_FILE" | wc -l || echo "0")
case "$STATUS" in
planning) STATUS_EMOJI="๐" ;;
in_progress) STATUS_EMOJI="๐ง" ;;
testing) STATUS_EMOJI="๐งช" ;;
complete) STATUS_EMOJI="โ
" ;;
*) STATUS_EMOJI="โ" ;;
esac
echo "$STATUS_EMOJI $FEATURE_NAME"
echo " Title: $TITLE"
echo " Status: $STATUS"
echo " Progress: $COMPLETED_PHASES/$TOTAL_PHASES phases"
if [ -d "worktrees/$FEATURE_NAME" ]; then
echo " Worktree: โ
worktrees/$FEATURE_NAME"
fi
echo ""
fi
fi
done
echo "========================"
echo "Use: /plan-status <name> for details"
With Feature Name: Show Detailed Status
FEATURE_NAME="$1"
PLAN_DIR="plans/active/$FEATURE_NAME"
PLAN_FILE="$PLAN_DIR/plan.md"
if [ ! -f "$PLAN_FILE" ]; then
echo "โ Plan not found: $PLAN_FILE"
echo ""
echo "Available plans:"
ls -1 plans/active/ 2>/dev/null || echo " (none)"
exit 1
fi
TITLE=$(grep "^title:" "$PLAN_FILE" | sed 's/title: *//')
STATUS=$(grep "^status:" "$PLAN_FILE" | sed 's/status: *//')
TYPE=$(grep "^type:" "$PLAN_FILE" | sed 's/type: *//')
CREATED=$(grep "^created:" "$PLAN_FILE" | sed 's/created: *//')
echo "๐ Plan: $TITLE"
echo "========================================"
echo "Feature: $FEATURE_NAME"
echo "Type: $TYPE"
echo "Status: $STATUS"
echo "Created: $CREATED"
echo ""
echo "Phases:"
echo "-------"
awk '
/^phases:/ { in_phases=1; next }
in_phases && /^ - id:/ {
id=$3
getline; status=$3
printf " %s: %s\n", id, status
}
/^---/ && in_phases { exit }
' "$PLAN_FILE"
echo ""
TOTAL_TASKS=$(grep -c "^\- \[ \]" "$PLAN_FILE" || echo "0")
COMPLETED_TASKS=$(grep -c "^\- \[x\]" "$PLAN_FILE" || echo "0")
echo "Tasks:"
echo "------"
echo "Total: $TOTAL_TASKS"
echo "Completed: $COMPLETED_TASKS"
if [ "$TOTAL_TASKS" -gt 0 ]; then
PERCENT=$((COMPLETED_TASKS * 100 / TOTAL_TASKS))
echo "Progress: $PERCENT%"
BAR_WIDTH=20
FILLED=$((PERCENT * BAR_WIDTH / 100))
EMPTY=$((BAR_WIDTH - FILLED))
printf "["
printf "%${FILLED}s" | tr ' ' 'โ'
printf "%${EMPTY}s" | tr ' ' 'โ'
printf "] $PERCENT%%\n"
fi
echo ""
OPEN_QUESTIONS=$(grep "^## Open Questions" -A 100 "$PLAN_FILE" | grep "^\- \[ \]" | wc -l)
if [ "$OPEN_QUESTIONS" -gt 0 ]; then
echo "โ ๏ธ Open Questions: $OPEN_QUESTIONS"
echo ""
fi
echo "Success Criteria:"
echo "-----------------"
grep "^## Success Criteria" -A 20 "$PLAN_FILE" | grep "^\- \[" | head -5
echo ""
if [ -d "worktrees/$FEATURE_NAME" ]; then
echo "Worktree: โ
worktrees/$FEATURE_NAME"
cd "worktrees/$FEATURE_NAME"
BRANCH=$(git branch --show-current)
COMMITS=$(git log --oneline origin/main..HEAD 2>/dev/null | wc -l || echo "0")
echo "Branch: $BRANCH"
echo "Commits: $COMMITS"
cd - > /dev/null
else
echo "Worktree: โ Not created"
echo "Create with: /worktree-create $FEATURE_NAME"
fi
echo ""
echo "========================================"
echo "Plan file: $PLAN_FILE"
Example Usage
Show all plans:
/plan-status
Output:
๐ Active Feature Plans
======================
๐ง user-authentication
Title: User Authentication System
Status: in_progress
Progress: 2/4 phases
Worktree: โ
worktrees/user-authentication
๐ payment-integration
Title: Stripe Payment Integration
Status: planning
Progress: 0/3 phases
========================
Use: /plan-status <name> for details
Show specific plan details:
/plan-status user-authentication
Output:
๐ Plan: User Authentication System
========================================
Feature: user-authentication
Type: feature
Status: in_progress
Created: 2026-02-04
Phases:
-------
research: completed
design: completed
implementation: in_progress
testing: pending
Tasks:
------
Total: 18
Completed: 12
Progress: 66%
[โโโโโโโโโโโโโโโโโโโโ] 66%
Success Criteria:
-----------------
- [x] Users can sign up with email/password
- [x] Users can log in
- [ ] Password reset works
- [ ] Session management secure
- [ ] Tests pass
Worktree: โ
worktrees/user-authentication
Branch: feature/user-authentication
Commits: 8
========================================
Plan file: plans/active/user-authentication/plan.md
Status Dashboard View
For a quick team dashboard, you can create an alias:
alias plans='/plan-status'
plans
plans user-auth
Status Meanings
| Status | Emoji | Meaning |
|---|
planning | ๐ | Defining requirements, not started coding |
in_progress | ๐ง | Active development |
testing | ๐งช | Development complete, testing in progress |
review | ๐ | In code review |
complete | โ
| Done and merged |
blocked | ๐ | Waiting on dependency |
paused | โธ๏ธ | Temporarily stopped |
Integration with Git
Update status based on branch activity:
cd worktrees/feature-name
sed -i 's/status: planning/status: in_progress/' plans/active/feature-name/plan.md
Best Practices
Daily Routine:
- Run
/plan-status each morning
- Review open questions
- Update phase status as you progress
- Mark tasks complete as you go
Weekly Routine:
- Review all active plans
- Archive completed plans
- Re-prioritize if needed
- Update estimates based on progress
Status Updates:
- Update
status: field in frontmatter
- Update
phases[].status as you complete each
- Check off
- [ ] tasks as you finish them
- Add notes in the plan for important decisions
Tips
Keep Plans Updated:
- Update immediately after completing phases
- Don't wait until end of day
- Real-time status is most useful
Use with Stand-ups:
- Quick overview of all active work
- Shows what's blocked
- Identifies what needs attention
Tracking Progress:
- Checkbox completion = task level
- Phase status = milestone level
- Overall status = project level
Advanced: Auto-Update from Git
BRANCH=$(git branch --show-current)
FEATURE_NAME=$(echo $BRANCH | sed 's/feature\///')
PLAN_FILE="plans/active/$FEATURE_NAME/plan.md"
if [ -f "$PLAN_FILE" ]; then
sed -i 's/status: planning/status: in_progress/' "$PLAN_FILE"
fi
Troubleshooting
Plan not showing:
- Check file is in
plans/active/
- Verify
plan.md exists
- Check YAML frontmatter is valid
Progress not accurate:
- Use consistent checkbox format:
- [ ] and - [x]
- Don't use custom checkbox formats
- Ensure phases array in frontmatter is updated
Worktree status wrong:
- Verify worktree exists in
worktrees/
- Check naming matches plan directory
- Use
/worktree-create if missing