uv-suite 0.2.0 → 0.3.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.
@@ -9,14 +9,18 @@ tools:
9
9
  - Read
10
10
  - Grep
11
11
  - Glob
12
- disallowedTools:
13
12
  - Write
13
+ disallowedTools:
14
14
  - Edit
15
15
  effort: high
16
16
  ---
17
17
 
18
18
  You are the **Anti-Slop Guard** — your job is to catch AI-generated low-quality output that looks plausible but adds no value or actively hurts the codebase.
19
19
 
20
+ ## Artifact Output
21
+
22
+ Write the slop report to `uv-out/slop-check-YYYY-MM-DD.md`. Create the directory if needed. Summarize findings in the conversation.
23
+
20
24
  ## What You Scan For
21
25
 
22
26
  ### Comment Slop
@@ -49,6 +49,14 @@ For each key decision, document:
49
49
  - [ ] [Concrete, testable check]
50
50
  ```
51
51
 
52
+ ## Artifact Output
53
+
54
+ Write all output to `uv-out/architecture/`:
55
+ - `uv-out/architecture/decisions.md` — architecture decision records
56
+ - `uv-out/architecture/acts-plan.md` — Acts breakdown with tasks and cycle budgets
57
+
58
+ Create the directory if needed. Summarize the design in the conversation.
59
+
52
60
  ### 4. Task Dependency Graph
53
61
  Mermaid diagram showing parallelism opportunities.
54
62
 
@@ -11,8 +11,8 @@ tools:
11
11
  - Grep
12
12
  - Glob
13
13
  - Bash
14
- disallowedTools:
15
14
  - Write
15
+ disallowedTools:
16
16
  - Edit
17
17
  effort: high
18
18
  ---
@@ -86,6 +86,15 @@ Report: graphify-out/GRAPH_REPORT.md
86
86
  ### If manual exploration:
87
87
  Produce all 6 sections (Architecture Overview, Tech Stack, Dependency Graph, Business Domain Map, Sequence Diagrams, Entry Points) as Mermaid + Markdown.
88
88
 
89
+ ## Artifact Output
90
+
91
+ Write all output to `uv-out/`. Create the directory if it doesn't exist.
92
+
93
+ - `uv-out/map-codebase.md` — the written analysis (business domain map, sequence diagrams, entry points)
94
+ - `uv-out/graphify-out/` — Graphify outputs if used (graph.html, graph.json, GRAPH_REPORT.md)
95
+
96
+ After writing, tell the human: "Artifacts written to uv-out/map-codebase.md" and summarize key findings in the conversation.
97
+
89
98
  ## Rules
90
99
 
91
100
  - Graphify first, manual second. Always check.
@@ -44,6 +44,10 @@ You are the **Eval Writer** — your job is to write evaluations that verify AI/
44
44
  rubric: "Scoring criteria"
45
45
  ```
46
46
 
47
+ ## Artifact Output
48
+
49
+ Write evals to `uv-out/evals/`. Create the directory if needed. Match the project's eval framework format (DeepEval preferred).
50
+
47
51
  ## Grading Rubric (be this specific)
48
52
 
49
53
  ```yaml
@@ -10,8 +10,8 @@ tools:
10
10
  - Grep
11
11
  - Glob
12
12
  - Bash
13
- disallowedTools:
14
13
  - Write
14
+ disallowedTools:
15
15
  - Edit
16
16
  effort: high
17
17
  ---
@@ -63,6 +63,10 @@ You are the **Reviewer** — your job is to catch bugs, security issues, perform
63
63
  | **Medium** | Style, naming, minor refactor | Fix if easy |
64
64
  | **Low** | Nitpick, suggestion | Author's discretion |
65
65
 
66
+ ## Artifact Output
67
+
68
+ Write the review report to `uv-out/review-YYYY-MM-DD.md`. Create the directory if needed. Summarize key findings in the conversation.
69
+
66
70
  ## Common Findings (be this specific)
67
71
 
68
72
  **Null dereference:**
@@ -10,8 +10,8 @@ tools:
10
10
  - Grep
11
11
  - Glob
12
12
  - Bash
13
- disallowedTools:
14
13
  - Write
14
+ disallowedTools:
15
15
  - Edit
16
16
  effort: high
17
17
  ---
@@ -31,6 +31,10 @@ You are the **Security Agent** — your job is to find security vulnerabilities
31
31
  - A09: Logging Failures — Are security events logged? Is PII excluded from logs?
32
32
  - A10: SSRF — Are outbound requests validated?
33
33
 
34
+ ## Artifact Output
35
+
36
+ Write the security report to `uv-out/security-review-YYYY-MM-DD.md`. Create the directory if needed. Summarize critical/high findings in the conversation.
37
+
34
38
  ## Process
35
39
 
36
40
  1. Read the code diff or specified files
@@ -60,6 +60,10 @@ How do we know this is done?
60
60
  Unit, integration, e2e, load?
61
61
  ```
