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.
- package/README.md +180 -0
- package/agents/claude-code/anti-slop-guard.md +84 -0
- package/agents/claude-code/architect.md +68 -0
- package/agents/claude-code/cartographer.md +99 -0
- package/agents/claude-code/devops.md +43 -0
- package/agents/claude-code/eval-writer.md +57 -0
- package/agents/claude-code/prototype-builder.md +59 -0
- package/agents/claude-code/reviewer.md +76 -0
- package/agents/claude-code/security.md +69 -0
- package/agents/claude-code/spec-writer.md +81 -0
- package/agents/claude-code/test-writer.md +54 -0
- package/agents/codex/anti-slop-guard.toml +12 -0
- package/agents/codex/architect.toml +11 -0
- package/agents/codex/cartographer.toml +16 -0
- package/agents/codex/devops.toml +8 -0
- package/agents/codex/eval-writer.toml +11 -0
- package/agents/codex/prototype-builder.toml +10 -0
- package/agents/codex/reviewer.toml +16 -0
- package/agents/codex/security.toml +14 -0
- package/agents/codex/spec-writer.toml +11 -0
- package/agents/codex/test-writer.toml +13 -0
- package/agents/cursor/anti-slop-guard.mdc +22 -0
- package/agents/cursor/architect.mdc +24 -0
- package/agents/cursor/cartographer.mdc +28 -0
- package/agents/cursor/devops.mdc +16 -0
- package/agents/cursor/eval-writer.mdc +21 -0
- package/agents/cursor/prototype-builder.mdc +25 -0
- package/agents/cursor/reviewer.mdc +26 -0
- package/agents/cursor/security.mdc +20 -0
- package/agents/cursor/spec-writer.mdc +27 -0
- package/agents/cursor/test-writer.mdc +28 -0
- package/agents/portable/anti-slop-guard.md +71 -0
- package/agents/portable/architect.md +83 -0
- package/agents/portable/cartographer.md +64 -0
- package/agents/portable/devops.md +56 -0
- package/agents/portable/eval-writer.md +70 -0
- package/agents/portable/prototype-builder.md +70 -0
- package/agents/portable/reviewer.md +79 -0
- package/agents/portable/security.md +63 -0
- package/agents/portable/spec-writer.md +89 -0
- package/agents/portable/test-writer.md +56 -0
- package/bin/cli.js +84 -0
- package/guardrails/architecture-slop.md +60 -0
- package/guardrails/comment-slop.md +53 -0
- package/guardrails/doc-slop.md +62 -0
- package/guardrails/error-handling-slop.md +65 -0
- package/guardrails/overengineering-slop.md +56 -0
- package/guardrails/test-slop.md +72 -0
- package/hooks/auto-lint.sh +41 -0
- package/hooks/block-destructive.sh +34 -0
- package/hooks/danger-zone-check.sh +42 -0
- package/hooks/session-review-reminder.sh +35 -0
- package/install.sh +230 -0
- package/package.json +39 -0
- package/personas/auto.json +80 -0
- package/personas/professional.json +109 -0
- package/personas/spike.json +54 -0
- package/personas/sport.json +39 -0
- package/settings.json +108 -0
- package/skills/architect/SKILL.md +26 -0
- package/skills/map-codebase/SKILL.md +50 -0
- package/skills/persona/SKILL.md +4 -0
- package/skills/prototype/SKILL.md +27 -0
- package/skills/review/SKILL.md +39 -0
- package/skills/security-review/SKILL.md +73 -0
- package/skills/slop-check/SKILL.md +30 -0
- package/skills/spec/SKILL.md +33 -0
- package/skills/write-evals/SKILL.md +28 -0
- package/skills/write-tests/SKILL.md +40 -0
- 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"`
|