devflow-kit 0.3.1 → 0.3.2

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 CHANGED
@@ -5,6 +5,18 @@ All notable changes to DevFlow will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.2] - 2025-10-17
9
+
10
+ ### Changed
11
+ - **Simplified init command output** - Reduced installation output from ~60-80 lines to ~10-15 lines
12
+ - **Unified review commands** - Consolidated /pre-commit and /pre-pr into single /code-review command
13
+ - **Streamlined statusline** - Removed cost/API metrics, added CPU/memory monitoring (28% code reduction)
14
+
15
+ ### Improved
16
+ - Replaced /catch-up suggestion with comprehensive commands reference for better initial UX
17
+
18
+ ---
19
+
8
20
  ## [0.3.1] - 2025-10-17
9
21
 
10
22
  ### Fixed
@@ -250,6 +262,7 @@ devflow init
250
262
 
251
263
  ---
252
264
 
265
+ [0.3.2]: https://github.com/dean0x/devflow/releases/tag/v0.3.2
253
266
  [0.3.1]: https://github.com/dean0x/devflow/releases/tag/v0.3.1
254
267
  [0.3.0]: https://github.com/dean0x/devflow/releases/tag/v0.3.0
255
268
  [0.2.0]: https://github.com/dean0x/devflow/releases/tag/v0.2.0
package/README.md CHANGED
@@ -22,9 +22,8 @@ That's it! DevFlow is now installed and ready to use in Claude Code.
22
22
  | `/devlog` | Development log for comprehensive session documentation | Ending a session |
23
23
  | `/plan-next-steps` | Extract actionable next steps from current discussion | After planning discussion |
24
24
  | `/debug [issue]` | Systematic debugging with issue-specific investigation | When troubleshooting |
25
- | `/pre-commit` | Review uncommitted changes using specialized sub-agents | Before committing |
25
+ | `/code-review` | Comprehensive code review using specialized sub-agents | Before committing or creating PR |
26
26
  | `/commit` | Intelligent atomic commit creation with safety checks | When ready to commit |
27
- | `/pre-pr` | Comprehensive branch review for PR readiness | Before creating PR |
28
27
  | `/release` | Automated release workflow with version management and publishing | Creating a new release |
29
28
 
30
29
  ### 🤖 Sub-Agents
@@ -97,17 +96,17 @@ Covers patterns for all major languages and operating systems.
97
96
 
98
97
  ### During Development
99
98
  1. `/research [topic]` - Research implementation approaches before coding
100
- 2. `/pre-commit` - Review changes before committing
99
+ 2. `/code-review` - Review changes before committing
101
100
  3. `/commit` - Create intelligent atomic commits
102
101
  4. Invoke audit sub-agents as needed
103
102
 
104
103
  ### Ending a Session
105
104
  1. `/devlog` - Document decisions and state
106
- 2. `/pre-pr` - Review branch before creating PR
105
+ 2. `/code-review` - Review branch before creating PR
107
106
  3. `/commit` - Final commits with validation
108
107
 
109
108
  ### Creating a Release
110
- 1. `/pre-pr` - Comprehensive branch review
109
+ 1. `/code-review` - Comprehensive branch review
111
110
  2. `/release` - Automated release workflow
112
111
  - Detects project type (Node.js, Rust, Python, Go, etc.)
113
112
  - Analyzes commits and suggests version bump
@@ -163,9 +162,8 @@ git commit -m "Session status: completed user auth feature"
163
162
  ### Integration Examples
