uv-suite 0.1.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 (70) hide show
  1. package/README.md +180 -0
  2. package/agents/claude-code/anti-slop-guard.md +84 -0
  3. package/agents/claude-code/architect.md +68 -0
  4. package/agents/claude-code/cartographer.md +99 -0
  5. package/agents/claude-code/devops.md +43 -0
  6. package/agents/claude-code/eval-writer.md +57 -0
  7. package/agents/claude-code/prototype-builder.md +59 -0
  8. package/agents/claude-code/reviewer.md +76 -0
  9. package/agents/claude-code/security.md +69 -0
  10. package/agents/claude-code/spec-writer.md +81 -0
  11. package/agents/claude-code/test-writer.md +54 -0
  12. package/agents/codex/anti-slop-guard.toml +12 -0
  13. package/agents/codex/architect.toml +11 -0
  14. package/agents/codex/cartographer.toml +16 -0
  15. package/agents/codex/devops.toml +8 -0
  16. package/agents/codex/eval-writer.toml +11 -0
  17. package/agents/codex/prototype-builder.toml +10 -0
  18. package/agents/codex/reviewer.toml +16 -0
  19. package/agents/codex/security.toml +14 -0
  20. package/agents/codex/spec-writer.toml +11 -0
  21. package/agents/codex/test-writer.toml +13 -0
  22. package/agents/cursor/anti-slop-guard.mdc +22 -0
  23. package/agents/cursor/architect.mdc +24 -0
  24. package/agents/cursor/cartographer.mdc +28 -0
  25. package/agents/cursor/devops.mdc +16 -0
  26. package/agents/cursor/eval-writer.mdc +21 -0
  27. package/agents/cursor/prototype-builder.mdc +25 -0
  28. package/agents/cursor/reviewer.mdc +26 -0
  29. package/agents/cursor/security.mdc +20 -0
  30. package/agents/cursor/spec-writer.mdc +27 -0
  31. package/agents/cursor/test-writer.mdc +28 -0
  32. package/agents/portable/anti-slop-guard.md +71 -0
  33. package/agents/portable/architect.md +83 -0
  34. package/agents/portable/cartographer.md +64 -0
  35. package/agents/portable/devops.md +56 -0
  36. package/agents/portable/eval-writer.md +70 -0
  37. package/agents/portable/prototype-builder.md +70 -0
  38. package/agents/portable/reviewer.md +79 -0
  39. package/agents/portable/security.md +63 -0
  40. package/agents/portable/spec-writer.md +89 -0
  41. package/agents/portable/test-writer.md +56 -0
  42. package/bin/cli.js +84 -0
  43. package/guardrails/architecture-slop.md +60 -0
  44. package/guardrails/comment-slop.md +53 -0
  45. package/guardrails/doc-slop.md +62 -0
  46. package/guardrails/error-handling-slop.md +65 -0
  47. package/guardrails/overengineering-slop.md +56 -0
  48. package/guardrails/test-slop.md +72 -0
  49. package/hooks/auto-lint.sh +41 -0
  50. package/hooks/block-destructive.sh +34 -0
  51. package/hooks/danger-zone-check.sh +42 -0
  52. package/hooks/session-review-reminder.sh +35 -0
  53. package/install.sh +230 -0
  54. package/package.json +39 -0
  55. package/personas/auto.json +80 -0
  56. package/personas/professional.json +109 -0
  57. package/personas/spike.json +54 -0
  58. package/personas/sport.json +39 -0
  59. package/settings.json +108 -0
  60. package/skills/architect/SKILL.md +26 -0
  61. package/skills/map-codebase/SKILL.md +50 -0
  62. package/skills/persona/SKILL.md +4 -0
  63. package/skills/prototype/SKILL.md +27 -0
  64. package/skills/review/SKILL.md +39 -0
  65. package/skills/security-review/SKILL.md +73 -0
  66. package/skills/slop-check/SKILL.md +30 -0
  67. package/skills/spec/SKILL.md +33 -0
  68. package/skills/write-evals/SKILL.md +28 -0
  69. package/skills/write-tests/SKILL.md +40 -0
  70. package/uv.sh +56 -0
