uv-suite 0.28.0 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -35
  3. package/agents/claude-code/anti-slop-guard.md +14 -1
  4. package/agents/claude-code/architect.md +30 -4
  5. package/agents/claude-code/cartographer.md +18 -6
  6. package/agents/claude-code/eval-writer.md +7 -2
  7. package/agents/claude-code/reviewer.md +5 -1
  8. package/agents/claude-code/spec-writer.md +30 -7
  9. package/agents/generate.py +88 -0
  10. package/bin/cli.js +51 -48
  11. package/hooks/auto-checkpoint-helper.sh +2 -2
  12. package/hooks/auto-checkpoint.sh +3 -3
  13. package/hooks/auto-restore-on-start.sh +30 -0
  14. package/hooks/checkpoint-helper.sh +40 -35
  15. package/hooks/git-context.sh +41 -0
  16. package/hooks/lite-mode-inject.sh +26 -0
  17. package/hooks/session-end-helper.sh +2 -2
  18. package/hooks/session-end.sh +2 -2
  19. package/hooks/session-label-nag.sh +2 -2
  20. package/hooks/session-meta.sh +18 -1
  21. package/hooks/session-review-reminder.sh +2 -2
  22. package/hooks/session-start.sh +16 -0
  23. package/hooks/slop-grep.sh +12 -31
  24. package/hooks/uv-out-best.sh +20 -0
  25. package/hooks/uv-out-collect.sh +52 -0
  26. package/hooks/uv-out-notify.sh +28 -0
  27. package/hooks/uv-out-pointer.sh +16 -0
  28. package/hooks/uv-out-session.sh +24 -0
  29. package/hooks/watchtower-notify.sh +45 -0
  30. package/hooks/watchtower-send.sh +4 -0
  31. package/install.sh +93 -42
  32. package/package.json +2 -2
  33. package/personas/auto.json +40 -1
  34. package/personas/professional.json +46 -1
  35. package/personas/spike.json +32 -2
  36. package/personas/sport.json +44 -1
  37. package/settings.json +6 -2
  38. package/skills/architect/SKILL.md +109 -8
  39. package/skills/architect/specialists/distributed-systems.md +84 -0
  40. package/skills/architect/specialists/full-stack.md +92 -0
  41. package/skills/architect/specialists/llm-ai-engineering.md +86 -0
  42. package/skills/architect/specialists/ml-systems.md +81 -0
  43. package/skills/commit/SKILL.md +5 -2
  44. package/skills/confirm/SKILL.md +3 -3
  45. package/skills/investigate/SKILL.md +14 -4
  46. package/skills/lite/SKILL.md +45 -0
  47. package/skills/qa/SKILL.md +274 -0
  48. package/skills/review/SKILL.md +187 -8
  49. package/skills/review/specialists/api-contract.md +122 -0
  50. package/skills/review/specialists/architecture-trace.md +64 -0
  51. package/skills/review/specialists/data-migration.md +113 -0
  52. package/skills/review/specialists/maintainability.md +138 -0
  53. package/skills/review/specialists/performance.md +115 -0
  54. package/skills/review/specialists/security.md +132 -0
  55. package/skills/review/specialists/testing.md +109 -0
  56. package/skills/session/SKILL.md +87 -0
  57. package/skills/session/operations/auto.md +22 -0
  58. package/skills/session/operations/checkpoint.md +43 -0
  59. package/skills/session/operations/end.md +35 -0
  60. package/skills/session/operations/init.md +16 -0
  61. package/skills/session/operations/restore.md +16 -0
  62. package/skills/spec/SKILL.md +40 -1
  63. package/skills/test/SKILL.md +89 -0
  64. package/skills/test/specialists/eval.md +46 -0
  65. package/skills/test/specialists/integration.md +42 -0
  66. package/skills/test/specialists/unit.md +39 -0
  67. package/skills/understand/SKILL.md +118 -0
  68. package/skills/understand/modes/repo.md +38 -0
  69. package/skills/understand/modes/stack.md +41 -0
  70. package/skills/uv-help/SKILL.md +43 -20
  71. package/uv.sh +36 -3
  72. package/watchtower/Dockerfile +9 -0
  73. package/watchtower/README.md +78 -0
  74. package/watchtower/app/__init__.py +0 -0
  75. package/watchtower/app/__pycache__/__init__.cpython-314.pyc +0 -0
  76. package/watchtower/app/__pycache__/db.cpython-314.pyc +0 -0
  77. package/watchtower/app/__pycache__/main.cpython-314.pyc +0 -0
  78. package/watchtower/app/__pycache__/models.cpython-314.pyc +0 -0
  79. package/watchtower/app/db.py +85 -0
  80. package/watchtower/app/main.py +45 -0
  81. package/watchtower/app/models.py +49 -0
  82. package/watchtower/app/routers/__init__.py +0 -0
  83. package/watchtower/app/routers/__pycache__/__init__.cpython-314.pyc +0 -0
  84. package/watchtower/app/routers/__pycache__/control.cpython-314.pyc +0 -0
  85. package/watchtower/app/routers/__pycache__/ingest.cpython-314.pyc +0 -0
  86. package/watchtower/app/routers/__pycache__/query.cpython-314.pyc +0 -0
  87. package/watchtower/app/routers/__pycache__/stream.cpython-314.pyc +0 -0
  88. package/watchtower/app/routers/control.py +144 -0
  89. package/watchtower/app/routers/ingest.py +102 -0
  90. package/watchtower/app/routers/query.py +84 -0
  91. package/watchtower/app/routers/stream.py +30 -0
  92. package/watchtower/app/services/__init__.py +0 -0
  93. package/watchtower/app/services/__pycache__/__init__.cpython-314.pyc +0 -0
  94. package/watchtower/app/services/__pycache__/checkpoint.cpython-314.pyc +0 -0
  95. package/watchtower/app/services/__pycache__/tmux.cpython-314.pyc +0 -0
  96. package/watchtower/app/services/checkpoint.py +107 -0
  97. package/watchtower/app/services/tmux.py +54 -0
  98. package/watchtower/docker-compose.yml +22 -0
  99. package/watchtower/events.json +10373 -1
  100. package/watchtower/{auto-checkpoint-runner.js → legacy/auto-checkpoint-runner.js} +29 -2
  101. package/watchtower/{dashboard.html → legacy/dashboard.html} +261 -0
  102. package/watchtower/{server.js → legacy/server.js} +63 -0
  103. package/watchtower/legacy/snapshot-manager.js +305 -0
  104. package/watchtower/requirements.txt +3 -0
  105. package/watchtower/schema.sql +43 -0
  106. package/watchtower/static/dashboard.html +449 -0
  107. package/agents/claude-code/devops.md +0 -50
  108. package/agents/claude-code/security.md +0 -75
  109. package/agents/codex/anti-slop-guard.toml +0 -12
  110. package/agents/codex/architect.toml +0 -11
  111. package/agents/codex/cartographer.toml +0 -16
  112. package/agents/codex/devops.toml +0 -8
  113. package/agents/codex/eval-writer.toml +0 -11
  114. package/agents/codex/prototype-builder.toml +0 -10
  115. package/agents/codex/reviewer.toml +0 -16
  116. package/agents/codex/security.toml +0 -14
  117. package/agents/codex/spec-writer.toml +0 -11
  118. package/agents/codex/test-writer.toml +0 -13
  119. package/agents/cursor/anti-slop-guard.mdc +0 -22
  120. package/agents/cursor/architect.mdc +0 -24
  121. package/agents/cursor/cartographer.mdc +0 -28
  122. package/agents/cursor/devops.mdc +0 -16
  123. package/agents/cursor/eval-writer.mdc +0 -21
  124. package/agents/cursor/prototype-builder.mdc +0 -25
  125. package/agents/cursor/reviewer.mdc +0 -26
  126. package/agents/cursor/security.mdc +0 -20
  127. package/agents/cursor/spec-writer.mdc +0 -27
  128. package/agents/cursor/test-writer.mdc +0 -28
  129. package/agents/portable/anti-slop-guard.md +0 -71
  130. package/agents/portable/architect.md +0 -83
  131. package/agents/portable/cartographer.md +0 -64
  132. package/agents/portable/devops.md +0 -56
  133. package/agents/portable/eval-writer.md +0 -70
  134. package/agents/portable/prototype-builder.md +0 -70
  135. package/agents/portable/reviewer.md +0 -79
  136. package/agents/portable/security.md +0 -63
  137. package/agents/portable/spec-writer.md +0 -89
  138. package/agents/portable/test-writer.md +0 -56
  139. package/hooks/context-warning.sh +0 -4
  140. package/skills/auto-checkpoint/SKILL.md +0 -47
  141. package/skills/checkpoint/SKILL.md +0 -105
  142. package/skills/map-codebase/SKILL.md +0 -54
  143. package/skills/map-stack/SKILL.md +0 -121
  144. package/skills/restore/SKILL.md +0 -55
  145. package/skills/security-review/SKILL.md +0 -87
  146. package/skills/session-end/SKILL.md +0 -100
  147. package/skills/session-init/SKILL.md +0 -45
  148. package/skills/slop-check/SKILL.md +0 -40
  149. package/skills/write-evals/SKILL.md +0 -34
  150. package/skills/write-tests/SKILL.md +0 -54
  151. /package/watchtower/{auto-checkpoint-prompt.md → legacy/auto-checkpoint-prompt.md} +0 -0