62
62
 
63
+ ## Artifact Output
64
+
65
+ Write the spec to `uv-out/specs/[feature-name]-spec.md`. Create the directory if needed. Summarize the spec in the conversation.
66
+
63
67
  ## Process
64
68
 
65
69
  1. Parse the input into discrete requirements
package/install.sh CHANGED
@@ -142,6 +142,69 @@ if [ "$INSTALL_MODE" = "project" ]; then
142
142
  done
143
143
  fi
144
144
 
145
+ # --- Write UV Suite context to CLAUDE.md (before bundled tools, which can be slow) ---
146
+ if [ "$INSTALL_MODE" = "project" ]; then
147
+ PROJECT_ROOT="$(dirname "$TARGET_DIR")"
148
+ CLAUDE_MD="$PROJECT_ROOT/CLAUDE.md"
149
+ UV_VERSION=$(grep '"version"' "$UV_SUITE_DIR/package.json" 2>/dev/null | head -1 | sed 's/.*": "//;s/".*//')
150
+
151
+ # Remove existing UV Suite section if present
152
+ if [ -f "$CLAUDE_MD" ] && grep -q "## UV Suite" "$CLAUDE_MD" 2>/dev/null; then
153
+ echo "Updating UV Suite section in CLAUDE.md..."
154
+ # Create temp file without UV Suite section
155
+ awk '/^## UV Suite$/{found=1; next} /^## [^U]/{if(found){found=0}} !found' "$CLAUDE_MD" > "$CLAUDE_MD.tmp"
156
+ mv "$CLAUDE_MD.tmp" "$CLAUDE_MD"
157
+ else
158
+ echo "Adding UV Suite section to CLAUDE.md..."
159
+ # Create CLAUDE.md if it doesn't exist
160
+ touch "$CLAUDE_MD"
161
+ fi
162
+
163
+ # Determine active hooks text
164
+ HOOKS_TEXT=""
165
+ case "$PERSONA" in
166
+ professional)
167
+ HOOKS_TEXT="- auto-lint (on file write), slop check (on file write), danger zone (on file edit), destructive block (on bash), review reminder (on session end)" ;;
168
+ auto)
169
+ HOOKS_TEXT="- auto-lint (on file write), destructive block (on bash)" ;;
170
+ sport)
171
+ HOOKS_TEXT="- auto-lint (on file write)" ;;
172
+ spike)
173
+ HOOKS_TEXT="- doc slop check (on file write)" ;;
174
+ esac
175
+
176
+ cat >> "$CLAUDE_MD" << EOF
177
+
178
+ ## UV Suite
179
+
180
+ This project uses [UV Suite](https://github.com/utsavanand/uv-suite) v${UV_VERSION} for AI-assisted development.
181
+
182
+ **Active persona:** ${PERSONA_LABEL}
183
+
184
+ ### Skills
185
+
186
+ /map-codebase, /map-stack, /spec, /architect, /review, /write-tests, /write-evals, /slop-check, /prototype, /security-review
187
+
188
+ ### Artifacts
189
+
190
+ Agent output is written to uv-out/. Agents read prior artifacts automatically:
191
+ - /map-codebase writes uv-out/map-codebase.md (read by /architect, /review, /security-review)
192
+ - /spec writes uv-out/specs/ (read by /architect, /write-tests, /write-evals)
193
+ - /architect writes uv-out/architecture/ (read by /review, /write-tests, /slop-check)
194
+ - /review writes uv-out/review-*.md (read by /slop-check, /security-review)
195
+
196
+ ### Hooks
197
+
198
+ ${HOOKS_TEXT}
199
+
200
+ ### Personas
201
+
202
+ Start sessions with: ./uv.sh spike | sport | pro | auto
203
+ EOF
204
+
205
+ echo " ✓ UV Suite section added to CLAUDE.md"
206
+ fi
207
+
145
208
  # --- Install bundled tools ---
146
209
  echo "Installing bundled integrations..."
147
210
 
@@ -162,7 +225,7 @@ if [ -n "$PIP_CMD" ]; then
162
225
  echo " ✓ $label (already installed)"
163
226
  else
164
227
  echo " Installing $label..."
165
- $PIP_CMD install "$pkg" --quiet 2>/dev/null
228
+ timeout 60 $PIP_CMD install "$pkg" --quiet 2>/dev/null
166
229
  if command -v "$cmd" &>/dev/null || $PIP_CMD show "$pkg" &>/dev/null; then
167
230
  echo " ✓ $label installed"
168
231
  else
@@ -221,6 +284,100 @@ else
221
284
  fi
222
285
  fi
223
286
 
287
+ # --- Write UV Suite context to CLAUDE.md ---
288
+ if [ "$INSTALL_MODE" = "project" ]; then
289
+ PROJECT_ROOT="$(dirname "$TARGET_DIR")"
290
+ CLAUDE_MD="$PROJECT_ROOT/CLAUDE.md"
291
+
292
+ # Check if UV Suite section already exists
293
+ if [ -f "$CLAUDE_MD" ] && grep -q "## UV Suite" "$CLAUDE_MD" 2>/dev/null; then
294
+ echo "Updating UV Suite section in CLAUDE.md..."
295
+ # Remove old UV Suite section and rewrite
296
+ sed -i.bak '/^## UV Suite$/,/^## [^U]/{ /^## [^U]/!d; }' "$CLAUDE_MD" 2>/dev/null || true
297
+ rm -f "$CLAUDE_MD.bak" 2>/dev/null
298
+ else
299
+ echo "Adding UV Suite section to CLAUDE.md..."
300
+ fi
301
+
302
+ cat >> "$CLAUDE_MD" << CLAUDEMD
303
+
304
+ ## UV Suite
305
+
306
+ This project uses [UV Suite](https://github.com/utsavanand/uv-suite) for AI-assisted development.
307
+
308
+ **Active persona:** $PERSONA_LABEL
309
+ **Version:** $(cat "$UV_SUITE_DIR/package.json" 2>/dev/null | grep '"version"' | head -1 | sed 's/.*: "//;s/".*//')
310
+
311
+ ### Available skills (slash commands)
312
+
313
+ | Command | Agent | What it does |
314
+ |---------|-------|-------------|
315
+ | /map-codebase [dir] | Cartographer | Build knowledge graph of codebase |
316
+ | /map-stack [dir] | Cartographer | Map multiple services and their connections |
317
+ | /spec [requirements] | Spec Writer | Write technical specification |
318
+ | /architect [spec] | Architect | Design architecture, decompose into Acts |
319
+ | /review | Reviewer | Code review (correctness, security, perf, slop) |
320
+ | /write-tests [file] | Test Writer | Generate tests matching project conventions |
321
+ | /write-evals [prompt] | Eval Writer | Write AI/LLM evaluation cases |
322
+ | /slop-check | Anti-Slop Guard | Detect 6 categories of AI-generated slop |
323
+ | /prototype [concept] | Prototype Builder | Build static React prototype |
324
+ | /security-review | Security Agent | OWASP audit, dependency scan, secret detection |
325
+
326
+ ### Artifacts
327
+
328
+ All agent output is written to \`uv-out/\`. Each agent reads relevant prior artifacts from this directory automatically.
329
+
330
+ | Artifact | Written by | Read by |
331
+ |----------|-----------|---------|
332
+ | uv-out/map-codebase.md | /map-codebase | /architect, /review, /security-review |
333
+ | uv-out/specs/*.md | /spec | /architect, /write-tests, /write-evals |
334
+ | uv-out/architecture/*.md | /architect | /review, /write-tests, /slop-check |
335
+ | uv-out/review-*.md | /review | /slop-check, /security-review |
336
+ | uv-out/security-review-*.md | /security-review | — |
337
+ | uv-out/slop-check-*.md | /slop-check | — |
338
+
339
+ ### Active hooks
340
+
341
+ Hooks fire automatically on every relevant action. You do not invoke these.
342
+
343
+ $(if [ "$PERSONA" = "professional" ]; then
344
+ cat << 'HOOKS'
345
+ - **auto-lint** (on file write) — runs prettier/ruff/gofmt
346
+ - **slop check** (on file write) — Haiku scans for obvious slop
347
+ - **danger zone** (on file edit) — warns if file is in DANGER-ZONES.md
348
+ - **destructive block** (on bash) — blocks rm -rf, force push
349
+ - **review reminder** (on session end) — reminds to /review if uncommitted changes
350
+ HOOKS
351
+ elif [ "$PERSONA" = "auto" ]; then
352
+ cat << 'HOOKS'
353
+ - **auto-lint** (on file write) — runs prettier/ruff/gofmt
354
+ - **destructive block** (on bash) — blocks rm -rf, force push
355
+ HOOKS
356
+ elif [ "$PERSONA" = "sport" ]; then
357
+ cat << 'HOOKS'
358
+ - **auto-lint** (on file write) — runs prettier/ruff/gofmt
359
+ HOOKS
360
+ elif [ "$PERSONA" = "spike" ]; then
361
+ cat << 'HOOKS'
362
+ - **doc slop check** (on file write) — Haiku checks documentation quality
363
+ HOOKS
364
+ fi)
365
+
366
+ ### Personas
367
+
368
+ Switch persona by starting a new session:
369
+
370
+ \`\`\`
371
+ ./uv.sh spike # Research & docs (Opus, max)
372
+ ./uv.sh sport # New projects (Sonnet, high)
373
+ ./uv.sh pro # Production code (all hooks, all guardrails)
374
+ ./uv.sh auto # Fully autonomous (max, everything approved)
375
+ \`\`\`
376
+ CLAUDEMD
377
+
378
+ echo " ✓ UV Suite section added to CLAUDE.md"
379
+ fi
380
+
224
381
  # --- Install launcher script ---
225
382
  echo "Installing session launcher..."
226
383
  cp "$UV_SUITE_DIR/uv.sh" "$TARGET_DIR/../uv.sh" 2>/dev/null || true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uv-suite",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Portable framework for AI-assisted software development. 10 agents, 9 skills, 5 hooks, 4 personas. Works with Claude Code, Cursor, and Codex.",
5
5
  "author": "Utsav Anand",
6
6
  "license": "MIT",
@@ -24,3 +24,15 @@ $ARGUMENTS
24
24
  ## Project context
25
25
 
26
26
  !`cat CLAUDE.md 2>/dev/null || echo "No CLAUDE.md found"`
27
+
28
+ ## Prior analysis
29
+
30
+ ### Codebase map
31
+
32
+ !`cat uv-out/map-codebase.md 2>/dev/null | head -100 || echo "No codebase map — run /map-codebase first for better architecture context"`
33
+
34
+ ### Spec (if written)
35
+
36
+ !`ls uv-out/specs/*.md 2>/dev/null | head -5 || echo "No specs found"`
37
+
38
+ !`cat $(ls -t uv-out/specs/*.md 2>/dev/null | head -1) 2>/dev/null | head -80 || echo ""`
@@ -48,3 +48,7 @@ cat graphify-out/GRAPH_REPORT.md 2>/dev/null | head -80 || echo "No existing gra
48
48
  ## Danger zones
49
49
 
50
50
  !`cat DANGER-ZONES.md 2>/dev/null || echo "No DANGER-ZONES.md found"`
51
+
52
+ ## Prior analysis (if re-mapping)
53
+
54
+ !`cat uv-out/map-codebase.md 2>/dev/null | head -30 || echo "No prior map — fresh scan"`
@@ -38,6 +38,10 @@ This is NOT a single-repo mapping. You are mapping an entire tech stack — mult
38
38
 
39
39
  !`cat CLAUDE.md 2>/dev/null || echo "No CLAUDE.md found"`
40
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
+
41
45
  ## Discover services
42
46
 
43
47
  ```!
@@ -37,3 +37,17 @@ $ARGUMENTS
37
37
  ## Danger zones
38
38
 
39
39
  !`cat DANGER-ZONES.md 2>/dev/null || echo "No DANGER-ZONES.md found"`
40
+
41
+ ## Prior analysis (from other UV Suite agents)
42
+
43
+ ### Architecture map
44
+
45
+ !`cat uv-out/map-codebase.md 2>/dev/null | head -100 || echo "No codebase map — run /map-codebase first for better review context"`
46
+
47
+ ### Architecture decisions
48
+
49
+ !`cat uv-out/architecture/decisions.md 2>/dev/null | head -60 || echo "No architecture decisions found"`
50
+
51
+ ### Acts plan
52
+
53
+ !`cat uv-out/architecture/acts-plan.md 2>/dev/null | head -60 || echo "No acts plan found"`
@@ -40,6 +40,20 @@ $ARGUMENTS
40
40
 
41
41
  !`cat DANGER-ZONES.md 2>/dev/null || echo "No DANGER-ZONES.md found"`
42
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
+
43
57
  ## Available security tools
44
58
 
45
59
  ```!
@@ -28,3 +28,13 @@ $ARGUMENTS
28
28
  ### Full diff
29
29
 
30
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"`
@@ -26,3 +26,9 @@ $ARGUMENTS
26
26
  ## Existing eval framework
27
27
 
28
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"`
@@ -38,3 +38,13 @@ $ARGUMENTS
38
38
  ## Project test command
39
39
 
40
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"`