uv-suite 0.11.0 → 0.13.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.
@@ -0,0 +1,50 @@
1
+ #!/bin/bash
2
+ # UV Suite Hook: Fast deterministic doc-slop check
3
+ # Event: PostToolUse (Write) — Spike persona
4
+ # Greps for vague adjectives and buzzwords in documentation files. No LLM.
5
+
6
+ INPUT=$(cat)
7
+ FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')
8
+
9
+ if [ -z "$FILE_PATH" ] || [ ! -f "$FILE_PATH" ]; then
10
+ exit 0
11
+ fi
12
+
13
+ EXT="${FILE_PATH##*.}"
14
+
15
+ # Only check markdown and text files
16
+ case "$EXT" in
17
+ md|txt|rst|adoc) ;;
18
+ *) exit 0 ;;
19
+ esac
20
+
21
+ FINDINGS=""
22
+
23
+ # Vague adjectives that say nothing
24
+ MATCH=$(grep -in "robust\|scalable\|comprehensive\|extensible\|maintainable\|enterprise-grade\|battle-tested\|cutting-edge\|state-of-the-art" "$FILE_PATH" 2>/dev/null | head -3)
25
+ if [ -n "$MATCH" ]; then
26
+ FINDINGS="${FINDINGS}Vague adjectives — replace with specific facts: $(echo "$MATCH" | head -1 | sed 's/"/\\"/g'). "
27
+ fi
28
+
29
+ # Evasive verbs
30
+ MATCH=$(grep -in "leverages\|utilizes\|facilitates\|empowers\|enables seamless" "$FILE_PATH" 2>/dev/null | head -3)
31
+ if [ -n "$MATCH" ]; then
32
+ FINDINGS="${FINDINGS}Evasive verbs — say what it actually does: $(echo "$MATCH" | head -1 | sed 's/"/\\"/g'). "
33
+ fi
34
+
35
+ # Authority appeals without specifics
36
+ MATCH=$(grep -in "best practices\|industry-standard\|widely adopted\|production-ready" "$FILE_PATH" 2>/dev/null | head -3)
37
+ if [ -n "$MATCH" ]; then
38
+ FINDINGS="${FINDINGS}Name the specific practice instead of citing authority: $(echo "$MATCH" | head -1 | sed 's/"/\\"/g'). "
39
+ fi
40
+
41
+ if [ -n "$FINDINGS" ]; then
42
+ cat <<EOF
43
+ {
44
+ "continue": true,
45
+ "systemMessage": "Doc slop: ${FINDINGS}"
46
+ }
47
+ EOF
48
+ fi
49
+
50
+ exit 0
package/install.sh CHANGED
@@ -224,19 +224,25 @@ ${HOOKS_TEXT}
224
224
 
225
225
  ### Working practices
226
226
 
227
- **Honesty:** If you can't find a doc, file, or function, say "I did not find X. What should I do?" Don't fabricate. If 2-3 attempts fail, escalate with what you tried.
227
+ **Honesty:** If you can't find something, say "I did not find X. What should I do?" Don't fabricate. If 2-3 attempts fail, escalate with what you tried.
228
228
 
229
- **Parallelism:** Move fast. Spin up parallel agents for independent tasks. Run independent tool calls in the same message. Parallelize wherever possible this is the primary speed lever.
229
+ **Simplicity:** Minimum code that solves the problem. If 200 lines could be 50, rewrite. No abstractions for single-use code. No features beyond what was asked.
230
230
 
231
- **Scope:** Stay focused. If you notice something worth fixing outside scope, mention it at the end, don't silently change it.
231
+ **Surgical changes:** Touch only what's relevant. Don't improve adjacent code, comments, or formatting. Every changed line should trace to the request. Match existing style.
232
232
 
233
- **Completion:** "Done" means verified. Run the tests. Prefer "I ran it and it works" over "should work."
233
+ **Goal-driven:** Define success criteria before coding. Write the test first, then make it pass. For multi-step tasks, state a brief plan with verification for each step.
234
+
235
+ **Parallelism:** Spin up parallel agents for independent tasks. Run independent tool calls in the same message. This is the primary speed lever.
236
+
237
+ **Completion:** "Done" means verified. Run the tests. Run the build. Prefer "I ran it and it works" over "should work."
234
238
 
235
239
  **Failures:** When you fail, say so. Escalate: what you tried, why each failed, what you need.
236
240
 
237
241
  **User context:** If something looks wrong, ask why before fixing. Users have constraints you may not see.
238
242
 
239
- **Session:** Long conversation? Suggest /compact or a new session. Past 90 min, suggest a break.
243
+ **Planning:** Use plan mode for complex tasks. Break work small enough to complete in under 50% context.
244
+
245
+ **Session:** /compact at ~50% context. Past 90 min, take a break.
240
246
 
241
247
  ### Launching sessions
242
248
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uv-suite",
3
- "version": "0.11.0",
3
+ "version": "0.13.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",
@@ -49,11 +49,10 @@
49
49
  "matcher": "Write",
50
50
  "hooks": [
51
51
  {
52
- "type": "prompt",
53
- "prompt": "The agent just wrote a documentation or analysis file. Check for documentation slop: (1) vague adjectives like 'robust', 'scalable', 'comprehensive', 'leverages', 'facilitates', (2) feature lists that could describe any system, (3) overview sections that don't say what the system actually does, (4) claims without specifics ('industry-standard best practices'). If you find slop, respond {\"ok\": false, \"reason\": \"Doc slop: [finding]. Fix: replace with specific facts.\"}. If clean, respond {\"ok\": true}.",
54
- "model": "claude-haiku-4-5",
55
- "timeout": 15,
56
- "statusMessage": "Checking documentation quality..."
52
+ "type": "command",
53
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/doc-slop-grep.sh",
54
+ "timeout": 3,
55
+ "statusMessage": "Doc quality check..."
57
56
  }
58
57
  ]
59
58
  }