- Git worktree commands: overhauled main + 3 new (status, remove, clean) - Security hardening: AI Kill Switch & Containment Architecture (§3.5) - DevOps SRE: cross-reference to security-hardening for AI incidents - CC releases: v2.1.43-v2.1.44 tracking - reference.yaml: 12 new entries, evaluations count 67 → 74 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
164 lines
No EOL
4.1 KiB
Markdown
164 lines
No EOL
4.1 KiB
Markdown
---
|
|
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. |