164
163
  ```bash
165
164
  /research "add JWT authentication" # Research before implementing
166
- /pre-commit # Review uncommitted changes
165
+ /code-review # Review changes (uncommitted or full branch)
167
166
  /commit # Create atomic commits
168
- /pre-pr # Branch review before PR
169
167
  /release # Automated release workflow
170
168
  /debug "TypeError in auth module" # Debug specific issue
171
169
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,eAAO,MAAM,WAAW,SAqfpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,eAAO,MAAM,WAAW,SAycpB,CAAC"}
@@ -60,8 +60,17 @@ export const initCommand = new Command('init')
60
60
  .option('--force', 'Override existing settings.json and CLAUDE.md (prompts for confirmation)')
61
61
  .option('-y, --yes', 'Auto-approve all prompts (use with --force)')
62
62
  .action(async (options) => {
63
- console.log('🚀 DevFlow - Agentic Development Toolkit');
64
- console.log(' Intelligent tools for reliable AI-assisted development\n');
63
+ // Get package version
64
+ const packageJsonPath = path.resolve(__dirname, '../../package.json');
65
+ let version = '';
66
+ try {
67
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));
68
+ version = packageJson.version;
69
+ }
70
+ catch {
71
+ version = 'unknown';
72
+ }
73
+ console.log(`🚀 DevFlow v${version}${options.force ? ' [--force]' : ''}\n`);
65
74
  // Get installation paths with proper validation
66
75
  let claudeDir;
67
76
  let devflowDir;
@@ -76,21 +85,35 @@ export const initCommand = new Command('init')
76
85
  // Check for Claude Code
77
86
  try {
78
87
  await fs.access(claudeDir);
79
- console.log(`🔍 Detected Claude Code at ${claudeDir} ✅\n`);
80
88
  }
81
89
  catch {
82
90
  console.error(`❌ Claude Code not detected at ${claudeDir}`);
83
- console.error('\nInstall Claude Code from: https://claude.com/claude-code');
84
- console.error('\nOr set CLAUDE_CODE_DIR environment variable if installed elsewhere.');
91
+ console.error(' Install from: https://claude.com/claude-code');
92
+ console.error(' Or set CLAUDE_CODE_DIR if installed elsewhere\n');
85
93
  process.exit(1);
86
94
  }
87
- console.log('🛠️ Installing DevFlow for Claude Code...');
95
+ // Handle --force flag prompt
96
+ let forceOverride = false;
97
+ if (options.force) {
98
+ if (options.yes) {
99
+ forceOverride = true;
100
+ }
101
+ else {
102
+ console.log('⚠️ WARNING: Force override will replace settings.json and CLAUDE.md');
103
+ console.log(' Backups: settings.json.backup, CLAUDE.md.backup\n');
104
+ forceOverride = await promptUser('Proceed? (y/N): ');
105
+ console.log();
106
+ if (!forceOverride) {
107
+ console.log('❌ Cancelled. Use init without --force for safe installation.\n');
108
+ process.exit(0);
109
+ }
110
+ }
111
+ }
88
112
  // Get the root directory of the devflow package
89
113
  const rootDir = path.resolve(__dirname, '../..');
90
114
  const claudeSourceDir = path.join(rootDir, 'src', 'claude');
91
115
  try {
92
116
  // Clean old DevFlow files before installing
93
- console.log(' 🧹 Cleaning old DevFlow files...');
94
117
  const commandsDevflowDir = path.join(claudeDir, 'commands', 'devflow');
95
118
  const agentsDevflowDir = path.join(claudeDir, 'agents', 'devflow');
96
119
  const devflowScriptsDir = path.join(devflowDir, 'scripts');
@@ -103,16 +126,11 @@ export const initCommand = new Command('init')
103
126
  catch (e) {
104
127
  // Directories might not exist on first install
105
128
  }
106
- // Install commands
107
- console.log(' 📂 Installing commands...');
129
+ // Install components silently
108
130
  await fs.mkdir(commandsDevflowDir, { recursive: true });
109
131
  await copyDirectory(path.join(claudeSourceDir, 'commands', 'devflow'), commandsDevflowDir);
110
- // Install sub-agents
111
- console.log(' 🤖 Installing sub-agents...');
112
132
  await fs.mkdir(agentsDevflowDir, { recursive: true });
113
133
  await copyDirectory(path.join(claudeSourceDir, 'agents', 'devflow'), agentsDevflowDir);
114
- // Install scripts
115
- console.log(' 📜 Installing scripts...');
116
134
  await fs.mkdir(devflowScriptsDir, { recursive: true });
117
135
  await copyDirectory(path.join(claudeSourceDir, 'scripts'), devflowScriptsDir);
118
136
  // Make scripts executable
@@ -120,30 +138,9 @@ export const initCommand = new Command('init')
120
138
  for (const script of scripts) {
121
139
  await fs.chmod(path.join(devflowScriptsDir, script), 0o755);
122
140
  }
123
- // Handle --force flag
124
- let forceOverride = false;
125
- if (options.force) {
126
- if (options.yes) {
127
- console.log(' ⚠️ Force override enabled with auto-approval (-y flag)\n');
128
- forceOverride = true;
129
- }
130
- else {
131
- console.log(' ⚠️ WARNING: --force flag will override existing settings.json and CLAUDE.md\n');
132
- console.log(' This will:');
133
- console.log(' • Replace ~/.claude/settings.json with DevFlow settings');
134
- console.log(' • Replace ~/.claude/CLAUDE.md with DevFlow global instructions\n');
135
- forceOverride = await promptUser(' Do you want to proceed? (y/N): ');
136
- console.log();
137
- if (!forceOverride) {
138
- console.log(' ❌ Force override cancelled. Proceeding with safe installation.\n');
139
- }
140
- else {
141
- console.log(' ✅ Force override approved. Proceeding...\n');
142
- }
143
- }
144
- }
141
+ console.log('✓ Claude Code detected');
142
+ console.log('✓ Installing components... (commands, agents, scripts)');
145
143
  // Install settings with smart backup
146
- console.log(' ⚙️ Installing settings...');
147
144
  const settingsPath = path.join(claudeDir, 'settings.json');
148
145
  const managedSettingsPath = path.join(claudeDir, 'managed-settings.json');
149
146
  const devflowSettingsPath = path.join(claudeDir, 'settings.devflow.json');
@@ -154,14 +151,12 @@ export const initCommand = new Command('init')
154
151
  try {
155
152
  await fs.access(settingsPath);
156
153
  await fs.rename(settingsPath, path.join(claudeDir, 'settings.json.backup'));
157
- console.log(' 💾 Existing settings backed up to: settings.json.backup');
158
154
  }
159
155
  catch {
160
156
  // No existing file
161
157
  }
162
158
  await fs.copyFile(sourceSettingsPath, settingsPath);
163
159
  settingsAction = 'force-installed';
164
- console.log(' ✅ DevFlow settings force-installed to: settings.json');
165
160
  }
166
161
  else {
167
162
  // Safe installation logic
@@ -175,27 +170,21 @@ export const initCommand = new Command('init')
175
170
  // managed-settings.json exists - install as settings.devflow.json
176
171
  await fs.copyFile(sourceSettingsPath, devflowSettingsPath);
177
172
  settingsAction = 'saved-as-devflow';
178
- console.log(' ⚠️ Your existing settings.json is preserved');
179
- console.log(' 📄 DevFlow settings saved to: settings.devflow.json');
180
173
  }
181
174
  catch {
182
175
  // managed-settings.json doesn't exist - safe to backup and install
183
176
  await fs.rename(settingsPath, managedSettingsPath);
184
177
  await fs.copyFile(sourceSettingsPath, settingsPath);
185
178
  settingsAction = 'backed-up';
186
- console.log(' 💾 Your settings backed up to: managed-settings.json');
187
- console.log(' ✅ DevFlow settings installed to: settings.json');
188
179
  }
189
180
  }
190
181
  catch {
191
182
  // No existing settings.json - install normally
192
183
  await fs.copyFile(sourceSettingsPath, settingsPath);
193
184
  settingsAction = 'fresh-install';
194
- console.log(' ✅ DevFlow settings installed to: settings.json');
195
185
  }
196
186
  }
197
187
  // Install CLAUDE.md with smart backup
198
- console.log(' 📘 Installing global CLAUDE.md...');
199
188
  const claudeMdPath = path.join(claudeDir, 'CLAUDE.md');
200
189
  const devflowClaudeMdPath = path.join(claudeDir, 'CLAUDE.devflow.md');
201
190
  const sourceClaudeMdPath = path.join(claudeSourceDir, 'CLAUDE.md');
@@ -205,14 +194,12 @@ export const initCommand = new Command('init')
205
194
  try {
206
195
  await fs.access(claudeMdPath);
207
196
  await fs.rename(claudeMdPath, path.join(claudeDir, 'CLAUDE.md.backup'));
208
- console.log(' 💾 Existing CLAUDE.md backed up to: CLAUDE.md.backup');
209
197
  }
210
198
  catch {
211
199
  // No existing file
212
200
  }
213
201
  await fs.copyFile(sourceClaudeMdPath, claudeMdPath);
214
202
  claudeMdAction = 'force-installed';
215
- console.log(' ✅ DevFlow CLAUDE.md force-installed');
216
203
  }
217
204
  else {
218
205
  // Safe installation logic
@@ -222,69 +209,37 @@ export const initCommand = new Command('init')
222
209
  // User has CLAUDE.md - install as CLAUDE.devflow.md
223
210
  await fs.copyFile(sourceClaudeMdPath, devflowClaudeMdPath);
224
211
  claudeMdAction = 'saved-as-devflow';
225
- console.log(' ⚠️ Your existing CLAUDE.md is preserved');
226
- console.log(' 📄 DevFlow CLAUDE.md saved to: CLAUDE.devflow.md');
227
212
  }
228
213
  catch {
229
214
  // No existing CLAUDE.md - install normally
230
215
  await fs.copyFile(sourceClaudeMdPath, claudeMdPath);
231
216
  claudeMdAction = 'fresh-install';
232
- console.log(' ✅ DevFlow CLAUDE.md installed');
233
217
  }
234
218
  }
235
- console.log(' ✅ Claude Code installation complete\n');
236
- // Show settings instructions if needed
237
- if (settingsAction === 'saved-as-devflow') {
238
- console.log('⚙️ SETTINGS CONFIGURATION REQUIRED:\n');
239
- console.log(' Your existing settings.json was preserved because managed-settings.json');
240
- console.log(' already exists. DevFlow settings are in settings.devflow.json\n');
241
- console.log(` To use DevFlow settings (statusline), manually merge into ${settingsPath}:`);
242
- console.log(' ```json');
243
- console.log(' {');
244
- console.log(' "statusLine": {');
245
- console.log(' "type": "command",');
246
- console.log(` "command": "${path.join(devflowDir, 'scripts', 'statusline.sh')}"`);
247
- console.log(' }');
248
- console.log(' }');
249
- console.log(' ```\n');
219
+ // Show concise status messages
220
+ if (settingsAction === 'force-installed') {
221
+ console.log('✓ Settings force-installed (backup: settings.json.backup)');
250
222
  }
