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
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: map-codebase
|
|
3
|
+
description: >
|
|
4
|
+
Map a codebase or directory: build a knowledge graph (via Graphify if available),
|
|
5
|
+
then produce architecture overview, business domain map, sequence diagrams, and
|
|
6
|
+
entry points. Use when entering a new codebase or unfamiliar area.
|
|
7
|
+
argument-hint: "[directory-or-question]"
|
|
8
|
+
user-invocable: true
|
|
9
|
+
context: fork
|
|
10
|
+
agent: cartographer
|
|
11
|
+
model: claude-opus-4-6
|
|
12
|
+
effort: high
|
|
13
|
+
allowed-tools:
|
|
14
|
+
- Read(*)
|
|
15
|
+
- Grep(*)
|
|
16
|
+
- Glob(*)
|
|
17
|
+
- Bash(graphify *)
|
|
18
|
+
- Bash(find *)
|
|
19
|
+
- Bash(git log *)
|
|
20
|
+
- Bash(git ls-files *)
|
|
21
|
+
- Bash(wc *)
|
|
22
|
+
- Bash(head *)
|
|
23
|
+
- Bash(pip *)
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Target
|
|
27
|
+
|
|
28
|
+
$ARGUMENTS
|
|
29
|
+
|
|
30
|
+
If no target specified, map the current project root.
|
|
31
|
+
|
|
32
|
+
## Graphify availability
|
|
33
|
+
|
|
34
|
+
```!
|
|
35
|
+
graphify --version 2>/dev/null || echo "NOT_INSTALLED"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Existing knowledge graph (if previously generated)
|
|
39
|
+
|
|
40
|
+
```!
|
|
41
|
+
cat graphify-out/GRAPH_REPORT.md 2>/dev/null | head -80 || echo "No existing graph found"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Project context
|
|
45
|
+
|
|
46
|
+
!`cat CLAUDE.md 2>/dev/null || echo "No CLAUDE.md found"`
|
|
47
|
+
|
|
48
|
+
## Danger zones
|
|
49
|
+
|
|
50
|
+
!`cat DANGER-ZONES.md 2>/dev/null || echo "No DANGER-ZONES.md found"`
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: prototype
|
|
3
|
+
description: >
|
|
4
|
+
Build an interactive prototype as a static React site. For concept exploration,
|
|
5
|
+
stakeholder demos, presentations, and documentation websites.
|
|
6
|
+
argument-hint: "[concept-description]"
|
|
7
|
+
user-invocable: true
|
|
8
|
+
context: fork
|
|
9
|
+
agent: prototype-builder
|
|
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 *)
|
|
19
|
+
- Bash(npx *)
|
|
20
|
+
- Bash(node *)
|
|
21
|
+
- Bash(mkdir *)
|
|
22
|
+
- Bash(ls *)
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Concept
|
|
26
|
+
|
|
27
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review
|
|
3
|
+
description: >
|
|
4
|
+
Code review for correctness, security, performance, maintainability, and AI slop.
|
|
5
|
+
Use before merging or as self-review.
|
|
6
|
+
argument-hint: "[file-or-branch]"
|
|
7
|
+
user-invocable: true
|
|
8
|
+
context: fork
|
|
9
|
+
agent: reviewer
|
|
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
|
+
- Bash(git show *)
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Changes to review
|
|
22
|
+
|
|
23
|
+
!`git diff --cached --stat 2>/dev/null || git diff --stat 2>/dev/null || echo "No staged or unstaged changes found"`
|
|
24
|
+
|
|
25
|
+
### Full diff
|
|
26
|
+
|
|
27
|
+
!`git diff --cached 2>/dev/null || git diff 2>/dev/null || echo "No diff available"`
|
|
28
|
+
|
|
29
|
+
## Additional target
|
|
30
|
+
|
|
31
|
+
$ARGUMENTS
|
|
32
|
+
|
|
33
|
+
## Project context
|
|
34
|
+
|
|
35
|
+
!`cat CLAUDE.md 2>/dev/null || echo "No CLAUDE.md found"`
|
|
36
|
+
|
|
37
|
+
## Danger zones
|
|
38
|
+
|
|
39
|
+
!`cat DANGER-ZONES.md 2>/dev/null || echo "No DANGER-ZONES.md found"`
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
## Available security tools
|
|
44
|
+
|
|
45
|
+
```!
|
|
46
|
+
echo "=== Semgrep ===" && semgrep --version 2>/dev/null || echo "not installed (pip install semgrep)"
|
|
47
|
+
echo "=== Gitleaks ===" && gitleaks version 2>/dev/null || echo "not installed (brew install gitleaks)"
|
|
48
|
+
echo "=== Trivy ===" && trivy --version 2>/dev/null || echo "not installed (brew install trivy)"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## SAST scan (Semgrep, if available)
|
|
52
|
+
|
|
53
|
+
```!
|
|
54
|
+
semgrep --config auto --json --quiet . 2>/dev/null | head -100 || echo "Semgrep not available — will use AI-only analysis"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Secret detection (Gitleaks, if available)
|
|
58
|
+
|
|
59
|
+
```!
|
|
60
|
+
gitleaks detect --source . --no-git --report-format json 2>/dev/null | head -50 || echo "Gitleaks not available — falling back to grep"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Grep-based secret scan (fallback)
|
|
64
|
+
|
|
65
|
+
```!
|
|
66
|
+
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"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Dependency audit
|
|
70
|
+
|
|
71
|
+
```!
|
|
72
|
+
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"
|
|
73
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
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 ""`
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec
|
|
3
|
+
description: >
|
|
4
|
+
Convert requirements into a structured technical specification. Use when starting a new feature
|
|
5
|
+
or receiving vague requirements.
|
|
6
|
+
argument-hint: "[requirements-description]"
|
|
7
|
+
user-invocable: true
|
|
8
|
+
context: fork
|
|
9
|
+
agent: spec-writer
|
|
10
|
+
model: claude-opus-4-6
|
|
11
|
+
effort: high
|
|
12
|
+
allowed-tools:
|
|
13
|
+
- Read(*)
|
|
14
|
+
- Grep(*)
|
|
15
|
+
- Glob(*)
|
|
16
|
+
- Write(*)
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Requirements
|
|
20
|
+
|
|
21
|
+
$ARGUMENTS
|
|
22
|
+
|
|
23
|
+
## Project context
|
|
24
|
+
|
|
25
|
+
!`cat CLAUDE.md 2>/dev/null || echo "No CLAUDE.md found"`
|
|
26
|
+
|
|
27
|
+
## Existing architecture
|
|
28
|
+
|
|
29
|
+
!`ls -la docs/architecture* 2>/dev/null || echo "No architecture docs found"`
|
|
30
|
+
|
|
31
|
+
## Today's date
|
|
32
|
+
|
|
33
|
+
!`date +%Y-%m-%d`
|
|
@@ -0,0 +1,28 @@
|
|
|
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"`
|
|
@@ -0,0 +1,40 @@
|
|
|
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"`
|
package/uv.sh
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# UV Suite — Session launcher
|
|
3
|
+
# Starts a Claude Code session with the specified persona.
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
# uv spike Start a Spike session (research & docs)
|
|
7
|
+
# uv sport Start a Sport session (fast, new projects)
|
|
8
|
+
# uv pro Start a Professional session (production code)
|
|
9
|
+
# uv auto Start an Auto session (fully autonomous)
|
|
10
|
+
# uv Start with default (Professional)
|
|
11
|
+
|
|
12
|
+
PERSONA="${1:-pro}"
|
|
13
|
+
shift 2>/dev/null # consume the persona arg, pass the rest to claude
|
|
14
|
+
|
|
15
|
+
# Resolve persona to settings file
|
|
16
|
+
case "$PERSONA" in
|
|
17
|
+
spike)
|
|
18
|
+
SETTINGS=".claude/personas/spike.json"
|
|
19
|
+
LABEL="UV Spike — research & docs (Opus, max effort, doc-slop checked)"
|
|
20
|
+
;;
|
|
21
|
+
sport)
|
|
22
|
+
SETTINGS=".claude/personas/sport.json"
|
|
23
|
+
LABEL="UV Sport — lightweight (Sonnet, high effort, lint only)"
|
|
24
|
+
;;
|
|
25
|
+
pro|professional)
|
|
26
|
+
SETTINGS=".claude/personas/professional.json"
|
|
27
|
+
LABEL="UV Professional — full rigor (all hooks, all guardrails)"
|
|
28
|
+
;;
|
|
29
|
+
auto)
|
|
30
|
+
SETTINGS=".claude/personas/auto.json"
|
|
31
|
+
LABEL="UV Auto — autonomous (max effort, everything approved)"
|
|
32
|
+
;;
|
|
33
|
+
*)
|
|
34
|
+
echo "Unknown persona: $PERSONA"
|
|
35
|
+
echo ""
|
|
36
|
+
echo "Usage: uv [spike|sport|pro|auto]"
|
|
37
|
+
echo ""
|
|
38
|
+
echo " spike Research & documentation (Opus, max, doc-slop hook)"
|
|
39
|
+
echo " sport New projects, prototyping (Sonnet, high, lint only)"
|
|
40
|
+
echo " pro Production code (all hooks, all guardrails, human-gated)"
|
|
41
|
+
echo " auto Fully autonomous (max effort, everything auto-approved)"
|
|
42
|
+
echo ""
|
|
43
|
+
echo " uv Defaults to 'pro'"
|
|
44
|
+
exit 1
|
|
45
|
+
;;
|
|
46
|
+
esac
|
|
47
|
+
|
|
48
|
+
if [ ! -f "$SETTINGS" ]; then
|
|
49
|
+
echo "Settings file not found: $SETTINGS"
|
|
50
|
+
echo "Run install.sh first to set up UV Suite in this project."
|
|
51
|
+
exit 1
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
echo "$LABEL"
|
|
55
|
+
echo ""
|
|
56
|
+
exec claude --settings "$SETTINGS" "$@"
|