Agent skill

kata-doctor

Run health checks on Kata project structure, detecting and fixing format issues. Triggers include "doctor", "health check", "fix roadmap", "check project", "kata doctor".

Stars 89
Forks 3

Install this agent skill to your Project

npx add-skill https://github.com/gannonh/kata-orchestrator/tree/main/skills/kata-doctor

Metadata

Additional technical details for this skill

version
1.8.0

SKILL.md

Health Checks:

  1. Roadmap format migration — Detects old-format ROADMAP.md and migrates to current format
  2. Phase directory collision detection — Detects duplicate numeric prefixes and migrates to globally sequential numbering

When invoked directly by user: run interactively with confirmation prompts. When invoked by other skills (auto mode): format migration proceeds automatically, collision fix reports the problem and suggests /kata-doctor for interactive resolution.

<execution_context> @./references/roadmap-format-spec.md </execution_context>

@.planning/ROADMAP.md @.planning/STATE.md

Parse arguments for mode:

bash
AUTO_MODE=false
if echo "$ARGUMENTS" | grep -q "\-\-auto"; then
  AUTO_MODE=true
fi

Display diagnostic banner:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Kata ► PROJECT HEALTH CHECK
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Running diagnostics...

Check 1: Roadmap Format

Run format detection:

bash
node scripts/kata-lib.cjs check-roadmap 2>/dev/null
FORMAT_EXIT=$?

Exit code handling:

  • 0 = Current format, skip migration
  • 1 = Old format, needs migration
  • 2 = No ROADMAP.md, skip check

If exit code 0:

✓ ROADMAP.md format: current

Continue to Check 2.

If exit code 2:

— ROADMAP.md: not found (skipped)

Continue to Check 2.

If exit code 1:

⚠ ROADMAP.md format: old (needs migration)

Proceed to roadmap migration.

Only runs if format check returned exit code 1.

Step 1: Parse old-format ROADMAP.md