251
223
  else if (settingsAction === 'backed-up') {
252
- console.log('💾 SETTINGS BACKUP:\n');
253
- console.log(` Your original settings saved to: ${managedSettingsPath}`);
254
- console.log(` DevFlow settings now active in: ${settingsPath}`);
255
- console.log(` To restore: mv ${managedSettingsPath} ${settingsPath}\n`);
224
+ console.log(' Settings configured');
256
225
  }
257
- else if (settingsAction === 'force-installed') {
258
- console.log('⚠️ FORCE OVERRIDE APPLIED:\n');
259
- console.log(` Your original settings backed up to: ${path.join(claudeDir, 'settings.json.backup')}`);
260
- console.log(` DevFlow settings now active in: ${settingsPath}\n`);
226
+ else if (settingsAction === 'saved-as-devflow') {
227
+ console.log('⚠️ Existing settings preserved → DevFlow saved to settings.devflow.json');
261
228
  }
262
- // Show CLAUDE.md instructions if needed
263
- if (claudeMdAction === 'saved-as-devflow') {
264
- console.log('📘 CLAUDE.MD CONFIGURATION REQUIRED:\n');
265
- console.log(' Your existing CLAUDE.md was preserved.');
266
- console.log(` DevFlow global instructions are in: ${devflowClaudeMdPath}\n`);
267
- console.log(' To use DevFlow global instructions, manually merge into your CLAUDE.md:');
268
- console.log(' • Engineering Principles (Result types, DI, immutability)');
269
- console.log(' • Critical Anti-Patterns (NO FAKE SOLUTIONS, FAIL HONESTLY)');
270
- console.log(' • Code Quality Enforcement (root cause analysis)');
271
- console.log(' • Type Safety Best Practices (language-agnostic)');
272
- console.log(' • Architecture Documentation (inline docs)\n');
273
- console.log(` Or replace entirely: cp ${devflowClaudeMdPath} ${claudeMdPath}\n`);
229
+ else {
230
+ console.log('✓ Settings configured');
231
+ }
232
+ if (claudeMdAction === 'force-installed') {
233
+ console.log('✓ CLAUDE.md force-installed (backup: CLAUDE.md.backup)');
274
234
  }
275
- else if (claudeMdAction === 'fresh-install') {
276
- console.log('📘 CLAUDE.MD INSTALLED:\n');
277
- console.log(` DevFlow global instructions active in: ${claudeMdPath}`);
278
- console.log(' • Language-agnostic engineering principles');
279
- console.log(' • Critical anti-patterns and foolishness prevention');
280
- console.log(' • Code quality enforcement rules\n');
235
+ else if (claudeMdAction === 'saved-as-devflow') {
236
+ console.log('⚠️ Existing CLAUDE.md preserved → DevFlow saved to CLAUDE.devflow.md');
281
237
  }
282
- else if (claudeMdAction === 'force-installed') {
283
- console.log('⚠️ CLAUDE.MD FORCE OVERRIDE APPLIED:\n');
284
- console.log(` Your original CLAUDE.md backed up to: ${path.join(claudeDir, 'CLAUDE.md.backup')}`);
285
- console.log(` DevFlow global instructions now active in: ${claudeMdPath}\n`);
238
+ else {
239
+ console.log('CLAUDE.md configured');
286
240
  }
287
241
  // Create .claudeignore in git repository root
242
+ let claudeignoreCreated = false;
288
243
  try {
289
244
  // Find git repository root
290
245
  const gitRoot = execSync('git rev-parse --show-toplevel', {
@@ -295,7 +250,6 @@ export const initCommand = new Command('init')
295
250
  // Check if .claudeignore already exists
296
251
  try {
297
252
  await fs.access(claudeignorePath);
298
- console.log('🔒 Security: .claudeignore already exists (skipping)');
299
253
  }
300
254
  catch {
301
255
  // Create comprehensive .claudeignore
@@ -489,54 +443,54 @@ poetry.lock
489
443
  Pipfile.lock
490
444
  `;
491
445
  await fs.writeFile(claudeignorePath, claudeignoreContent, 'utf-8');
492
- console.log('🔒 Security: Created .claudeignore at repository root');
493
- console.log(' • Protects sensitive files (credentials, keys, secrets)');
494
- console.log(' • Reduces context pollution (node_modules, build artifacts)');
495
- console.log(' • Covers common patterns for all major languages\n');
446
+ claudeignoreCreated = true;
496
447
  }
497
448
  }
498
449
  catch (error) {
499
450
  // Not a git repository or other error - skip .claudeignore creation
500
- console.log('ℹ️ Skipped .claudeignore (not in a git repository)\n');
451
+ }
452
+ if (claudeignoreCreated) {
453
+ console.log('✓ .claudeignore created');
501
454
  }
502
455
  // Offer to install project documentation structure
456
+ let docsCreated = false;
503
457
  if (!options.skipDocs) {
504
- console.log('📁 Project Documentation Setup\n');
505
458
  const docsDir = path.join(process.cwd(), '.docs');
506
459
  try {
507
460
  await fs.mkdir(path.join(docsDir, 'status', 'compact'), { recursive: true });
508
461
  await fs.mkdir(path.join(docsDir, 'reviews'), { recursive: true });
509
462
  await fs.mkdir(path.join(docsDir, 'audits'), { recursive: true });
510
- console.log(' ✅ Created .docs/ structure');
511
- console.log(' • .docs/status/ - Session documentation');
512
- console.log(' • .docs/reviews/ - Code review reports');
513
- console.log(' • .docs/audits/ - Security, performance, architecture audits');
463
+ docsCreated = true;
514
464
  }
515
465
  catch (error) {
516
- console.log(' ⚠️ Could not create .docs/ structure (may already exist)');
466
+ // .docs/ structure may already exist
467
+ }
468
+ }
469
+ if (docsCreated) {
470
+ console.log('✓ .docs/ structure ready');
471
+ }
472
+ console.log('\n✅ Installation complete!\n');
473
+ // Show manual merge instructions if needed
474
+ if (settingsAction === 'saved-as-devflow' || claudeMdAction === 'saved-as-devflow') {
475
+ console.log('⚠️ Manual merge required:');
476
+ if (settingsAction === 'saved-as-devflow') {
477
+ console.log(' Settings: Merge settings.devflow.json → settings.json');
478
+ }
479
+ if (claudeMdAction === 'saved-as-devflow') {
480
+ console.log(' Instructions: cp ~/.claude/CLAUDE.devflow.md ~/.claude/CLAUDE.md');
517
481
  }
482
+ console.log();
518
483
  }
519
- console.log('\n✅ DevFlow installation complete!\n');
520
- console.log('🎯 WHAT\'S INSTALLED:');
521
- console.log(' 📁 Claude Code:');
522
- console.log(` • Commands: ${path.join(claudeDir, 'commands')}/`);
523
- console.log(` • Sub-agents: ${path.join(claudeDir, 'agents')}/`);
524
- console.log(` • Scripts: ${path.join(devflowDir, 'scripts')}/`);
525
- console.log(` • Settings: ${settingsPath} (statusline and model)`);
526
- console.log(` • Global Instructions: ${claudeMdPath} (language-agnostic)\n`);
527
- console.log('📊 SMART STATUSLINE:');
528
- console.log(' Statusline configured');
529
- console.log(' • Shows project context, git status, session cost, and duration\n');
530
- console.log('🚀 QUICK START:');
531
- console.log(' 1. Navigate to a project directory');
532
- console.log(' 2. Run \'/catch-up\' to get oriented');
533
- console.log(' 3. Use \'/pre-commit\' to review uncommitted changes');
534
- console.log(' 4. Run \'/devlog\' to document sessions\n');
535
- console.log('📚 DOCUMENTATION:');
536
- console.log(' • Check README for comprehensive guide');
537
- console.log(' • Commands are self-documenting');
538
- console.log(' • Visit npm or GitHub for full documentation\n');
539
- console.log('Happy coding with DevFlow! 🚀');
484
+ console.log('Available commands:');
485
+ console.log(' /catch-up Session context and status');
486
+ console.log(' /research Pre-implementation planning');
487
+ console.log(' /code-review Comprehensive code review');
488
+ console.log(' /commit Intelligent atomic commits');
489
+ console.log(' /devlog Session documentation');
490
+ console.log(' /debug Systematic debugging');
491
+ console.log(' /release Release automation');
492
+ console.log(' /plan-next-steps Extract actionable tasks');
493
+ console.log('\nDocs: npm home devflow-kit');
540
494
  }
541
495
  catch (error) {
542
496
  console.error('❌ Installation failed:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devflow-kit",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Agentic Development Toolkit for Claude Code - Enhance AI-assisted development with intelligent commands and workflows",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -337,7 +337,7 @@ Give the developer a clear, actionable summary:
337
337
 
338
338
  🔄 NEXT STEPS:
339
339
  1. Address blocking issues above
340
- 2. Run `/pre-commit` after fixes to verify
340
+ 2. Run `/code-review` after fixes to verify
341
341
  3. Create PR using this review as reference
342
342
  4. Share review with team for human review focus
343
343
  ```
@@ -10,106 +10,74 @@ INPUT=$(cat)
10
10
  if command -v jq &> /dev/null; then
11
11
  MODEL=$(echo "$INPUT" | jq -r '.model.display_name // .model.id // "claude"' 2>/dev/null)
12
12
  CWD=$(echo "$INPUT" | jq -r '.cwd // "~"' 2>/dev/null)
13
- TOTAL_COST=$(echo "$INPUT" | jq -r '.cost.total_cost_usd // 0' 2>/dev/null)
14
- LINES_ADDED=$(echo "$INPUT" | jq -r '.cost.total_lines_added // 0' 2>/dev/null)
15
- LINES_REMOVED=$(echo "$INPUT" | jq -r '.cost.total_lines_removed // 0' 2>/dev/null)
16
- TOTAL_DURATION_MS=$(echo "$INPUT" | jq -r '.cost.total_duration_ms // 0' 2>/dev/null)
17
- API_DURATION_MS=$(echo "$INPUT" | jq -r '.cost.total_api_duration_ms // 0' 2>/dev/null)
18
13
  EXCEEDS_200K=$(echo "$INPUT" | jq -r '.exceeds_200k_tokens // false' 2>/dev/null)
19
- VERSION=$(echo "$INPUT" | jq -r '.version // ""' 2>/dev/null)
20
- OUTPUT_STYLE=$(echo "$INPUT" | jq -r '.output_style.name // ""' 2>/dev/null)
21
14
  else
22
15
  MODEL="claude"
23
16
  CWD=$(pwd)
24
- TOTAL_COST="0.00"
25
- LINES_ADDED="0"
26
- LINES_REMOVED="0"
27
- TOTAL_DURATION_MS="0"
28
- API_DURATION_MS="0"
29
17
  EXCEEDS_200K="false"
30
- VERSION=""
31
- OUTPUT_STYLE=""
32
18
  fi
33
19
 
34
20
  # Get current directory name
35
21
  DIR_NAME=$(basename "$CWD")
36
22
 
37
- # Get git branch and last commit if in a git repo
23
+ # Get git branch if in a git repo
38
24
  GIT_BRANCH=$(cd "$CWD" 2>/dev/null && git branch --show-current 2>/dev/null || echo "")
39
25
  if [ -z "$GIT_BRANCH" ]; then
40
26
  GIT_INFO=""
41
27
  else
42
- # Get last commit message (first line, truncated to 50 chars)
43
- LAST_COMMIT_MSG=$(cd "$CWD" 2>/dev/null && git log -1 --pretty=format:"%s" 2>/dev/null | cut -c1-50 || echo "")
44
-
45
28
  # Check if there are uncommitted changes
46
29
  if [ -n "$(cd "$CWD" 2>/dev/null && git status --porcelain 2>/dev/null)" ]; then
47
- GIT_INFO=" / \033[1;33m$GIT_BRANCH*\033[0m"
30
+ GIT_INFO=" \033[1;33m$GIT_BRANCH*\033[0m"
48
31
  else
49
- GIT_INFO=" / \033[1;32m$GIT_BRANCH\033[0m"
50
- fi
51
-
52
- # Add commit message if available
53
- if [ -n "$LAST_COMMIT_MSG" ]; then
54
- GIT_INFO="$GIT_INFO \033[1;90m($LAST_COMMIT_MSG)\033[0m"
32
+ GIT_INFO=" \033[1;32m$GIT_BRANCH\033[0m"
55
33
  fi
56
34
  fi
57
35
 
58
- # Format cost with 2 decimal places
59
- COST_FORMATTED=$(printf "%.2f" "$TOTAL_COST" 2>/dev/null || echo "0.00")
60
-
61
- # Format session duration from milliseconds to human readable
62
- format_duration() {
63
- local ms=$1
64
- local seconds=$((ms / 1000))
65
- local minutes=$((seconds / 60))
66
- local hours=$((minutes / 60))
67
- local remaining_minutes=$((minutes % 60))
36
+ # Get system CPU and memory usage
37
+ get_cpu_usage() {
38
+ # Try multiple methods for cross-platform compatibility
39
+ if command -v top &> /dev/null; then
40
+ # Linux/macOS with top
41
+ top -bn1 2>/dev/null | grep -i "cpu" | head -1 | awk '{print $2}' | sed 's/%us,//' | sed 's/id,//' || echo "0"
42
+ elif command -v ps &> /dev/null; then
43
+ # Fallback: average CPU of all processes
44
+ ps -A -o %cpu | awk '{s+=$1} END {printf "%.0f", s}'
45
+ else
46
+ echo "0"
47
+ fi
48
+ }
68
49
 
69
- if [ "$hours" -gt 0 ]; then
70
- echo "${hours}h${remaining_minutes}m"
71
- elif [ "$minutes" -gt 0 ]; then
72
- echo "${minutes}m"
50
+ get_memory_usage() {
51
+ # Try multiple methods for cross-platform compatibility
52
+ if command -v free &> /dev/null; then
53
+ # Linux with free
54
+ free | grep Mem | awk '{printf "%.0f", ($3/$2)*100}'
55
+ elif command -v vm_stat &> /dev/null; then
56
+ # macOS with vm_stat
57
+ vm_stat | awk '/Pages active/ {active=$3} /Pages wired/ {wired=$4} /Pages free/ {free=$3} END {printf "%.0f", ((active+wired)/(active+wired+free))*100}' | sed 's/\.//'
73
58
  else
74
- echo "${seconds}s"
59
+ echo "0"
75
60
  fi
76
61
  }
77
62
 
78
- SESSION_DURATION=$(format_duration "$TOTAL_DURATION_MS")
79
- API_DURATION=$(format_duration "$API_DURATION_MS")
63
+ CPU_USAGE=$(get_cpu_usage)
64
+ MEMORY_USAGE=$(get_memory_usage)
80
65
 
81
- # Calculate API efficiency percentage
82
- if [ "$TOTAL_DURATION_MS" -gt 0 ]; then
83
- API_EFFICIENCY=$(echo "$API_DURATION_MS $TOTAL_DURATION_MS" | awk '{printf "%.0f", ($1/$2)*100}')
84
- else
85
- API_EFFICIENCY="0"
86
- fi
87
-
88
- # Build status line with colors - show components conditionally
66
+ # Build status line with colors
89
67
  STATUS_LINE="\033[1;34m$DIR_NAME\033[0m$GIT_INFO"
90
68
 
91
- # Add session duration if meaningful
92
- # if [ "$TOTAL_DURATION_MS" -gt 60000 ]; then # > 1 minute
93
- # STATUS_LINE="$STATUS_LINE \033[1;33m$SESSION_DURATION\033[0m"
94
- # fi
69
+ # Add model name
70
+ STATUS_LINE="$STATUS_LINE \033[1;36m$MODEL\033[0m"
95
71
 
96
- # Add API efficiency if session is long enough and efficiency is notable
97
- if [ "$TOTAL_DURATION_MS" -gt 300000 ] && [ "$API_EFFICIENCY" -gt 10 ]; then # > 5 min and >10% API time
98
- STATUS_LINE="$STATUS_LINE \033[1;91mapi:${API_EFFICIENCY}%\033[0m"
99
- fi
72
+ # Add CPU usage
73
+ STATUS_LINE="$STATUS_LINE \033[1;35mcpu:${CPU_USAGE}%\033[0m"
100
74
 
101
- # Add large context warning
102
- if [ "$EXCEEDS_200K" = "true" ]; then
103
- STATUS_LINE="$STATUS_LINE \033[1;93m⚠️large\033[0m"
104
- fi
75
+ # Add memory usage
76
+ STATUS_LINE="$STATUS_LINE \033[1;33mmem:${MEMORY_USAGE}%\033[0m"
105
77
 
106
- # Add cost if non-zero and meaningful (> $0.01)
107
- COST_CENTS=$(echo "$TOTAL_COST" | awk '{printf "%.0f", $1*100}')
108
- if [ "$COST_CENTS" -gt 1 ]; then
109
- STATUS_LINE="$STATUS_LINE \033[1;32m\$$COST_FORMATTED\033[0m"
78
+ # Add large context warning if needed
79
+ if [ "$EXCEEDS_200K" = "true" ]; then
80
+ STATUS_LINE="$STATUS_LINE \033[1;91m⚠️large\033[0m"
110
81
  fi
111
82
 
112
- # Add model at the end
113
- # STATUS_LINE="$STATUS_LINE \033[1;36m$MODEL\033[0m"
114
-
115
83
  echo -e "$STATUS_LINE"
@@ -1,153 +0,0 @@
1
- ---
2
- description: Review uncommitted changes before committing using specialized sub-agents
3
- allowed-tools: Task, Bash, Read, Write, Grep, Glob
4
- ---
5
-
6
- ## Your Task
7
-
8
- Perform a comprehensive review of uncommitted changes by orchestrating multiple specialized sub-agents in parallel. This provides quick feedback before committing changes.
9
-
10
- **Audit Strategy**:
11
- - **Always Run** (5 core audits): Security, Performance, Architecture, Tests, Complexity
12
- - **Language-Specific** (conditional): TypeScript (runs only if .ts/.tsx files changed or tsconfig.json exists)
13
- - **Available on demand**: Documentation, Dependencies, Database (use `/pre-pr` for full audit)
14
-
15
- This lightweight approach provides fast feedback for individual commits. Use `/pre-pr` for comprehensive branch reviews before creating pull requests.
16
-
17
- ### Step 1: Analyze Current Changes
18
-
19
- First, check what changes are available for review:
20
-
21
- ```bash
22
- # Check for uncommitted changes
23
- git status --porcelain
24
-
25
- # Get the diff of uncommitted changes
26
- if git diff --quiet HEAD; then
27
- echo "No uncommitted changes to review"
28
- exit 0
29
- fi
30
-
31
- # Show summary of changes
32
- echo "=== CHANGES TO REVIEW ==="
33
- git diff --stat HEAD
34
- echo ""
35
- ```
36
-
37
- ### Step 2: Launch Specialized Sub-Agents in Parallel
38
-
39
- Launch these sub-agents in parallel:
40
-
41
- 1. audit-security sub-agent
42
- 2. audit-typescript sub-agent (automatically skips if not applicable)
43
- 3. audit-performance sub-agent
44
- 4. audit-architecture sub-agent
45
- 5. audit-tests sub-agent
46
- 6. audit-complexity sub-agent
47
-
48
- **Note**: The audit-typescript agent contains built-in detection logic and will automatically skip if:
49
- - No .ts/.tsx files were changed AND
50
- - No tsconfig.json exists in the project
51
-
52
- ### Step 3: Synthesize Review Findings
53
-
54
- After all sub-agents complete their analysis:
55
-
56
- 1. **Collect Results**: Gather findings from all sub-agents
57
- 2. **Prioritize Issues**: Categorize as Critical/High/Medium/Low
58
- 3. **Create Unified Review**: Synthesize into coherent review document
59
- 4. **Generate Action Items**: Provide specific next steps
60
-
61
- ### Step 4: Save Review Document
62
-
63
- Create a comprehensive review document at `.docs/reviews/diff-{YYYY-MM-DD_HHMM}.md`:
64
-
65
- ```markdown
66
- # Code Review - Uncommitted Changes
67
- **Date**: {current_date}
68
- **Time**: {current_time}
69
- **Type**: Differential Review (uncommitted changes)
70
- **Reviewer**: AI Sub-Agent Orchestra
71
-
72
- ---
73
-
74
- ## 📊 Review Summary
75
-
76
- **Files Changed**: {number}
77
- **Lines Added**: {number}
78
- **Lines Removed**: {number}
79
-
80
- ### Issues Found
81
- - 🔴 **Critical**: {count} issues requiring immediate attention
82
- - 🟠 **High**: {count} issues should be addressed before commit
83
- - 🟡 **Medium**: {count} improvements recommended
84
- - 🔵 **Low**: {count} minor suggestions
85
-
86
- ---
87
-
88
- ## 🔍 Detailed Analysis
89
-
90
- ### Security Review (audit-security)
91
- {security findings with file:line references}
92
-
93
- ### TypeScript Review (audit-typescript)
94
- {type safety findings, or "⏭️ Skipped - not applicable" if no TS files}
95
-
96
- ### Performance Review (audit-performance)
97
- {performance findings with specific optimizations}
98
-
99
- ### Architecture Review (audit-architecture)
100
- {design pattern and structure analysis}
101
-
102
- ### Test Coverage Review (audit-tests)
103
- {test gaps and quality assessment}
104
-
105
- ### Complexity Review (audit-complexity)
106
- {maintainability and refactoring suggestions}
107
-
108
- ---
109
-
110
- ## 🎯 Action Items
111
-
112
- ### Before Committing (Critical/High)
113
- - [ ] {action 1} in {file:line}
114
- - [ ] {action 2} in {file:line}
115
-
116
- ### Future Improvements (Medium/Low)
117
- - [ ] {improvement 1}
118
- - [ ] {improvement 2}
119
-
120
- ---
121
-
122
- ## 📈 Code Quality Metrics
123
-
124
- **Overall Assessment**: {Excellent/Good/Needs Work/Poor}
125
- **Commit Recommendation**: {✅ Safe to commit / ⚠️ Address issues first / 🚫 Do not commit}
126
-
127
- ---
128
-
129
- *Review generated by DevFlow sub-agent orchestration*
130
- ```
131
-
132
- ### Step 5: Provide Interactive Summary
133
-
134
- Give the developer a clear summary and next steps:
135
-
136
- ```
137
- 🔍 UNCOMMITTED CHANGES REVIEW COMPLETE
138
-
139
- Changes analyzed: {X} files, {Y} lines modified
140
- Issues found: {Critical} critical, {High} high, {Medium} medium, {Low} low
141
-
142
- 📋 COMMIT READINESS ASSESSMENT:
143
- {✅ SAFE TO COMMIT | ⚠️ ISSUES TO ADDRESS | 🚫 DO NOT COMMIT}
144
-
145
- 🎯 TOP PRIORITY ACTIONS:
146
- 1. {Most critical issue and fix}
147
- 2. {Second most critical issue and fix}
148
- 3. {Third most critical issue and fix}
149
-
150
- 📄 Full review saved to: .docs/reviews/diff-{timestamp}.md
151
-
152
- 💡 TIP: Run `/review-branch` before creating PR for comprehensive feature review
153
- ```