package/install.sh ADDED
@@ -0,0 +1,230 @@
1
+ #!/bin/bash
2
+ # UV Suite — One-command installer
3
+ # Installs agents, skills, hooks, guardrails, and settings into a project or globally.
4
+ #
5
+ # Usage:
6
+ # ./install.sh # Install into current project (Professional)
7
+ # ./install.sh --persona sport # Fast & lightweight for new projects
8
+ # ./install.sh --persona professional # Full rigor for production code (default)
9
+ # ./install.sh --persona auto # Maximum autonomy, minimal human gates
10
+ # ./install.sh --persona spike # Read-only mode for understanding
11
+ # ./install.sh --global # Install globally (~/.claude/)
12
+ # ./install.sh --project /path # Install into specific project
13
+
14
+ set -e
15
+
16
+ UV_SUITE_DIR="$(cd "$(dirname "$0")" && pwd)"
17
+ INSTALL_MODE="project"
18
+ PERSONA="professional"
19
+ TARGET_DIR=""
20
+
21
+ # Parse arguments
22
+ while [[ $# -gt 0 ]]; do
23
+ case $1 in
24
+ --global)
25
+ INSTALL_MODE="global"
26
+ TARGET_DIR="$HOME/.claude"
27
+ shift
28
+ ;;
29
+ --project)
30
+ INSTALL_MODE="project"
31
+ TARGET_DIR="$2/.claude"
32
+ shift 2
33
+ ;;
34
+ --persona)
35
+ PERSONA="$2"
36
+ if [[ ! "$PERSONA" =~ ^(sport|professional|auto|spike)$ ]]; then
37
+ echo "Unknown persona: $PERSONA"
38
+ echo "Available: sport (lightweight), professional (full rigor), auto (autonomous), spike (research & docs)"
39
+ exit 1
40
+ fi
41
+ shift 2
42
+ ;;
43
+ *)
44
+ echo "Unknown option: $1"
45
+ echo "Usage: ./install.sh [--persona sport|professional|auto|spike] [--global | --project /path]"
46
+ exit 1
47
+ ;;
48
+ esac
49
+ done
50
+
51
+ # Default: current directory
52
+ if [ -z "$TARGET_DIR" ]; then
53
+ TARGET_DIR="$(pwd)/.claude"
54
+ fi
55
+
56
+ PERSONA_LABEL="Professional (full rigor)"
57
+ if [ "$PERSONA" = "sport" ]; then PERSONA_LABEL="Sport (lightweight)"; fi
58
+ if [ "$PERSONA" = "auto" ]; then PERSONA_LABEL="Auto (maximum autonomy)"; fi
59
+ if [ "$PERSONA" = "spike" ]; then PERSONA_LABEL="Spike (research & docs)"; fi
60
+
61
+ echo "╔══════════════════════════════════════╗"
62
+ echo "║ UV Suite Installer ║"
63
+ echo "╚══════════════════════════════════════╝"
64
+ echo ""
65
+ echo "Installing to: $TARGET_DIR"
66
+ echo "Mode: $INSTALL_MODE"
67
+ echo "Persona: $PERSONA_LABEL"
68
+ echo ""
69
+
70
+ # --- Create directory structure ---
71
+ echo "Creating directory structure..."
72
+ mkdir -p "$TARGET_DIR/agents"
73
+ mkdir -p "$TARGET_DIR/skills"
74
+ mkdir -p "$TARGET_DIR/hooks"
75
+ mkdir -p "$TARGET_DIR/rules"
76
+
77
+ # --- Install agents (Claude Code subagent definitions) ---
78
+ echo "Installing 10 agent definitions..."
79
+ cp "$UV_SUITE_DIR/agents/claude-code/"*.md "$TARGET_DIR/agents/"
80
+ echo " ✓ cartographer, spec-writer, architect, reviewer, test-writer"
81
+ echo " ✓ eval-writer, anti-slop-guard, prototype-builder, devops, security"
82
+
83
+ # --- Install skills (slash commands) ---
84
+ echo "Installing 9 skills..."
85
+ for skill_dir in "$UV_SUITE_DIR/skills/"*/; do
86
+ skill_name=$(basename "$skill_dir")
87
+ mkdir -p "$TARGET_DIR/skills/$skill_name"
88
+ cp "$skill_dir/SKILL.md" "$TARGET_DIR/skills/$skill_name/"
89
+ done
90
+ echo " ✓ /map-codebase, /spec, /architect, /review, /write-tests"
91
+ echo " ✓ /write-evals, /slop-check, /prototype, /security-review"
92
+
93
+ # --- Install hooks ---
94
+ echo "Installing 4 hook scripts..."
95
+ cp "$UV_SUITE_DIR/hooks/"*.sh "$TARGET_DIR/hooks/"
96
+ chmod +x "$TARGET_DIR/hooks/"*.sh
97
+ echo " ✓ auto-lint.sh (PostToolUse: auto-format on write)"
98
+ echo " ✓ danger-zone-check.sh (PreToolUse: warn on danger zone files)"
99
+ echo " ✓ block-destructive.sh (PreToolUse: block rm -rf, force push, etc.)"
100
+ echo " ✓ session-review-reminder.sh (Stop: remind to review uncommitted changes)"
101
+ echo " + Real-time slop check (Haiku prompt hook, wired in settings.json)"
102
+
103
+ # --- Install guardrail rules (Sport only) ---
104
+ if [ "$PERSONA" = "professional" ] || [ "$PERSONA" = "auto" ]; then
105
+ echo "Installing 6 guardrail rules..."
106
+ cp "$UV_SUITE_DIR/guardrails/"*.md "$TARGET_DIR/rules/"
107
+ echo " ✓ comment-slop, overengineering-slop, error-handling-slop"
108
+ echo " ✓ test-slop, doc-slop, architecture-slop"
109
+ else
110
+ echo "Skipping guardrail rules ($PERSONA persona — guardrails not needed)"
111
+ echo " Available at: $UV_SUITE_DIR/guardrails/ if you want them later"
112
+ fi
113
+
114
+ # --- Install persona-specific settings ---
115
+ echo "Installing persona: $PERSONA_LABEL..."
116
+ mkdir -p "$TARGET_DIR/personas"
117
+ cp "$UV_SUITE_DIR/personas/"*.json "$TARGET_DIR/personas/" 2>/dev/null || true
118
+
119
+ # Install settings.json from the selected persona
120
+ if [ ! -f "$TARGET_DIR/settings.json" ]; then
121
+ cp "$UV_SUITE_DIR/personas/$PERSONA.json" "$TARGET_DIR/settings.json"
122
+ echo " ✓ Settings from $PERSONA persona"
123
+ else
124
+ # Don't overwrite existing settings.json, use settings.local.json instead
125
+ cp "$UV_SUITE_DIR/personas/$PERSONA.json" "$TARGET_DIR/settings.local.json"
126
+ echo " ✓ Persona applied via settings.local.json (preserves existing settings.json)"
127
+ fi
128
+ echo " ✓ All 3 personas available in $TARGET_DIR/personas/"
129
+ echo " Switch with: cp .claude/personas/sport.json .claude/settings.local.json"
130
+
131
+ # --- Install portable standards (project root, not .claude/) ---
132
+ if [ "$INSTALL_MODE" = "project" ]; then
133
+ PROJECT_ROOT="$(dirname "$TARGET_DIR")"
134
+ echo "Installing portable standards to project root..."
135
+
136
+ for std_file in CODING-STANDARDS.md REVIEW-CHECKLIST.md SPEC-TEMPLATE.md ACTS-TEMPLATE.md; do
137
+ # Only install portable standards if we have them extracted
138
+ if [ -f "$UV_SUITE_DIR/portable-standards/$std_file" ]; then
139
+ cp "$UV_SUITE_DIR/portable-standards/$std_file" "$PROJECT_ROOT/"
140
+ echo " ✓ $std_file"
141
+ fi
142
+ done
143
+ fi
144
+
145
+ # --- Install launcher script ---
146
+ echo "Installing session launcher..."
147
+ cp "$UV_SUITE_DIR/uv.sh" "$TARGET_DIR/../uv.sh" 2>/dev/null || true
148
+ chmod +x "$TARGET_DIR/../uv.sh" 2>/dev/null || true
149
+ echo " ✓ uv.sh (launch sessions with: ./uv.sh sport)"
150
+
151
+ echo ""
152
+ echo "╔══════════════════════════════════════╗"
153
+ echo "║ Installation Complete! ║"
154
+ echo "║ Persona: $(printf '%-24s' "$PERSONA_LABEL") ║"
155
+ echo "╚══════════════════════════════════════╝"
156
+ echo ""
157
+ echo "What was installed:"
158
+ echo ""
159
+ echo " AGENTS (10) $TARGET_DIR/agents/*.md"
160
+ echo " SKILLS (9) $TARGET_DIR/skills/*/SKILL.md"
161
+ echo " HOOKS (4) $TARGET_DIR/hooks/*.sh"
162
+ if [ "$PERSONA" = "professional" ] || [ "$PERSONA" = "auto" ]; then
163
+ echo " GUARDRAILS (6) $TARGET_DIR/rules/*.md"
164
+ fi
165
+ echo " PERSONAS (4) $TARGET_DIR/personas/*.json"
166
+ echo " SETTINGS $TARGET_DIR/settings.json"
167
+ echo ""
168
+
169
+ echo "Available slash commands:"
170
+ echo ""
171
+ echo " /map-codebase [dir] Map a codebase (Cartographer)"
172
+ echo " /spec [requirements] Write a technical spec (Spec Writer)"
173
+ echo " /architect [spec] Design architecture + Acts (Architect)"
174
+ echo " /review [file] Code review (Reviewer)"
175
+ echo " /write-tests [file] Generate tests (Test Writer)"
176
+ echo " /write-evals [prompt] Write AI evaluations (Eval Writer)"
177
+ echo " /slop-check [file] Detect AI slop (Anti-Slop Guard)"
178
+ echo " /prototype [concept] Build a prototype (Prototype Builder)"
179
+ echo " /security-review [file] Security audit (Security Agent)"
180
+ echo ""
181
+
182
+ if [ "$PERSONA" = "sport" ]; then
183
+ echo "Active hooks (Sport — minimal):"
184
+ echo ""
185
+ echo " On file write → auto-format (prettier/ruff/gofmt)"
186
+ echo ""
187
+ echo "Sport mode: fast, autonomous, low cost. All other hooks disabled."
188
+ elif [ "$PERSONA" = "professional" ]; then
189
+ echo "Active hooks (Professional — full rigor):"
190
+ echo ""
191
+ echo " On file write → auto-format (prettier/ruff/gofmt)"
192
+ echo " On file write → real-time slop check (Haiku scans for obvious slop)"
193
+ echo " On file edit → check danger zones (warn if in DANGER-ZONES.md)"
194
+ echo " On bash cmd → block destructive commands (rm -rf, force push)"
195
+ echo " On session end → remind to review uncommitted changes"
196
+ echo ""
197
+ echo "Professional mode: all guardrails active, full review rigor."
198
+ elif [ "$PERSONA" = "auto" ]; then
199
+ echo "Active hooks (Auto — safety net only):"
200
+ echo ""
201
+ echo " On file write → auto-format (prettier/ruff/gofmt)"
202
+ echo " On bash cmd → block truly destructive commands only"
203
+ echo ""
204
+ echo "Auto mode: maximum autonomy. All tools pre-approved. Guardrails"
205
+ echo "active as context rules. No human gates, no review reminders."
206
+ echo "The agent builds, tests, reviews, and iterates on its own."
207
+ elif [ "$PERSONA" = "spike" ]; then
208
+ echo "Active hooks (Spike — doc quality):"
209
+ echo ""
210
+ echo " On doc write → slop check (Haiku catches vague adjectives, non-specific claims)"
211
+ echo ""
212
+ echo "Spike mode: deep understanding + documentation generation. Opus at max effort."
213
+ echo "Can write docs and analysis files. Cannot edit existing code, commit, or push."
214
+ fi
215
+
216
+ echo ""
217
+ echo "Start a session with a persona:"
218
+ echo ""
219
+ echo " ./uv.sh spike Research & docs (Opus, max, doc-slop checked)"
220
+ echo " ./uv.sh sport New projects (Sonnet, high, lint only)"
221
+ echo " ./uv.sh pro Production code (all hooks, all guardrails)"
222
+ echo " ./uv.sh auto Fully autonomous (max effort, everything approved)"
223
+ echo " ./uv.sh Defaults to Professional"
224
+ echo ""
225
+ echo "Or launch Claude directly with a persona:"
226
+ echo ""
227
+ echo " claude --settings .claude/personas/sport.json"
228
+ echo " claude --settings .claude/personas/professional.json"
229
+ echo " claude --settings .claude/personas/auto.json"
230
+ echo " claude --settings .claude/personas/spike.json"
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "uv-suite",
3
+ "version": "0.1.0",
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
+ "author": "Utsav Anand",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/utsavanand/uv-suite.git"
10
+ },
11
+ "homepage": "https://github.com/utsavanand/uv-suite",
12
+ "keywords": [
13
+ "ai",
14
+ "agents",
15
+ "claude-code",
16
+ "cursor",
17
+ "codex",
18
+ "code-review",
19
+ "anti-slop",
20
+ "developer-tools",
21
+ "agentic-engineering"
22
+ ],
23
+ "bin": {
24
+ "uv-suite": "./bin/cli.js"
25
+ },
26
+ "files": [
27
+ "bin/",
28
+ "agents/",
29
+ "skills/",
30
+ "hooks/",
31
+ "guardrails/",
32
+ "personas/",
33
+ "portable-standards/",
34
+ "settings.json",
35
+ "uv.sh",
36
+ "install.sh",
37
+ "README.md"
38
+ ]
39
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
+ "effort": "max",
4
+
5
+ "permissions": {
6
+ "allow": [
7
+ "Read(*)",
8
+ "Write(*)",
9
+ "Edit(*)",
10
+ "Glob(*)",
11
+ "Grep(*)",
12
+ "Agent(cartographer)",
13
+ "Agent(spec-writer)",
14
+ "Agent(architect)",
15
+ "Agent(reviewer)",
16
+ "Agent(test-writer)",
17
+ "Agent(eval-writer)",
18
+ "Agent(anti-slop-guard)",
19
+ "Agent(prototype-builder)",
20
+ "Agent(devops)",
21
+ "Agent(security)",
22
+ "Agent(Explore)",
23
+ "Agent(Plan)",
24
+ "Bash(git *)",
25
+ "Bash(npm *)",
26
+ "Bash(npx *)",
27
+ "Bash(node *)",
28
+ "Bash(pytest *)",
29
+ "Bash(go *)",
30
+ "Bash(cargo *)",
31
+ "Bash(mvn *)",
32
+ "Bash(docker *)",
33
+ "Bash(make *)",
34
+ "Bash(mkdir *)",
35
+ "Bash(ls *)",
36
+ "Bash(cat *)",
37
+ "Bash(find *)",
38
+ "Bash(wc *)",
39
+ "Bash(head *)",
40
+ "Bash(tail *)",
41
+ "Bash(curl *)"
42
+ ],
43
+ "deny": [
44
+ "Bash(rm -rf /)",
45
+ "Bash(rm -rf ~)",
46
+ "Bash(sudo rm -rf *)",
47
+ "Bash(git push --force * main)",
48
+ "Bash(git push --force * master)"
49
+ ]
50
+ },
51
+
52
+ "hooks": {
53
+ "PreToolUse": [
54
+ {
55
+ "matcher": "Bash",
56
+ "hooks": [
57
+ {
58
+ "type": "command",
59
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-destructive.sh",
60
+ "timeout": 5,
61
+ "statusMessage": "Safety check..."
62
+ }
63
+ ]
64
+ }
65
+ ],
66
+ "PostToolUse": [
67
+ {
68
+ "matcher": "Edit|Write",
69
+ "hooks": [
70
+ {
71
+ "type": "command",
72
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/auto-lint.sh",
73
+ "timeout": 15,
74
+ "statusMessage": "Auto-formatting..."
75
+ }
76
+ ]
77
+ }
78
+ ]
79
+ }
80
+ }
@@ -0,0 +1,109 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
+ "effort": "high",
4
+
5
+ "permissions": {
6
+ "allow": [
7
+ "Read(*)",
8
+ "Glob(*)",
9
+ "Grep(*)",
10
+ "Agent(cartographer)",
11
+ "Agent(spec-writer)",
12
+ "Agent(architect)",
13
+ "Agent(reviewer)",
14
+ "Agent(test-writer)",
15
+ "Agent(eval-writer)",
16
+ "Agent(anti-slop-guard)",
17
+ "Agent(prototype-builder)",
18
+ "Agent(devops)",
19
+ "Agent(security)",
20
+ "Agent(Explore)",
21
+ "Agent(Plan)",
22
+ "Bash(git status *)",
23
+ "Bash(git diff *)",
24
+ "Bash(git log *)",
25
+ "Bash(git show *)",
26
+ "Bash(git ls-files *)",
27
+ "Bash(npm test *)",
28
+ "Bash(npm run test *)",
29
+ "Bash(npm run lint *)",
30
+ "Bash(npm run build *)",
31
+ "Bash(npm audit *)",
32
+ "Bash(npx jest *)",
33
+ "Bash(npx vitest *)",
34
+ "Bash(npx prettier *)",
35
+ "Bash(pytest *)",
36
+ "Bash(go test *)",
37
+ "Bash(cargo test *)"
38
+ ],
39
+ "deny": [
40
+ "Bash(rm -rf /)",
41
+ "Bash(rm -rf ~)",
42
+ "Bash(rm -rf .)",
43
+ "Bash(sudo rm *)",
44
+ "Bash(git push --force * main)",
45
+ "Bash(git push --force * master)",
46
+ "Bash(git reset --hard origin/*)"
47
+ ]
48
+ },
49
+
50
+ "hooks": {
51
+ "PreToolUse": [
52
+ {
53
+ "matcher": "Bash",
54
+ "hooks": [
55
+ {
56
+ "type": "command",
57
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-destructive.sh",
58
+ "timeout": 5,
59
+ "statusMessage": "Checking command safety..."
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ "matcher": "Edit|Write",
65
+ "hooks": [
66
+ {
67
+ "type": "command",
68
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/danger-zone-check.sh",
69
+ "timeout": 5,
70
+ "statusMessage": "Checking danger zones..."
71
+ }
72
+ ]
73
+ }
74
+ ],
75
+ "PostToolUse": [
76
+ {
77
+ "matcher": "Edit|Write",
78
+ "hooks": [
79
+ {
80
+ "type": "command",
81
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/auto-lint.sh",
82
+ "timeout": 15,
83
+ "statusMessage": "Auto-formatting..."
84
+ },
85
+ {
86
+ "type": "prompt",
87
+ "prompt": "Quickly scan the code that was just written or edited for the most obvious AI slop patterns: (1) comments that restate the code like '// Initialize the database' above initDatabase(), (2) try/catch around code that can't throw, (3) single-implementation interfaces or factories, (4) toBeTruthy()/toBeDefined() in tests. If you find any of these specific patterns, respond with {\"ok\": false, \"reason\": \"Slop detected: [specific finding with line reference]. Fix: [specific fix].\"} If the code is clean, respond with {\"ok\": true}. Only flag the most obvious violations — do not be overly strict.",
88
+ "model": "claude-haiku",
89
+ "timeout": 15,
90
+ "statusMessage": "Checking for AI slop..."
91
+ }
92
+ ]
93
+ }
94
+ ],
95
+ "Stop": [
96
+ {
97
+ "matcher": "*",
98
+ "hooks": [
99
+ {
100
+ "type": "command",
101
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/session-review-reminder.sh",
102
+ "timeout": 10,
103
+ "statusMessage": "Checking for uncommitted changes..."
104
+ }
105
+ ]
106
+ }
107
+ ]
108
+ }
109
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
+ "model": "claude-opus-4-6",
4
+ "effort": "max",
5
+
6
+ "permissions": {
7
+ "allow": [
8
+ "Read(*)",
9
+ "Write(*)",
10
+ "Glob(*)",
11
+ "Grep(*)",
12
+ "Agent(cartographer)",
13
+ "Agent(anti-slop-guard)",
14
+ "Agent(spec-writer)",
15
+ "Agent(architect)",
16
+ "Agent(Explore)",
17
+ "Agent(Plan)",
18
+ "Bash(git status *)",
19
+ "Bash(git diff *)",
20
+ "Bash(git log *)",
21
+ "Bash(git show *)",
22
+ "Bash(git ls-files *)",
23
+ "Bash(find *)",
24
+ "Bash(wc *)",
25
+ "Bash(head *)",
26
+ "Bash(tail *)"
27
+ ],
28
+ "deny": [
29
+ "Edit(*)",
30
+ "Bash(git commit *)",
31
+ "Bash(git push *)",
32
+ "Bash(rm *)",
33
+ "Bash(npm run *)",
34
+ "Bash(npx *)"
35
+ ]
36
+ },
37
+
38
+ "hooks": {
39
+ "PostToolUse": [
40
+ {
41
+ "matcher": "Write",
42
+ "hooks": [
43
+ {
44
+ "type": "prompt",
45
+ "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}.",
46
+ "model": "claude-haiku",
47
+ "timeout": 15,
48
+ "statusMessage": "Checking documentation quality..."
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
54
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
+ "model": "claude-sonnet-4-6",
4
+ "effort": "high",
5
+
6
+ "permissions": {
7
+ "allow": [
8
+ "Read(*)",
9
+ "Write(*)",
10
+ "Edit(*)",
11
+ "Glob(*)",
12
+ "Grep(*)",
13
+ "Agent(prototype-builder)",
14
+ "Agent(cartographer)",
15
+ "Agent(spec-writer)",
16
+ "Agent(Explore)",
17
+ "Bash(npm *)",
18
+ "Bash(npx *)",
19
+ "Bash(node *)",
20
+ "Bash(git *)"
21
+ ]
22
+ },
23
+
24
+ "hooks": {
25
+ "PostToolUse": [
26
+ {
27
+ "matcher": "Edit|Write",
28
+ "hooks": [
29
+ {
30
+ "type": "command",
31
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/auto-lint.sh",
32
+ "timeout": 15,
33
+ "statusMessage": "Auto-formatting..."
34
+ }
35
+ ]
36
+ }
37
+ ]
38
+ }
39
+ }
package/settings.json ADDED
@@ -0,0 +1,108 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
+
4
+ "permissions": {
5
+ "allow": [
6
+ "Read(*)",
7
+ "Glob(*)",
8
+ "Grep(*)",
9
+ "Agent(cartographer)",
10
+ "Agent(spec-writer)",
11
+ "Agent(architect)",
12
+ "Agent(reviewer)",
13
+ "Agent(test-writer)",
14
+ "Agent(eval-writer)",
15
+ "Agent(anti-slop-guard)",
16
+ "Agent(prototype-builder)",
17
+ "Agent(devops)",
18
+ "Agent(security)",
19
+ "Agent(Explore)",
20
+ "Agent(Plan)",
21
+ "Bash(git status *)",
22
+ "Bash(git diff *)",
23
+ "Bash(git log *)",
24
+ "Bash(git show *)",
25
+ "Bash(git ls-files *)",
26
+ "Bash(npm test *)",
27
+ "Bash(npm run test *)",
28
+ "Bash(npm run lint *)",
29
+ "Bash(npm run build *)",
30
+ "Bash(npm audit *)",
31
+ "Bash(npx jest *)",
32
+ "Bash(npx vitest *)",
33
+ "Bash(npx prettier *)",
34
+ "Bash(pytest *)",
35
+ "Bash(go test *)",
36
+ "Bash(cargo test *)"
37
+ ],
38
+ "deny": [
39
+ "Bash(rm -rf /)",
40
+ "Bash(rm -rf ~)",
41
+ "Bash(rm -rf .)",
42
+ "Bash(sudo rm *)",
43
+ "Bash(git push --force * main)",
44
+ "Bash(git push --force * master)",
45
+ "Bash(git reset --hard origin/*)"
46
+ ]
47
+ },
48
+
49
+ "hooks": {
50
+ "PreToolUse": [
51
+ {
52
+ "matcher": "Bash",
53
+ "hooks": [
54
+ {
55
+ "type": "command",
56
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-destructive.sh",
57
+ "timeout": 5,
58
+ "statusMessage": "Checking command safety..."
59
+ }
60
+ ]
61
+ },
62
+ {
63
+ "matcher": "Edit|Write",
64
+ "hooks": [
65
+ {
66
+ "type": "command",
67
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/danger-zone-check.sh",
68
+ "timeout": 5,
69
+ "statusMessage": "Checking danger zones..."
70
+ }
71
+ ]
72
+ }
73
+ ],
74
+ "PostToolUse": [
75
+ {
76
+ "matcher": "Edit|Write",
77
+ "hooks": [
78
+ {
79
+ "type": "command",
80
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/auto-lint.sh",
81
+ "timeout": 15,
82
+ "statusMessage": "Auto-formatting..."
83
+ },
84
+ {
85
+ "type": "prompt",
86
+ "prompt": "Quickly scan the code that was just written or edited for the most obvious AI slop patterns: (1) comments that restate the code like '// Initialize the database' above initDatabase(), (2) try/catch around code that can't throw, (3) single-implementation interfaces or factories, (4) toBeTruthy()/toBeDefined() in tests. If you find any of these specific patterns, respond with {\"ok\": false, \"reason\": \"Slop detected: [specific finding with line reference]. Fix: [specific fix].\"} If the code is clean, respond with {\"ok\": true}. Only flag the most obvious violations — do not be overly strict.",
87
+ "model": "claude-haiku",
88
+ "timeout": 15,
89
+ "statusMessage": "Checking for AI slop..."
90
+ }
91
+ ]
92
+ }
93
+ ],
94
+ "Stop": [
95
+ {
96
+ "matcher": "*",
97
+ "hooks": [
98
+ {
99
+ "type": "command",
100
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/session-review-reminder.sh",
101
+ "timeout": 10,
102
+ "statusMessage": "Checking for uncommitted changes..."
103
+ }
104
+ ]
105
+ }
106
+ ]
107
+ }
108
+ }
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: architect
3
+ description: >
4
+ Design system architecture and decompose work into Acts with tasks, dependencies, and cycle budgets.
5
+ Use after a spec is approved, before coding begins.
6
+ argument-hint: "[spec-file-or-description]"
7
+ user-invocable: true
8
+ context: fork
9
+ agent: architect
10
+ model: claude-opus-4-6
11
+ effort: high
12
+ allowed-tools:
13
+ - Read(*)
14
+ - Grep(*)
15
+ - Glob(*)
16
+ - Write(*)
17
+ - Bash(git log *)
18
+ ---
19
+
20
+ ## Input
21
+
22
+ $ARGUMENTS
23
+
24
+ ## Project context
25
+
26
+ !`cat CLAUDE.md 2>/dev/null || echo "No CLAUDE.md found"`