--- name: git-worktree-status description: "Check status of background verification tasks running in a git worktree" --- # Git Worktree Status Check background verification tasks (type check, tests, build) launched by `/git-worktree`. **Core principle:** Non-blocking feedback on worktree health without interrupting development flow. **Part of:** [Worktree Lifecycle Suite](./git-worktree.md) | [`/git-worktree`](./git-worktree.md) | [`/git-worktree-remove`](./git-worktree-remove.md) | [`/git-worktree-clean`](./git-worktree-clean.md) ## Process 1. **Detect Current Worktree**: Verify we're inside a git worktree 2. **Check Log Files**: Read `.worktree-logs/` for background task results 3. **Parse Results**: Extract pass/fail counts, errors 4. **Report Status**: Color-coded summary with actionable next steps ## Worktree Detection ```bash # Check if inside a worktree (not main repo) git rev-parse --git-common-dir 2>/dev/null | grep -q "\.git/worktrees" || { echo "Not inside a worktree. Use from a worktree directory." exit 1 } # Get worktree info WORKTREE_PATH=$(git rev-parse --show-toplevel) BRANCH=$(git rev-parse --abbrev-ref HEAD) MAIN_REPO=$(git rev-parse --git-common-dir | sed 's|/\.git/worktrees/.*||') ``` ## Background Task Checks ### Type Check Status ```bash LOG=".worktree-logs/typecheck.log" if [ -f "$LOG" ]; then if grep -q "error TS" "$LOG"; then ERROR_COUNT=$(grep -c "error TS" "$LOG") echo "Type check: FAIL ($ERROR_COUNT errors)" # Show first 5 errors grep "error TS" "$LOG" | head -5 else echo "Type check: PASS" fi elif pgrep -f "tsc --noEmit" > /dev/null; then echo "Type check: RUNNING..." else echo "Type check: NOT RUN" fi ``` ### Test Status ```bash LOG=".worktree-logs/tests.log" if [ -f "$LOG" ]; then if grep -q '"numFailedTests":0' "$LOG"; then TOTAL=$(grep -o '"numTotalTests":[0-9]*' "$LOG" | cut -d: -f2) echo "Tests: PASS ($TOTAL tests)" else FAILED=$(grep -o '"numFailedTests":[0-9]*' "$LOG" | cut -d: -f2) echo "Tests: FAIL ($FAILED failures)" # Show failed test names grep '"fullName"' "$LOG" | head -5 fi elif pgrep -f "vitest run" > /dev/null; then echo "Tests: RUNNING..." else echo "Tests: NOT RUN" fi ``` ### Build Status ```bash LOG=".worktree-logs/build.log" if [ -f "$LOG" ]; then if [ $? -eq 0 ]; then echo "Build: PASS" else echo "Build: FAIL" tail -10 "$LOG" fi elif pgrep -f "cargo build\|next build\|go build" > /dev/null; then echo "Build: RUNNING..." else echo "Build: NOT RUN" fi ``` ## Report Format ``` Worktree Status: .worktrees/feat/auth Branch: feat/auth (from main, 3 commits ahead) Checks: Type check: PASS Tests: PASS (142 tests) Build: NOT RUN Dependencies: symlinked from main Disk usage: 2.3 MB (excl. node_modules) Log files: .worktree-logs/ ``` **If failures detected:** ``` Worktree Status: .worktrees/feat/auth Branch: feat/auth (from main, 3 commits ahead) Checks: Type check: FAIL (3 errors) src/auth.ts:42 - error TS2345: Argument of type 'string' is not assignable src/auth.ts:67 - error TS2304: Cannot find name 'AuthConfig' src/middleware.ts:12 - error TS7006: Parameter 'req' implicitly has an 'any' type Tests: FAIL (2 failures) auth.test.ts > should validate token auth.test.ts > should reject expired token Build: NOT RUN Action: Fix type errors before proceeding. Run `npx tsc --noEmit` for full output. ``` ## Log Management ```bash # Clean old logs (useful for re-running checks) rm -rf .worktree-logs/*.log # Re-run all checks npx tsc --noEmit > .worktree-logs/typecheck.log 2>&1 & npx vitest run --reporter=json > .worktree-logs/tests.log 2>&1 & ``` ## Quick Reference | Situation | Output | |-----------|--------| | All checks pass | Green status, ready to work | | Checks still running | "RUNNING..." with PID | | Type errors found | Error count + first 5 errors | | Test failures | Failure count + failed test names | | No logs found | "NOT RUN" (use `--fast` or logs deleted) | | Not in worktree | Error message with instructions | ## Usage ``` /git-worktree-status ``` No arguments needed. Run from inside any worktree directory.