devflow-kit 0.1.2 → 0.2.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/CHANGELOG.md +58 -0
- package/README.md +3 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +106 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +42 -2
- package/dist/commands/uninstall.js.map +1 -1
- package/package.json +1 -1
- package/src/claude/agents/devflow/audit-database.md +22 -19
- package/src/claude/agents/devflow/audit-dependencies.md +23 -24
- package/src/claude/agents/devflow/audit-documentation.md +307 -0
- package/src/claude/agents/devflow/audit-tests.md +348 -0
- package/src/claude/agents/devflow/catch-up.md +47 -21
- package/src/claude/agents/devflow/commit.md +66 -31
- package/src/claude/agents/devflow/research.md +52 -33
- package/src/claude/commands/devflow/pre-commit.md +6 -0
- package/src/claude/commands/devflow/pre-pr.md +51 -6
|
@@ -77,12 +77,36 @@ For each found status document:
|
|
|
77
77
|
# Check if "completed" features actually work
|
|
78
78
|
echo "=== VALIDATING STATUS CLAIMS ==="
|
|
79
79
|
|
|
80
|
-
#
|
|
81
|
-
echo "
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
# Detect and run project's test command
|
|
81
|
+
echo "Attempting to run tests..."
|
|
82
|
+
TEST_CMD=""
|
|
83
|
+
BUILD_CMD=""
|
|
84
|
+
|
|
85
|
+
# Auto-detect test command from common manifest files
|
|
86
|
+
if [ -f "package.json" ]; then
|
|
87
|
+
TEST_CMD=$(command -v jq >/dev/null && jq -r '.scripts.test // empty' package.json 2>/dev/null || grep -o '"test"[^"]*"[^"]*"' package.json | cut -d'"' -f4)
|
|
88
|
+
BUILD_CMD=$(command -v jq >/dev/null && jq -r '.scripts.build // empty' package.json 2>/dev/null || grep -o '"build"[^"]*"[^"]*"' package.json | cut -d'"' -f4)
|
|
89
|
+
elif [ -f "Makefile" ]; then
|
|
90
|
+
grep -q "^test:" Makefile && TEST_CMD="make test"
|
|
91
|
+
grep -q "^build:" Makefile && BUILD_CMD="make build"
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
# Run tests if detected
|
|
95
|
+
if [ -n "$TEST_CMD" ]; then
|
|
96
|
+
echo "Running: $TEST_CMD"
|
|
97
|
+
eval $TEST_CMD 2>&1 | head -20 || echo "⚠️ Tests failed - verify 'all tests passing' claims"
|
|
98
|
+
else
|
|
99
|
+
echo "ℹ️ No test command auto-detected. Manually verify test claims."
|
|
100
|
+
echo " Try common commands: npm test, pytest, cargo test, go test, mvn test, etc."
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
# Run build if detected
|
|
104
|
+
if [ -n "$BUILD_CMD" ]; then
|
|
105
|
+
echo "Running: $BUILD_CMD"
|
|
106
|
+
eval $BUILD_CMD 2>&1 | head -20 || echo "⚠️ Build failed - verify 'build successful' claims"
|
|
107
|
+
else
|
|
108
|
+
echo "ℹ️ No build command auto-detected. Manually verify build claims."
|
|
109
|
+
fi
|
|
86
110
|
|
|
87
111
|
# Check for claimed files/features
|
|
88
112
|
echo "Verifying claimed file changes..."
|
|
@@ -90,21 +114,23 @@ git status --porcelain | head -10
|
|
|
90
114
|
|
|
91
115
|
# Look for obvious broken states
|
|
92
116
|
echo "Checking for red flags..."
|
|
93
|
-
find . -name "*.tmp" -o -name "*.bak" -o -name "*~" | head -5
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
117
|
+
find . -type f \( -name "*.tmp" -o -name "*.bak" -o -name "*~" \) ! -path "*/node_modules/*" ! -path "*/.git/*" | head -5
|
|
118
|
+
|
|
119
|
+
# Search for TODO/FIXME across all source files (language-agnostic)
|
|
120
|
+
echo "Scanning for TODO/FIXME markers..."
|
|
121
|
+
find . -type f ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/vendor/*" ! -path "*/target/*" ! -path "*/build/*" ! -path "*/dist/*" \
|
|
122
|
+
\( -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" -o -name "*.py" -o -name "*.go" -o -name "*.rs" \
|
|
123
|
+
-o -name "*.java" -o -name "*.c" -o -name "*.cpp" -o -name "*.h" -o -name "*.rb" -o -name "*.php" \
|
|
124
|
+
-o -name "*.cs" -o -name "*.swift" -o -name "*.kt" -o -name "*.scala" \) \
|
|
125
|
+
-exec grep -l "TODO\|FIXME\|HACK\|XXX" {} \; 2>/dev/null | head -5
|
|
126
|
+
|
|
127
|
+
# Generic dependency check
|
|
128
|
+
echo "Checking dependency health..."
|
|
129
|
+
for manifest in package.json requirements.txt Cargo.toml go.mod Gemfile pom.xml; do
|
|
130
|
+
if [ -f "$manifest" ]; then
|
|
131
|
+
echo "Found: $manifest - verify dependencies are installed for your environment"
|
|
132
|
+
fi
|
|
133
|
+
done
|
|
108
134
|
|
|
109
135
|
echo "=== END VALIDATION ==="
|
|
110
136
|
```
|
|
@@ -10,15 +10,43 @@ You are a commit specialist focused on helping developers create clean, atomic,
|
|
|
10
10
|
**⚠️ CRITICAL PHILOSOPHY**: Never commit secrets, temp files, or unrelated changes. Always create atomic commits with clear, descriptive messages. Git history is documentation - make it valuable.
|
|
11
11
|
|
|
12
12
|
**⚠️ CRITICAL GIT OPERATIONS**:
|
|
13
|
-
- ALWAYS
|
|
13
|
+
- ALWAYS check for lock file before operations and wait for release
|
|
14
14
|
- NEVER run git commands in parallel (causes `.git/index.lock` conflicts)
|
|
15
|
-
- ALWAYS clean lock file before git operations: `rm -f .git/index.lock && git ...`
|
|
16
15
|
- Use SINGLE bash commands with `&&` chains, not multiple separate commands
|
|
16
|
+
- Add explicit `wait` after git operations to ensure process completion
|
|
17
|
+
- Use command substitution patterns that force synchronous execution
|
|
17
18
|
|
|
18
19
|
## Your Task
|
|
19
20
|
|
|
20
21
|
Help developers create intelligent, safe, and atomic commits by analyzing changes, detecting issues, grouping related files, and generating clear commit messages.
|
|
21
22
|
|
|
23
|
+
### Step 0: Wait for Lock Release (CRITICAL)
|
|
24
|
+
|
|
25
|
+
Before ANY git operation, ensure no lock file exists. If it does, wait for it to be released:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Function to wait for lock file release (prevents zombie process issues)
|
|
29
|
+
wait_for_lock_release() {
|
|
30
|
+
local max_wait=10
|
|
31
|
+
local waited=0
|
|
32
|
+
while [ -f .git/index.lock ]; do
|
|
33
|
+
if [ $waited -ge $max_wait ]; then
|
|
34
|
+
echo "❌ ERROR: .git/index.lock still exists after ${max_wait}s"
|
|
35
|
+
echo "Another git process may be running, or a process crashed."
|
|
36
|
+
echo "Check: ps aux | grep git"
|
|
37
|
+
return 1
|
|
38
|
+
fi
|
|
39
|
+
echo "⏳ Waiting for git lock to be released... (${waited}s)"
|
|
40
|
+
sleep 1
|
|
41
|
+
waited=$((waited + 1))
|
|
42
|
+
done
|
|
43
|
+
return 0
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
# Always call this before git operations
|
|
47
|
+
wait_for_lock_release || exit 1
|
|
48
|
+
```
|
|
49
|
+
|
|
22
50
|
### Step 1: Analyze Uncommitted Changes
|
|
23
51
|
|
|
24
52
|
First, check what changes are staged and unstaged.
|
|
@@ -28,18 +56,18 @@ First, check what changes are staged and unstaged.
|
|
|
28
56
|
```bash
|
|
29
57
|
echo "=== ANALYZING UNCOMMITTED CHANGES ==="
|
|
30
58
|
|
|
31
|
-
#
|
|
32
|
-
|
|
59
|
+
# Ensure no lock file, then get uncommitted changes
|
|
60
|
+
wait_for_lock_release && git status --porcelain; wait
|
|
33
61
|
|
|
34
|
-
# Count files by status
|
|
35
|
-
MODIFIED=$(git status --porcelain | grep "^ M" | wc -l)
|
|
36
|
-
STAGED=$(git status --porcelain | grep "^M" | wc -l)
|
|
37
|
-
UNTRACKED=$(git status --porcelain | grep "^??" | wc -l)
|
|
62
|
+
# Count files by status (using command substitution for synchronous execution)
|
|
63
|
+
MODIFIED=$(git status --porcelain | grep "^ M" | wc -l); wait
|
|
64
|
+
STAGED=$(git status --porcelain | grep "^M" | wc -l); wait
|
|
65
|
+
UNTRACKED=$(git status --porcelain | grep "^??" | wc -l); wait
|
|
38
66
|
|
|
39
67
|
echo "Modified: $MODIFIED, Staged: $STAGED, Untracked: $UNTRACKED"
|
|
40
68
|
|
|
41
|
-
# Show detailed diff
|
|
42
|
-
git diff HEAD --stat
|
|
69
|
+
# Show detailed diff (explicit wait after)
|
|
70
|
+
git diff HEAD --stat; wait
|
|
43
71
|
echo ""
|
|
44
72
|
```
|
|
45
73
|
|
|
@@ -97,8 +125,8 @@ TEST_PATTERNS=(
|
|
|
97
125
|
|
|
98
126
|
DANGEROUS_FILES=""
|
|
99
127
|
|
|
100
|
-
# Scan uncommitted files against patterns
|
|
101
|
-
for file in $(git diff HEAD --name-only); do
|
|
128
|
+
# Scan uncommitted files against patterns (ensure git completes)
|
|
129
|
+
for file in $(git diff HEAD --name-only; wait); do
|
|
102
130
|
# Check against all patterns
|
|
103
131
|
for pattern in "${SENSITIVE_PATTERNS[@]}" "${TEMP_PATTERNS[@]}" "${TEST_PATTERNS[@]}"; do
|
|
104
132
|
if [[ "$file" == $pattern ]]; then
|
|
@@ -135,8 +163,8 @@ Analyze the changes and group them into logical, atomic commits:
|
|
|
135
163
|
```bash
|
|
136
164
|
echo "=== GROUPING CHANGES ==="
|
|
137
165
|
|
|
138
|
-
# Get all changed files with their paths
|
|
139
|
-
git diff HEAD --name-only > /tmp/changed_files.txt
|
|
166
|
+
# Get all changed files with their paths (explicit wait for completion)
|
|
167
|
+
git diff HEAD --name-only > /tmp/changed_files.txt; wait
|
|
140
168
|
|
|
141
169
|
# Analyze files and suggest groupings
|
|
142
170
|
# Group by:
|
|
@@ -254,14 +282,16 @@ Message:
|
|
|
254
282
|
|
|
255
283
|
After user confirmation, execute the commits **sequentially** to avoid race conditions:
|
|
256
284
|
|
|
257
|
-
**CRITICAL**: All git commands MUST run sequentially
|
|
285
|
+
**CRITICAL**: All git commands MUST run sequentially with proper wait handling to prevent `.git/index.lock` conflicts.
|
|
258
286
|
|
|
259
287
|
```bash
|
|
260
|
-
# For each commit group,
|
|
288
|
+
# For each commit group, wait for lock release, then execute sequentially:
|
|
289
|
+
|
|
290
|
+
# STEP 1: Wait for any existing lock to be released
|
|
291
|
+
wait_for_lock_release || { echo "❌ Lock wait failed"; exit 1; }
|
|
261
292
|
|
|
262
|
-
#
|
|
263
|
-
|
|
264
|
-
git add file1 file2 file3 && \
|
|
293
|
+
# STEP 2: Execute commit operations in single chain with explicit waits
|
|
294
|
+
git add file1 file2 file3; wait && \
|
|
265
295
|
git commit -m "$(cat <<'EOF'
|
|
266
296
|
type: short summary
|
|
267
297
|
|
|
@@ -273,22 +303,27 @@ Closes #issue
|
|
|
273
303
|
|
|
274
304
|
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
275
305
|
EOF
|
|
276
|
-
)" && \
|
|
277
|
-
git log -1 --oneline && \
|
|
306
|
+
)"; wait && \
|
|
307
|
+
git log -1 --oneline; wait && \
|
|
278
308
|
echo "✅ Commit created successfully"
|
|
279
309
|
|
|
280
|
-
#
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
#
|
|
284
|
-
#
|
|
310
|
+
# STEP 3: Explicit final wait to ensure all git processes complete
|
|
311
|
+
wait
|
|
312
|
+
|
|
313
|
+
# IMPORTANT: This pattern ensures:
|
|
314
|
+
# 1. Wait for lock release before operations (prevents zombie conflicts)
|
|
315
|
+
# 2. Sequential execution with && chains (no parallel operations)
|
|
316
|
+
# 3. Explicit wait after each git command (ensures process completion)
|
|
317
|
+
# 4. Final wait at end (reaps any remaining child processes)
|
|
318
|
+
# 5. Any failure stops the entire chain immediately
|
|
285
319
|
```
|
|
286
320
|
|
|
287
|
-
**Why
|
|
288
|
-
- Prevents
|
|
289
|
-
- Ensures git
|
|
290
|
-
-
|
|
291
|
-
-
|
|
321
|
+
**Why This Pattern Prevents Lock Issues**:
|
|
322
|
+
- **Wait for lock release**: Prevents starting operations while lock exists
|
|
323
|
+
- **Explicit `wait` commands**: Ensures git processes fully complete and are reaped
|
|
324
|
+
- **Command substitution**: Forces synchronous execution (parent waits for child)
|
|
325
|
+
- **Sequential chains**: No parallel git operations that could conflict
|
|
326
|
+
- **Timeout handling**: Fails gracefully if lock persists (indicates real problem)
|
|
292
327
|
|
|
293
328
|
### Step 7: Post-Commit Summary
|
|
294
329
|
|
|
@@ -118,20 +118,20 @@ For each approach, document:
|
|
|
118
118
|
```bash
|
|
119
119
|
echo "=== DOCUMENTATION RESEARCH ==="
|
|
120
120
|
|
|
121
|
-
#
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
121
|
+
# Auto-detect project stack from common manifest files
|
|
122
|
+
echo "Detecting project stack..."
|
|
123
|
+
for manifest in package.json requirements.txt Pipfile Cargo.toml go.mod Gemfile pom.xml build.gradle composer.json Package.swift; do
|
|
124
|
+
if [ -f "$manifest" ]; then
|
|
125
|
+
echo "=== Found: $manifest ==="
|
|
126
|
+
head -30 "$manifest" | grep -i "depend\|version\|name" || head -30 "$manifest"
|
|
127
|
+
echo ""
|
|
128
|
+
fi
|
|
129
|
+
done
|
|
130
|
+
|
|
131
|
+
# Show detected languages from git (file extensions)
|
|
132
|
+
echo "Primary file types in project:"
|
|
133
|
+
find . -type f ! -path "*/.*" ! -path "*/node_modules/*" ! -path "*/vendor/*" ! -path "*/target/*" ! -path "*/build/*" ! -path "*/dist/*" 2>/dev/null \
|
|
134
|
+
| sed 's/.*\.//' | sort | uniq -c | sort -rn | head -10
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
**For each relevant library/framework**:
|
|
@@ -185,17 +185,23 @@ echo "=== CODEBASE PATTERN ANALYSIS ==="
|
|
|
185
185
|
# Find similar existing implementations
|
|
186
186
|
echo "Searching for similar patterns..."
|
|
187
187
|
|
|
188
|
-
#
|
|
189
|
-
#
|
|
188
|
+
# Generic search across all source files (language-agnostic)
|
|
189
|
+
# Example: If implementing auth, adapt the search term below
|
|
190
|
+
# find . -type f \( -name "*.js" -o -name "*.ts" -o -name "*.py" -o -name "*.go" -o -name "*.rs" \
|
|
191
|
+
# -o -name "*.java" -o -name "*.rb" -o -name "*.php" -o -name "*.cs" -o -name "*.cpp" \) \
|
|
192
|
+
# ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/vendor/*" ! -path "*/target/*" \
|
|
193
|
+
# -exec grep -l "auth\|authenticate" {} \; | head -20
|
|
190
194
|
|
|
191
195
|
# Find architectural patterns
|
|
192
196
|
echo "Analyzing project structure..."
|
|
193
197
|
ls -la | head -20
|
|
194
|
-
find . -type f -name "*.config.*" -o -name "*.json"
|
|
198
|
+
find . -type f \( -name "*.config.*" -o -name "*.json" -o -name "*.yaml" -o -name "*.yml" -o -name "*.toml" \) \
|
|
199
|
+
! -path "*/node_modules/*" ! -path "*/.git/*" | head -15
|
|
195
200
|
|
|
196
|
-
# Look for test patterns
|
|
201
|
+
# Look for test patterns (language-agnostic)
|
|
197
202
|
echo "Checking test patterns..."
|
|
198
|
-
find . -type f -name "
|
|
203
|
+
find . -type f \( -name "*test*" -o -name "*spec*" -o -name "*Test*" -o -name "*Spec*" \) \
|
|
204
|
+
! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/vendor/*" | head -15
|
|
199
205
|
```
|
|
200
206
|
|
|
201
207
|
**Analysis Areas**:
|
|
@@ -217,17 +223,22 @@ find . -type f -name "*.test.*" -o -name "*.spec.*" | head -10
|
|
|
217
223
|
### 4.2 Code Style & Conventions
|
|
218
224
|
|
|
219
225
|
```bash
|
|
220
|
-
#
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
fi
|
|
226
|
+
# Auto-detect language configuration files
|
|
227
|
+
echo "=== DETECTING CODE STYLE & CONVENTIONS ==="
|
|
228
|
+
|
|
229
|
+
# Check for common configuration files across languages
|
|
230
|
+
for config in tsconfig.json jsconfig.json .eslintrc* .prettierrc* pyproject.toml setup.cfg .pylintrc \
|
|
231
|
+
.rubocop.yml Cargo.toml rustfmt.toml .editorconfig .clang-format checkstyle.xml; do
|
|
232
|
+
if [ -f "$config" ] || ls $config 2>/dev/null | grep -q .; then
|
|
233
|
+
echo "=== Found: $config ==="
|
|
234
|
+
head -30 "$config" 2>/dev/null
|
|
235
|
+
echo ""
|
|
236
|
+
fi
|
|
237
|
+
done
|
|
238
|
+
|
|
239
|
+
# Look for linter/formatter patterns
|
|
240
|
+
echo "Checking for linting/formatting tools..."
|
|
241
|
+
ls -la | grep -E "lint|format|style" | head -10
|
|
231
242
|
```
|
|
232
243
|
|
|
233
244
|
**Document**:
|
|
@@ -247,9 +258,17 @@ fi
|
|
|
247
258
|
# Find similar features already implemented
|
|
248
259
|
echo "Looking for similar existing features..."
|
|
249
260
|
|
|
250
|
-
#
|
|
251
|
-
#
|
|
252
|
-
#
|
|
261
|
+
# Generic pattern search across all source files (adapt search term to research topic)
|
|
262
|
+
# Example: searching for function/class definitions across common languages
|
|
263
|
+
# find . -type f \( -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" \
|
|
264
|
+
# -o -name "*.py" -o -name "*.go" -o -name "*.rs" -o -name "*.java" -o -name "*.rb" \
|
|
265
|
+
# -o -name "*.php" -o -name "*.cs" -o -name "*.cpp" -o -name "*.c" -o -name "*.h" \) \
|
|
266
|
+
# ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/vendor/*" ! -path "*/target/*" \
|
|
267
|
+
# -exec grep -H "^export\|^public\|^def\|^func\|^fn\|^function\|^class" {} \; 2>/dev/null | head -20
|
|
268
|
+
|
|
269
|
+
# Show most commonly edited files (good candidates for similar patterns)
|
|
270
|
+
echo "Frequently modified files (likely contain patterns to follow):"
|
|
271
|
+
git log --pretty=format: --name-only --since="6 months ago" 2>/dev/null | sort | uniq -c | sort -rn | head -15
|
|
253
272
|
```
|
|
254
273
|
|
|
255
274
|
**Analyze and document**:
|
|
@@ -7,6 +7,12 @@ allowed-tools: Task, Bash, Read, Write, Grep, Glob
|
|
|
7
7
|
|
|
8
8
|
Perform a comprehensive review of uncommitted changes by orchestrating multiple specialized sub-agents in parallel. This provides quick feedback before committing changes.
|
|
9
9
|
|
|
10
|
+
**Audit Strategy**:
|
|
11
|
+
- **Always Run** (5 core audits): Security, Performance, Architecture, Tests, Complexity
|
|
12
|
+
- **Available on demand**: Documentation, Dependencies, Database (use `/pre-pr` for full audit)
|
|
13
|
+
|
|
14
|
+
This lightweight approach provides fast feedback for individual commits. Use `/pre-pr` for comprehensive branch reviews before creating pull requests.
|
|
15
|
+
|
|
10
16
|
### Step 1: Analyze Current Changes
|
|
11
17
|
|
|
12
18
|
First, check what changes are available for review:
|
|
@@ -53,27 +53,51 @@ git log --oneline $BASE_BRANCH..HEAD
|
|
|
53
53
|
echo ""
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
### Step 2:
|
|
56
|
+
### Step 2: Detect Change Categories
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
Analyze what types of changes are in this branch to determine which specialized agents are needed:
|
|
59
59
|
|
|
60
|
+
```bash
|
|
61
|
+
# Check if database-related files changed
|
|
62
|
+
DB_CHANGES=$(git diff --name-only $BASE_BRANCH...HEAD | grep -E '\.(sql|prisma|migration|knex|sequelize|db)' || true)
|
|
63
|
+
DB_CHANGES+=$(git diff --name-only $BASE_BRANCH...HEAD | grep -iE '(migration|schema|database|models/)' || true)
|
|
64
|
+
|
|
65
|
+
if [ -n "$DB_CHANGES" ]; then
|
|
66
|
+
echo "🗄️ Database changes detected - will run database audit"
|
|
67
|
+
INCLUDE_DB_AUDIT=true
|
|
68
|
+
else
|
|
69
|
+
echo "ℹ️ No database changes detected - skipping database audit"
|
|
70
|
+
INCLUDE_DB_AUDIT=false
|
|
71
|
+
fi
|
|
72
|
+
echo ""
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Step 3: Launch Specialized Sub-Agents in Parallel
|
|
76
|
+
|
|
77
|
+
Launch these sub-agents in parallel based on change detection:
|
|
78
|
+
|
|
79
|
+
**Core Audits (Always Run)**:
|
|
60
80
|
1. audit-security sub-agent
|
|
61
81
|
2. audit-performance sub-agent
|
|
62
82
|
3. audit-architecture sub-agent
|
|
63
83
|
4. audit-tests sub-agent
|
|
64
84
|
5. audit-complexity sub-agent
|
|
65
85
|
6. audit-dependencies sub-agent
|
|
86
|
+
7. audit-documentation sub-agent
|
|
66
87
|
|
|
67
|
-
|
|
88
|
+
**Conditional Audits**:
|
|
89
|
+
8. audit-database sub-agent (only if database changes detected)
|
|
90
|
+
|
|
91
|
+
### Step 4: Synthesize Comprehensive Review
|
|
68
92
|
|
|
69
93
|
After all sub-agents complete their analysis:
|
|
70
94
|
|
|
71
|
-
1. **Collect Results**: Gather findings from all
|
|
95
|
+
1. **Collect Results**: Gather findings from all 7-8 specialized sub-agents (depending on change types)
|
|
72
96
|
2. **Cross-Reference Issues**: Identify overlapping concerns between domains
|
|
73
97
|
3. **Prioritize for PR**: Focus on merge-blocking vs nice-to-have improvements
|
|
74
98
|
4. **Create PR-Ready Review**: Structure for easy consumption by human reviewers
|
|
75
99
|
|
|
76
|
-
### Step
|
|
100
|
+
### Step 5: Save Comprehensive Review Document
|
|
77
101
|
|
|
78
102
|
Create a detailed review document at `.docs/reviews/branch-{BRANCH_NAME}-{YYYY-MM-DD_HHMM}.md`:
|
|
79
103
|
|
|
@@ -178,6 +202,25 @@ Create a detailed review document at `.docs/reviews/branch-{BRANCH_NAME}-{YYYY-M
|
|
|
178
202
|
#### Dependency Recommendations
|
|
179
203
|
{specific dependency management improvements}
|
|
180
204
|
|
|
205
|
+
### 📚 Documentation Analysis (audit-documentation)
|
|
206
|
+
**Documentation Quality**: {Excellent/Good/Acceptable/Poor}
|
|
207
|
+
|
|
208
|
+
#### Documentation Issues Found
|
|
209
|
+
{detailed documentation drift, missing docs, stale examples}
|
|
210
|
+
|
|
211
|
+
#### Documentation Recommendations
|
|
212
|
+
{specific documentation updates needed}
|
|
213
|
+
|
|
214
|
+
### 🗄️ Database Analysis (audit-database)
|
|
215
|
+
**Database Health**: {Excellent/Good/Acceptable/Poor}
|
|
216
|
+
**Note**: Only included if database changes detected
|
|
217
|
+
|
|
218
|
+
#### Database Issues Found
|
|
219
|
+
{detailed database design, migration, and query issues}
|
|
220
|
+
|
|
221
|
+
#### Database Recommendations
|
|
222
|
+
{specific database improvements needed}
|
|
223
|
+
|
|
181
224
|
---
|
|
182
225
|
|
|
183
226
|
## 🎯 Action Plan
|
|
@@ -209,6 +252,8 @@ Create a detailed review document at `.docs/reviews/branch-{BRANCH_NAME}-{YYYY-M
|
|
|
209
252
|
- Test Coverage: {score}/10
|
|
210
253
|
- Maintainability: {score}/10
|
|
211
254
|
- Dependencies: {score}/10
|
|
255
|
+
- Documentation: {score}/10
|
|
256
|
+
- Database: {score}/10 (if applicable)
|
|
212
257
|
|
|
213
258
|
### Comparison to {BASE_BRANCH}
|
|
214
259
|
- Quality Trend: {Improving/Stable/Declining}
|
|
@@ -253,7 +298,7 @@ Based on sub-agent analysis, human reviewers should focus on:
|
|
|
253
298
|
*Next: Address blocking issues, then create PR with this review as reference*
|
|
254
299
|
```
|
|
255
300
|
|
|
256
|
-
### Step
|
|
301
|
+
### Step 6: Provide Executive Summary
|
|
257
302
|
|
|
258
303
|
Give the developer a clear, actionable summary:
|
|
259
304
|
|