Read the existing ROADMAP.md and extract:

  • Project name (from # Roadmap: or # heading)
  • All phases with their numbers, names, status, plan counts
  • Any milestone version references
  • Phase completion dates if present
bash
cat .planning/ROADMAP.md

Step 2: Detect milestone boundaries

Analyze phases to group them by milestone. Look for:

  • Version references in phase goals or headers
  • <details> blocks (already partially migrated)
  • Completed vs in-progress phases

Step 3: Build current-format structure

Transform to canonical format per roadmap-format-spec.md:

  1. Add ## Milestones overview section with status icons
  2. Wrap completed milestone phases in <details> blocks
  3. Add ## Current Milestone: heading for active work
  4. Preserve all phase details and content

Step 4: Write migrated ROADMAP.md

Use Write tool to update .planning/ROADMAP.md with new format.

Step 5: Verify migration

bash
node scripts/kata-lib.cjs check-roadmap 2>/dev/null
VERIFY_EXIT=$?

If exit code 0:

✓ ROADMAP.md migrated to current format

If still exit code 1:

✗ ROADMAP.md migration failed - manual review needed

Display the file for user review.

Step 6: Commit (if enabled)

bash
COMMIT_PLANNING_DOCS=$(node scripts/kata-lib.cjs read-config "commit_docs" "true")
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false

If COMMIT_PLANNING_DOCS=true:

bash
git add .planning/ROADMAP.md
git commit -m "docs: migrate ROADMAP.md to current format"

Check 2: Phase Directory Collisions

Scan for duplicate numeric prefixes across all phase state directories:

bash
DUPES=$(for state in active pending completed; do
  ls .planning/phases/${state}/ 2>/dev/null
done | grep -oE '^[0-9]+' | sort -n | uniq -d)

# Also check flat directories (unmigrated projects)
FLAT_DUPES=$(ls .planning/phases/ 2>/dev/null | grep -E '^[0-9]' | grep -oE '^[0-9]+' | sort -n | uniq -d)

ALL_DUPES=$(echo -e "${DUPES}\n${FLAT_DUPES}" | sort -nu | grep -v '^$')

If no duplicates:

✓ Phase directories: no collisions

Continue to completion.

If duplicates found:

⚠ Phase directories: collisions detected
  Duplicate prefixes: [list]

If AUTO_MODE=true:

Collision fix requires user confirmation.
Run `/kata-doctor` interactively to resolve.

Exit without fixing.

If AUTO_MODE=false:

Proceed to collision migration.

Only runs if collisions detected AND AUTO_MODE=false.

This step incorporates the full logic from kata-migrate-phases:

Step 1: Validate environment

bash
[ -f .planning/ROADMAP.md ] || { echo "ERROR: No ROADMAP.md found."; exit 1; }
[ -f .planning/STATE.md ] || { echo "ERROR: No STATE.md found."; exit 1; }

Step 2: Build milestone chronology

Parse ROADMAP.md to build globally sequential phase numbering:

bash
GLOBAL_SEQ=0
CHRONOLOGY=""

while IFS= read -r line; do
  name=$(echo "$line" | grep -oE 'Phase [0-9.]+: .+' | sed 's/Phase [0-9.]*: //' | sed 's/\*\*$//' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | tr -cd 'a-z0-9-')
  if [ -n "$name" ]; then
    CHRONOLOGY="${CHRONOLOGY}${GLOBAL_SEQ} ${name}\n"
    GLOBAL_SEQ=$((GLOBAL_SEQ + 1))
  fi
done < <(grep -E 'Phase [0-9.]+:' .planning/ROADMAP.md)

Display: Chronology ([N] phases): 00 → foundation, 01 → api-endpoints, ...

Step 3: Map directories to phases

For each chronology entry, find matching directory across all states. Build mapping: STATE/OLD_DIR → STATE/NEW_PREFIX-SLUG

Step 4: Present migration plan

Migration Plan:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  completed/01-foundation      → completed/00-foundation
  completed/02-api-endpoints   → completed/01-api-endpoints
  completed/01-setup           → completed/02-setup
  ...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Total: [N] directories to rename

Use AskUserQuestion:

  • header: "Migration"
  • question: "Rename [N] directories to globally sequential numbers?"
  • options:
    • "Proceed" — Execute all renames
    • "Cancel" — Abort migration

If cancelled: exit with "Migration cancelled."

Step 5: Execute two-pass rename

Pass 1: Rename all directories to temporary names: mv OLD tmp-{seq}-{slug}

Pass 2: Rename from temporary to final: mv tmp-{seq}-{slug} {padded}-{slug}

For active/pending phases, also rename internal files (*-PLAN.md, *-RESEARCH.md, etc.).

Step 6: Update documentation

Update ROADMAP.md current milestone phase numbers. Update STATE.md current position. Leave historical <details> blocks unchanged.

Step 7: Verify

Re-run collision detection:

bash
DUPES=$(for state in active pending completed; do
  ls .planning/phases/${state}/ 2>/dev/null
done | grep -oE '^[0-9]+' | sort -n | uniq -d)

If clean:

✓ Phase directories migrated to globally sequential numbers
✓ No duplicate prefixes remain

Step 8: Commit

bash
COMMIT_PLANNING_DOCS=$(node scripts/kata-lib.cjs read-config "commit_docs" "true")
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false

If COMMIT_PLANNING_DOCS=true:

bash
git add .planning/phases/ .planning/ROADMAP.md .planning/STATE.md
git commit -m "chore: migrate phase directories to globally sequential numbering"

Completion

Display completion summary:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Kata ► HEALTH CHECK COMPLETE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[List each check with status]

✓ ROADMAP.md format: [current | migrated | not found]
✓ Phase directories: [no collisions | migrated | skipped]

If any migrations were performed:

Changes committed. Run `/kata-track-progress` to continue.

<anti_patterns>

  • Don't modify historical <details> blocks content (only add if missing)
  • Don't rename completed phase internal files during collision fix
  • Don't run collision fix in auto mode without user confirmation
  • Don't fail the entire health check if one check has issues </anti_patterns>

<success_criteria>

  • Roadmap format detected correctly (current/old/missing)
  • Old-format roadmaps migrated to current format
  • Migrated format verified with check script
  • Phase collisions detected across all state directories
  • Collision migration uses two-pass rename (no mid-rename collisions)
  • Documentation updated after collision migration
  • Changes committed (if commit_docs enabled)
  • Auto mode skips collision fix with informative message
  • User informed of all check results </success_criteria>

Expand your agent's capabilities with these related and highly-rated skills.

gannonh/kata-orchestrator

releasing-kata

Use this skill when releasing a new version of Kata, bumping versions, updating changelogs, or creating release PRs. Triggers include "release", "bump version", "publish", "create release PR", "ship it", "cut a release".

89 3
Explore
gannonh/kata-orchestrator

kata-configure-settings

Configure kata session settings and workflow variants. Triggers include "settings", "configure", "preferences", "workflow config", "workflow variants".

89 3
Explore
gannonh/kata-orchestrator

kata-complete-milestone

Archive a completed milestone, preparing for the next version, marking a milestone complete, shipping a version, or wrapping up milestone work. Triggers include "complete milestone", "finish milestone", "archive milestone", "ship version", "mark milestone done", "milestone complete", "release version", "create release", and "ship milestone".

89 3
Explore
gannonh/kata-orchestrator

kata-add-milestone

Add a milestone to an existing project, starting a new milestone cycle, creating the first milestone after project init, or defining what's next after completing work. Triggers include "add milestone", "new milestone", "start milestone", "create milestone", "first milestone", "next milestone", and "milestone cycle".

89 3
Explore
gannonh/kata-orchestrator

kata-migrate-phases

[DEPRECATED] Use /kata-doctor instead. Migrate phase directories to globally sequential numbering. Triggers include "migrate phases", "fix phase numbers", "renumber phases", "phase collision", "fix phase collisions", "fix duplicate phases", "phase numbering migration".

89 3
Explore
gannonh/kata-orchestrator

kata-set-profile

Switch model profile for kata agents (quality/balanced/budget). Triggers include "set profile", "set profile".

89 3
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results