@@ -1,121 +0,0 @@
1
- ---
2
- name: map-stack
3
- description: >
4
- Map an entire tech stack across multiple codebases/services. Shows how services
5
- relate — API calls, shared databases, message queues, shared libraries, deployment
6
- topology. Use when you need to understand how multiple repos/services fit together.
7
- argument-hint: "[parent-directory-or-service-list]"
8
- user-invocable: true
9
- context: fork
10
- agent: cartographer
11
- model: claude-opus-4-6
12
- effort: max
13
- allowed-tools:
14
- - Read(*)
15
- - Grep(*)
16
- - Glob(*)
17
- - Bash(graphify *)
18
- - Bash(repomix *)
19
- - Bash(find *)
20
- - Bash(git *)
21
- - Bash(wc *)
22
- - Bash(head *)
23
- - Bash(ls *)
24
- - Bash(cat *)
25
- ---
26
-
27
- ## Target
28
-
29
- $ARGUMENTS
30
-
31
- If no target specified, scan the current directory for subdirectories that look like services (contain package.json, pom.xml, go.mod, Cargo.toml, requirements.txt, Dockerfile, etc.).
32
-
33
- ## Mode: Multi-Codebase Stack Mapping
34
-
35
- This is NOT a single-repo mapping. You are mapping an entire tech stack — multiple services, how they connect, and the system-level architecture.
36
-
37
- ## Project context
38
-
39
- !`cat CLAUDE.md 2>/dev/null || echo "No CLAUDE.md found"`
40
-
41
- ## Prior codebase maps (from /map-codebase runs)
42
-
43
- !`cat uv-out/map-codebase.md 2>/dev/null | head -80 || echo "No prior codebase map — will scan from scratch"`
44
-
45
- ## Discover services
46
-
47
- ```!
48
- find . -maxdepth 3 \( -name "package.json" -o -name "pom.xml" -o -name "go.mod" -o -name "Cargo.toml" -o -name "requirements.txt" -o -name "setup.py" -o -name "pyproject.toml" \) -not -path "*/node_modules/*" -not -path "*/.git/*" 2>/dev/null | head -30
49
- ```
50
-
51
- ## Dockerfiles and compose
52
-
53
- ```!
54
- find . -maxdepth 3 \( -name "Dockerfile" -o -name "docker-compose*" \) -not -path "*/node_modules/*" 2>/dev/null | head -20
55
- ```
56
-
57
- ## Infrastructure (Helm, Terraform, K8s)
58
-
59
- ```!
60
- find . -maxdepth 4 \( -name "*.tf" -o -name "Chart.yaml" -o -name "values.yaml" -o -name "*.k8s.yaml" -o -name "kustomization.yaml" \) -not -path "*/node_modules/*" 2>/dev/null | head -20
61
- ```
62
-
63
- ## API contracts (OpenAPI, gRPC, GraphQL)
64
-
65
- ```!
66
- find . -maxdepth 4 \( -name "*.proto" -o -name "openapi*" -o -name "swagger*" -o -name "*.graphql" -o -name "schema.graphql" \) -not -path "*/node_modules/*" 2>/dev/null | head -20
67
- ```
68
-
69
- ## Process
70
-
71
- Follow this sequence:
72
-
73
- ### 1. Inventory every service
74
- For each directory that contains a build file, identify:
75
- - Service name
76
- - Language / framework
77
- - What it does (from README, main entry point, or package description)
78
- - How it's deployed (Docker, K8s, serverless)
79
-
80
- ### 2. Map connections BETWEEN services
81
- This is the hard part. Look for:
82
- - **HTTP/REST calls** — grep for base URLs, API client configs, fetch/axios calls referencing other services
83
- - **gRPC/Protobuf** — shared .proto files, client stubs
84
- - **Message queues** — Kafka topics, RabbitMQ queues, SQS queues referenced across services
85
- - **Shared databases** — same DB connection strings or schema references across services
86
- - **Shared libraries** — internal packages imported by multiple services
87
- - **Environment variables** — service URLs configured via env vars (SERVICE_A_URL, etc.)
88
-
89
- ### 3. Identify the data flow
90
- - Where does data enter the system? (API gateway, webhook, user upload)
91
- - How does it flow through services?
92
- - Where does it end up? (database, external API, user response)
93
-
94
- ### 4. Produce the stack map
95
-
96
- Output a **System Architecture Diagram** (Mermaid) showing:
97
- - Every service as a node
98
- - Connections between them (labeled: REST, gRPC, Kafka, shared DB, etc.)
99
- - External dependencies (third-party APIs, managed services)
100
- - Data stores (databases, caches, queues)
101
-
102
- Then a **Stack Inventory Table**:
103
-
104
- | Service | Language | Framework | Database | Deploys to | Depends on | Depended on by |
105
- |---------|----------|-----------|----------|------------|------------|----------------|
106
-
107
- Then a **Connection Matrix** showing which services talk to which:
108
-
109
- | | Service A | Service B | Service C | DB-1 | Kafka |
110
- |---|-----------|-----------|-----------|------|-------|
111
- | Service A | — | REST | — | R/W | produce |
112
- | Service B | — | — | gRPC | R | consume |
113
-
114
- Then **Danger Zones** at the stack level:
115
- - Single points of failure
116
- - Services with the most inbound dependencies (change carefully)
117
- - Shared databases (schema changes affect multiple services)
118
- - Missing monitoring or health checks
119
-
120
- ### 5. If Graphify is available
121
- Run `graphify run [parent-dir] --directed` on the entire parent directory to get a unified knowledge graph across all services. The graph will show cross-service relationships that are hard to find manually.
@@ -1,55 +0,0 @@
1
- ---
2
- name: restore
3
- description: >
4
- Restore the latest checkpoint for the current session — shows what was done,
5
- key decisions, current state, and what's next. With no arguments, picks the
6
- current `UVS_SESSION_ID`'s most recent checkpoint. Pass a session id prefix
7
- or name to restore from a different session.
8
- argument-hint: "[<session-id-prefix> | <session-name> | list]"
9
- user-invocable: true
10
- allowed-tools:
11
- - Read(*)
12
- - Bash(ls *)
13
- - Bash(cat *)
14
- - Bash(grep *)
15
- - Bash(find *)
16
- - Bash(git rev-parse *)
17
- - Bash("$CLAUDE_PROJECT_DIR"/.claude/hooks/checkpoint-helper.sh *)
18
- ---
19
-
20
- ## Available sessions with checkpoints
21
-
22
- !`"$CLAUDE_PROJECT_DIR"/.claude/hooks/checkpoint-helper.sh list`
23
-
24
- (`*` marks the current session.)
25
-
26
- ## Latest checkpoint for the current session
27
-
28
- !`"$CLAUDE_PROJECT_DIR"/.claude/hooks/checkpoint-helper.sh latest`
29
-
30
- ## Argument
31
-
32
- $ARGUMENTS
33
-
34
- ## Instructions
35
-
36
- 1. **If `$ARGUMENTS` is empty or "latest"**: read the checkpoint shown above (the
37
- current session's `latest.md`). Summarize it in 3-4 sentences: what was
38
- done, current state, what's next. Then ask: "Ready to pick up from here, or
39
- do you want to take a different direction?"
40
-
41
- 2. **If `$ARGUMENTS` is "list"**: just show the user the available-sessions
42
- list above and ask which one they want to restore.
43
-
44
- 3. **If `$ARGUMENTS` looks like a session id prefix** (8-char hex / UUID-ish)
45
- **or a session name**: match it against the list above. Read the
46
- matching session's `latest.md` from
47
- `<project>/uv-out/checkpoints/<full-session-id>/latest.md` using the Read
48
- tool, then summarize as in (1).
49
-
50
- 4. If no match is found, list the available sessions and ask the user to
51
- pick one.
52
-
53
- When summarizing, include the session's name and purpose from the
54
- frontmatter at the top of the checkpoint — that's the context the next
55
- session needs to know what it's picking up.
@@ -1,87 +0,0 @@
1
- ---
2
- name: security-review
3
- description: >
4
- OWASP-informed security review. Uses Semgrep, Gitleaks, and Trivy when available.
5
- Falls back to AI-only analysis. Use on code touching auth, payments, data access,
6
- or external inputs.
7
- argument-hint: "[file-or-directory]"
8
- user-invocable: true
9
- context: fork
10
- agent: security
11
- model: claude-opus-4-6
12
- effort: high
13
- allowed-tools:
14
- - Read(*)
15
- - Grep(*)
16
- - Glob(*)
17
- - Bash(git diff *)
18
- - Bash(semgrep *)
19
- - Bash(gitleaks *)
20
- - Bash(trivy *)
21
- - Bash(npm audit *)
22
- - Bash(pip audit *)
23
- - Bash(go vuln *)
24
- - Bash(cargo audit *)
25
- ---
26
-
27
- ## Target
28
-
29
- $ARGUMENTS
30
-
31
- ## Changes to review
32
-
33
- !`git diff --cached --stat 2>/dev/null || git diff --stat 2>/dev/null || echo "Reviewing full project"`
34
-
35
- ### Full diff
36
-
37
- !`git diff --cached 2>/dev/null || git diff 2>/dev/null || echo ""`
38
-
39
- ## Danger zones
40
-
41
- !`cat DANGER-ZONES.md 2>/dev/null || echo "No DANGER-ZONES.md found"`
42
-
43
- ## Prior analysis
44
-
45
- ### Codebase map
46
-
47
- !`cat uv-out/map-codebase.md 2>/dev/null | head -80 || echo "No codebase map found"`
48
-
49
- ### Recent code review findings
50
-
51
- !`cat $(ls -t uv-out/review-*.md 2>/dev/null | head -1) 2>/dev/null | head -60 || echo "No prior review found"`
52
-
53
- ### Recent slop check
54
-
55
- !`cat $(ls -t uv-out/slop-check-*.md 2>/dev/null | head -1) 2>/dev/null | head -40 || echo "No prior slop check found"`
56
-
57
- ## Available security tools
58
-
59
- ```!
60
- echo "=== Semgrep ===" && semgrep --version 2>/dev/null || echo "not installed (pip install semgrep)"
61
- echo "=== Gitleaks ===" && gitleaks version 2>/dev/null || echo "not installed (brew install gitleaks)"
62
- echo "=== Trivy ===" && trivy --version 2>/dev/null || echo "not installed (brew install trivy)"
63
- ```
64
-
65
- ## SAST scan (Semgrep, if available)
66
-
67
- ```!
68
- semgrep --config auto --json --quiet . 2>/dev/null | head -100 || echo "Semgrep not available — will use AI-only analysis"
69
- ```
70
-
71
- ## Secret detection (Gitleaks, if available)
72
-
73
- ```!
74
- gitleaks detect --source . --no-git --report-format json 2>/dev/null | head -50 || echo "Gitleaks not available — falling back to grep"
75
- ```
76
-
77
- ## Grep-based secret scan (fallback)
78
-
79
- ```!
80
- grep -rn "password\s*=\|api_key\s*=\|secret\s*=\|token\s*=" --include="*.ts" --include="*.js" --include="*.py" --include="*.java" --include="*.go" . 2>/dev/null | head -20 || echo "No obvious secrets found"
81
- ```
82
-
83
- ## Dependency audit
84
-
85
- ```!
86
- trivy fs --scanners vuln --format json . 2>/dev/null | head -80 || npm audit --json 2>/dev/null | head -50 || pip audit 2>/dev/null | head -50 || echo "No dependency scanner found"
87
- ```
@@ -1,100 +0,0 @@
1
- ---
2
- name: session-end
3
- description: >
4
- Cleanly close the current UV Suite session: write a final manual checkpoint
5
- (full conversation context), then mark the session as terminated so the
6
- Watchtower dashboard flips its lifecycle badge to Terminated. Use before
7
- closing the terminal when you want a deliberate end-of-session beat.
8
- argument-hint: "[optional-label]"
9
- user-invocable: true
10
- allowed-tools:
11
- - Write(*)
12
- - Read(*)
13
- - Bash(git status *)
14
- - Bash(git diff *)
15
- - Bash(git log *)
16
- - Bash(git branch *)
17
- - Bash(git rev-parse *)
18
- - Bash(date *)
19
- - Bash(ls *)
20
- - Bash(mkdir *)
21
- - Bash(cat *)
22
- - Bash(echo *)
23
- - Bash("$CLAUDE_PROJECT_DIR"/.claude/hooks/checkpoint-helper.sh *)
24
- - Bash("$CLAUDE_PROJECT_DIR"/.claude/hooks/session-end-helper.sh *)
25
- ---
26
-
27
- ## Resolve checkpoint directory + session metadata
28
-
29
- !`"$CLAUDE_PROJECT_DIR"/.claude/hooks/checkpoint-helper.sh dir`
30
-
31
- !`"$CLAUDE_PROJECT_DIR"/.claude/hooks/checkpoint-helper.sh frontmatter`
32
-
33
- ## Git state
34
-
35
- !`git branch --show-current 2>/dev/null || echo "(not a git repo)"`
36
-
37
- !`git status --short 2>/dev/null | head -20 || echo "(no git)"`
38
-
39
- !`git log --oneline -5 2>/dev/null || echo "(no git history)"`
40
-
41
- ## Step 1 — Write the final checkpoint
42
-
43
- Write a file at `<checkpoint-dir>/final-YYYY-MM-DD-HHMM.md` using the current
44
- timestamp. **Override** the frontmatter line `checkpoint_kind: auto-mechanical`
45
- to read `checkpoint_kind: final-manual` so it's distinguishable from the
46
- auto-checkpoints. Also write/overwrite `<checkpoint-dir>/latest.md` with the
47
- same content so `/restore` picks it up.
48
-
49
- If a label was provided, include it in the filename:
50
- `<checkpoint-dir>/final-YYYY-MM-DD-HHMM-[label].md`
51
-
52
- ### Label
53
-
54
- $ARGUMENTS
55
-
56
- ### Body structure (after the frontmatter)
57
-
58
- ```markdown
59
- # Final checkpoint: [date] [time] [label if provided]
60
-
61
- ## What was accomplished
62
- - Concrete things done across the whole session — files, commits, decisions
63
- - One bullet per significant artifact; don't pad
64
-
65
- ## Key decisions made
66
- - Decision: Why — what was considered, what was rejected
67
-
68
- ## Current state
69
- - Branch / uncommitted changes / tests status / blockers
70
-
71
- ## Open threads
72
- - Anything left in flight that the next session needs to pick up
73
- - Pending reviews, awaiting input, deferred work
74
-
75
- ## Context the next session needs
76
- - Non-obvious facts, workarounds, "this looks wrong but it's intentional because…"
77
- ```
78
-
79
- Be specific. This is the last record before the session closes — anything
80
- not written here is lost unless it's in code or the auto-checkpoints.
81
-
82
- ## Step 2 — Mark the session terminated
83
-
84
- Once the file is written, run:
85
-
86
- !`"$CLAUDE_PROJECT_DIR"/.claude/hooks/session-end-helper.sh`
87
-
88
- Show the user the two-line output. Don't add commentary — the file write
89
- and the termination signal together speak for themselves.
90
-
91
- ## Notes
92
-
93
- - `/session-end` does **not** close the terminal or exit Claude Code. After
94
- it runs, the badge flips to Terminated in the Watchtower; the user
95
- closes the terminal manually.
96
- - The final checkpoint uses the live session's full conversation context —
97
- higher fidelity than the auto-checkpoint summaries because Claude has
98
- everything in working memory at this moment.
99
- - If you only want to terminate without a checkpoint, run
100
- `hooks/session-end-helper.sh` directly from bash and skip this skill.
@@ -1,45 +0,0 @@
1
- ---
2
- name: session-init
3
- description: >
4
- Label or relabel the current UV Suite session — sets name, kind (long-running
5
- vs outcome), purpose, and priority (low/med/high). Metadata appears in the
6
- watchtower dashboard. Use when you skipped the launcher prompt or want to
7
- rename a session mid-flight.
8
- argument-hint: "<name> | --kind long|outcome | --purpose <text> | --priority low|med|high | show | clear"
9
- user-invocable: true
10
- allowed-tools:
11
- - Bash("$CLAUDE_PROJECT_DIR"/.claude/hooks/session-meta.sh *)
12
- ---
13
-
14
- ## Apply /session-init $ARGUMENTS
15
-
16
- !`HELPER="$CLAUDE_PROJECT_DIR/.claude/hooks/session-meta.sh"; ARGS="$ARGUMENTS"; if [ -z "$ARGS" ] || [ "$ARGS" = "show" ]; then "$HELPER" show; elif [ "$ARGS" = "clear" ]; then "$HELPER" clear; else FIRST=$(printf '%s' "$ARGS" | awk '{print $1}'); REST=$(printf '%s' "$ARGS" | sed 's/^[^ ]* *//'); case "$FIRST" in --kind) "$HELPER" set-kind "$REST" ;; --priority) "$HELPER" set-priority "$REST" ;; --purpose) "$HELPER" set-purpose "$REST" ;; --name) "$HELPER" set-name "$REST" ;; *) "$HELPER" set-name "$ARGS" ;; esac; fi`
17
-
18
- ## Instructions
19
-
20
- Show the user the output of the command above. Do not add commentary — the
21
- command itself confirms what changed. The dashboard reflects changes within
22
- a few seconds (next event refreshes session metadata).
23
-
24
- ## Usage
25
-
26
- ```
27
- /session-init show current values
28
- /session-init show show current values
29
- /session-init <free-text name> set the name (default action)
30
- /session-init --kind long set kind: long-running
31
- /session-init --kind outcome set kind: outcome
32
- /session-init --priority high set priority: low | med | high
33
- /session-init --purpose <free text> set the purpose
34
- /session-init clear clear name, kind, purpose, priority
35
- ```
36
-
37
- ## Notes
38
-
39
- - The session id is generated by `uv.sh` at launch and exported as
40
- `UVS_SESSION_ID`. If you launched `claude` directly, this falls back
41
- to an `ad-hoc-<timestamp>` id.
42
- - Metadata lives at `.uv-suite-state/sessions/<id>.json`.
43
- - Persona is captured at launch time and is not editable from here —
44
- re-launch with a different `uv` persona to change it.
45
- - Each invocation sets one field at a time. Run multiple times to set more.
@@ -1,40 +0,0 @@
1
- ---
2
- name: slop-check
3
- description: >
4
- Detect AI-generated slop in code, tests, docs, and architecture.
5
- Run before merging any AI-generated changes.
6
- argument-hint: "[file-or-directory]"
7
- user-invocable: true
8
- context: fork
9
- agent: anti-slop-guard
10
- model: claude-opus-4-6
11
- effort: high
12
- allowed-tools:
13
- - Read(*)
14
- - Grep(*)
15
- - Glob(*)
16
- - Bash(git diff *)
17
- - Bash(git log *)
18
- ---
19
-
20
- ## Target
21
-
22
- $ARGUMENTS
23
-
24
- ## Changes to scan
25
-
26
- !`git diff --cached --stat 2>/dev/null || git diff --stat 2>/dev/null || echo "No changes — scan target files directly"`
27
-
28
- ### Full diff
29
-
30
- !`git diff --cached 2>/dev/null || git diff 2>/dev/null || echo ""`
31
-
32
- ## Prior analysis
33
-
34
- ### Architecture decisions (check code against stated rationale)
35
-
36
- !`cat uv-out/architecture/decisions.md 2>/dev/null | head -40 || echo "No architecture decisions found"`
37
-
38
- ### Recent review findings
39
-
40
- !`cat $(ls -t uv-out/review-*.md 2>/dev/null | head -1) 2>/dev/null | head -40 || echo "No prior review found"`
@@ -1,34 +0,0 @@
1
- ---
2
- name: write-evals
3
- description: >
4
- Write evaluations for AI system prompts and inferencing layers.
5
- Use when building or modifying LLM-powered features.
6
- argument-hint: "[prompt-file-or-description]"
7
- user-invocable: true
8
- context: fork
9
- agent: eval-writer
10
- model: claude-opus-4-6
11
- effort: high
12
- allowed-tools:
13
- - Read(*)
14
- - Grep(*)
15
- - Glob(*)
16
- - Write(*)
17
- - Edit(*)
18
- - Bash(npm run eval *)
19
- - Bash(pytest *)
20
- ---
21
-
22
- ## Target
23
-
24
- $ARGUMENTS
25
-
26
- ## Existing eval framework
27
-
28
- !`find . -name "*eval*" -o -name "*evals*" 2>/dev/null | head -10 || echo "No eval files found"`
29
-
30
- ## Prior analysis
31
-
32
- ### Spec (requirements to evaluate against)
33
-
34
- !`cat $(ls -t uv-out/specs/*.md 2>/dev/null | head -1) 2>/dev/null | head -60 || echo "No spec found"`
@@ -1,54 +0,0 @@
1
- ---
2
- name: write-tests
3
- description: >
4
- Generate meaningful tests that verify behavior. Use after implementing a feature or when
5
- coverage is low. Matches project test conventions.
6
- argument-hint: "[file-or-module-to-test]"
7
- user-invocable: true
8
- context: fork
9
- agent: test-writer
10
- model: claude-sonnet-4-6
11
- effort: high
12
- allowed-tools:
13
- - Read(*)
14
- - Grep(*)
15
- - Glob(*)
16
- - Write(*)
17
- - Edit(*)
18
- - Bash(npm test *)
19
- - Bash(npm run test *)
20
- - Bash(npx jest *)
21
- - Bash(npx vitest *)
22
- - Bash(pytest *)
23
- - Bash(go test *)
24
- - Bash(cargo test *)
25
- - Bash(mvn test *)
26
- ---
27
-
28
- ## Target
29
-
30
- $ARGUMENTS
31
-
32
- ## Existing test patterns (match these)
33
-
34
- !`find . -name "*.test.*" -o -name "*.spec.*" -o -name "test_*" 2>/dev/null | head -5`
35
-
36
- !`cat $(find . -name "*.test.*" -o -name "*.spec.*" 2>/dev/null | head -1) 2>/dev/null | head -40 || echo "No existing tests found"`
37
-
38
- ## Project test command
39
-
40
- !`cat package.json 2>/dev/null | grep -A2 '"test"' || echo "No package.json test script"`
41
-
42
- ## Prior analysis
43
-
44
- ### Spec (what to test against)
45
-
46
- !`cat $(ls -t uv-out/specs/*.md 2>/dev/null | head -1) 2>/dev/null | head -60 || echo "No spec found — test based on code behavior"`
47
-
48
- ### Acts plan (current task context)
49
-
50
- !`cat uv-out/architecture/acts-plan.md 2>/dev/null | head -40 || echo "No acts plan found"`
51
-
52
- ### Session checkpoint
53
-
54
- !`cat uv-out/checkpoints/latest.md 2>/dev/null | head -40 || echo "No checkpoint"`