devflow-kit
Advanced tools
| --- | ||
| description: Comprehensive branch review using specialized sub-agents for PR readiness | ||
| allowed-tools: Task, Bash, Read, Write, Grep, Glob | ||
| --- | ||
| ## Your Task | ||
| Perform a comprehensive review of this entire feature branch by orchestrating multiple specialized sub-agents in parallel. This is designed for thorough analysis before creating pull requests or merging branches. | ||
| ### Step 1: Analyze Branch Changes | ||
| First, determine the branch and base for comparison: | ||
| ```bash | ||
| # Get current branch | ||
| CURRENT_BRANCH=$(git branch --show-current) | ||
| if [ -z "$CURRENT_BRANCH" ]; then | ||
| echo "β Not on a branch (detached HEAD). Checkout a feature branch first." | ||
| exit 1 | ||
| fi | ||
| # Determine base branch (main, master, or develop) | ||
| BASE_BRANCH="" | ||
| for branch in main master develop; do | ||
| if git show-ref --verify --quiet refs/heads/$branch; then | ||
| BASE_BRANCH=$branch | ||
| break | ||
| fi | ||
| done | ||
| if [ -z "$BASE_BRANCH" ]; then | ||
| echo "β Could not find base branch (main/master/develop). Specify manually." | ||
| exit 1 | ||
| fi | ||
| echo "=== BRANCH REVIEW SCOPE ===" | ||
| echo "Current branch: $CURRENT_BRANCH" | ||
| echo "Base branch: $BASE_BRANCH" | ||
| echo "" | ||
| # Check if there are changes to review | ||
| if git diff --quiet $BASE_BRANCH...HEAD; then | ||
| echo "No changes between $BASE_BRANCH and $CURRENT_BRANCH" | ||
| exit 0 | ||
| fi | ||
| # Show comprehensive change summary | ||
| echo "=== CHANGES TO REVIEW ===" | ||
| git diff --stat $BASE_BRANCH...HEAD | ||
| echo "" | ||
| echo "=== COMMIT HISTORY ===" | ||
| git log --oneline $BASE_BRANCH..HEAD | ||
| echo "" | ||
| ``` | ||
| ### Step 2: Detect Change Categories | ||
| Analyze what types of changes are in this branch to determine which specialized agents are needed: | ||
| ```bash | ||
| # Check if database-related files changed | ||
| DB_CHANGES=$(git diff --name-only $BASE_BRANCH...HEAD | grep -E '\.(sql|prisma|migration|knex|sequelize|db)' || true) | ||
| DB_CHANGES+=$(git diff --name-only $BASE_BRANCH...HEAD | grep -iE '(migration|schema|database|models/)' || true) | ||
| if [ -n "$DB_CHANGES" ]; then | ||
| echo "ποΈ Database changes detected - will run database audit" | ||
| INCLUDE_DB_AUDIT=true | ||
| else | ||
| echo "βΉοΈ No database changes detected - skipping database audit" | ||
| INCLUDE_DB_AUDIT=false | ||
| fi | ||
| echo "" | ||
| ``` | ||
| ### Step 3: Launch Specialized Sub-Agents in Parallel | ||
| Launch these sub-agents in parallel based on change detection: | ||
| **Core Audits (Always Run)**: | ||
| 1. audit-security sub-agent | ||
| 2. audit-performance sub-agent | ||
| 3. audit-architecture sub-agent | ||
| 4. audit-tests sub-agent | ||
| 5. audit-complexity sub-agent | ||
| 6. audit-dependencies sub-agent | ||
| 7. audit-documentation sub-agent | ||
| **Conditional Audits** (automatically detect and skip if not applicable): | ||
| 8. audit-typescript sub-agent (only if .ts/.tsx files changed or tsconfig.json exists) | ||
| 9. audit-database sub-agent (only if database changes detected) | ||
| ### Step 4: Synthesize Comprehensive Review | ||
| After all sub-agents complete their analysis: | ||
| 1. **Collect Results**: Gather findings from all 7-8 specialized sub-agents (depending on change types) | ||
| 2. **Cross-Reference Issues**: Identify overlapping concerns between domains | ||
| 3. **Prioritize for PR**: Focus on merge-blocking vs nice-to-have improvements | ||
| 4. **Create PR-Ready Review**: Structure for easy consumption by human reviewers | ||
| ### Step 5: Save Comprehensive Review Document | ||
| Create a detailed review document at `.docs/reviews/branch-{BRANCH_NAME}-{YYYY-MM-DD_HHMM}.md`: | ||
| ```markdown | ||
| # Branch Review - {BRANCH_NAME} | ||
| **Date**: {current_date} | ||
| **Time**: {current_time} | ||
| **Type**: Branch Review (PR Readiness Assessment) | ||
| **Branch**: {CURRENT_BRANCH} | ||
| **Base**: {BASE_BRANCH} | ||
| **Reviewer**: AI Sub-Agent Orchestra | ||
| --- | ||
| ## π Branch Overview | ||
| **Commits**: {commit_count} commits | ||
| **Files Changed**: {files_changed} | ||
| **Lines Added**: {lines_added} | ||
| **Lines Removed**: {lines_removed} | ||
| **Review Duration**: {duration} | ||
| ### Change Categories | ||
| - π― **Features**: {feature_changes} | ||
| - π **Bug Fixes**: {bug_fixes} | ||
| - π§ **Refactoring**: {refactoring} | ||
| - π **Documentation**: {doc_changes} | ||
| - π§ͺ **Tests**: {test_changes} | ||
| --- | ||
| ## π― PR Readiness Assessment | ||
| ### π¦ MERGE RECOMMENDATION | ||
| **Status**: {β READY TO MERGE | β οΈ ISSUES TO ADDRESS | π« NOT READY} | ||
| **Confidence Level**: {High/Medium/Low} | ||
| ### Blocking Issues (Must Fix Before Merge) | ||
| - π΄ {critical_issue_1} in {file:line} | ||
| - π΄ {critical_issue_2} in {file:line} | ||
| ### High Priority (Should Fix Before Merge) | ||
| - π {high_issue_1} in {file:line} | ||
| - π {high_issue_2} in {file:line} | ||
| --- | ||
| ## π Detailed Sub-Agent Analysis | ||
| ### π Security Analysis (audit-security) | ||
| **Risk Level**: {Low/Medium/High/Critical} | ||
| #### Security Issues Found | ||
| {detailed security findings with file:line references} | ||
| #### Security Recommendations | ||
| {specific security improvements needed} | ||
| ### π TypeScript Analysis (audit-typescript) | ||
| **Type Safety**: {Excellent/Good/Acceptable/Poor} | ||
| **Note**: Only included if TypeScript files changed or project uses TypeScript | ||
| #### TypeScript Issues Found | ||
| {detailed type safety findings with file:line references} | ||
| #### TypeScript Recommendations | ||
| {specific type safety improvements needed} | ||
| ### β‘ Performance Analysis (audit-performance) | ||
| **Performance Impact**: {Positive/Neutral/Negative} | ||
| #### Performance Issues Found | ||
| {detailed performance findings with optimizations} | ||
| #### Performance Recommendations | ||
| {specific performance improvements} | ||
| ### ποΈ Architecture Analysis (audit-architecture) | ||
| **Architecture Quality**: {Excellent/Good/Acceptable/Poor} | ||
| #### Architectural Issues Found | ||
| {detailed architecture findings and design concerns} | ||
| #### Architecture Recommendations | ||
| {specific architectural improvements} | ||
| ### π§ͺ Test Coverage Analysis (audit-tests) | ||
| **Coverage Assessment**: {Excellent/Good/Adequate/Insufficient} | ||
| #### Testing Issues Found | ||
| {detailed test coverage gaps and quality issues} | ||
| #### Testing Recommendations | ||
| {specific tests that should be added} | ||
| ### π§ Complexity Analysis (audit-complexity) | ||
| **Maintainability Score**: {Excellent/Good/Acceptable/Poor} | ||
| #### Complexity Issues Found | ||
| {detailed complexity and maintainability concerns} | ||
| #### Complexity Recommendations | ||
| {specific refactoring suggestions} | ||
| ### π¦ Dependency Analysis (audit-dependencies) | ||
| **Dependency Health**: {Excellent/Good/Acceptable/Poor} | ||
| #### Dependency Issues Found | ||
| {detailed dependency concerns and security issues} | ||
| #### Dependency Recommendations | ||
| {specific dependency management improvements} | ||
| ### π Documentation Analysis (audit-documentation) | ||
| **Documentation Quality**: {Excellent/Good/Acceptable/Poor} | ||
| #### Documentation Issues Found | ||
| {detailed documentation drift, missing docs, stale examples} | ||
| #### Documentation Recommendations | ||
| {specific documentation updates needed} | ||
| ### ποΈ Database Analysis (audit-database) | ||
| **Database Health**: {Excellent/Good/Acceptable/Poor} | ||
| **Note**: Only included if database changes detected | ||
| #### Database Issues Found | ||
| {detailed database design, migration, and query issues} | ||
| #### Database Recommendations | ||
| {specific database improvements needed} | ||
| --- | ||
| ## π― Action Plan | ||
| ### Pre-Merge Checklist (Blocking) | ||
| - [ ] {blocking_action_1} - {estimated_effort} | ||
| - [ ] {blocking_action_2} - {estimated_effort} | ||
| - [ ] {blocking_action_3} - {estimated_effort} | ||
| ### Post-Merge Improvements (Non-Blocking) | ||
| - [ ] {improvement_1} - {estimated_effort} | ||
| - [ ] {improvement_2} - {estimated_effort} | ||
| - [ ] {improvement_3} - {estimated_effort} | ||
| ### Follow-Up Tasks | ||
| - [ ] {followup_1} | ||
| - [ ] {followup_2} | ||
| --- | ||
| ## π Quality Metrics | ||
| ### Code Quality Score: {score}/10 | ||
| **Breakdown**: | ||
| - Security: {score}/10 | ||
| - TypeScript: {score}/10 (if applicable) | ||
| - Performance: {score}/10 | ||
| - Architecture: {score}/10 | ||
| - Test Coverage: {score}/10 | ||
| - Maintainability: {score}/10 | ||
| - Dependencies: {score}/10 | ||
| - Documentation: {score}/10 | ||
| - Database: {score}/10 (if applicable) | ||
| ### Comparison to {BASE_BRANCH} | ||
| - Quality Trend: {Improving/Stable/Declining} | ||
| - Technical Debt: {Reduced/Neutral/Increased} | ||
| - Test Coverage: {Increased/Maintained/Decreased} | ||
| --- | ||
| ## π Related Resources | ||
| ### Files Requiring Attention | ||
| - {file1} - {reason} | ||
| - {file2} - {reason} | ||
| - {file3} - {reason} | ||
| ### Similar Issues in Codebase | ||
| - {related_issue_1} in {location} | ||
| - {related_issue_2} in {location} | ||
| ### Documentation Updates Needed | ||
| - {doc_update_1} | ||
| - {doc_update_2} | ||
| --- | ||
| ## π‘ Reviewer Notes | ||
| ### Human Review Focus Areas | ||
| Based on sub-agent analysis, human reviewers should focus on: | ||
| 1. {focus_area_1} - {reason} | ||
| 2. {focus_area_2} - {reason} | ||
| 3. {focus_area_3} - {reason} | ||
| ### Discussion Points | ||
| - {discussion_point_1} | ||
| - {discussion_point_2} | ||
| - {discussion_point_3} | ||
| --- | ||
| *Comprehensive review generated by DevFlow sub-agent orchestration* | ||
| *Next: Address blocking issues, then create PR with this review as reference* | ||
| ``` | ||
| ### Step 6: Provide Executive Summary | ||
| Give the developer a clear, actionable summary: | ||
| ``` | ||
| π BRANCH REVIEW COMPLETE: {BRANCH_NAME} | ||
| π ANALYSIS SUMMARY: | ||
| - Files analyzed: {X} files, {Y} commits | ||
| - Issues found: {Critical} critical, {High} high, {Medium} medium, {Low} low | ||
| - Review confidence: {High/Medium/Low} | ||
| π¦ PR READINESS: {β READY | β οΈ ISSUES TO ADDRESS | π« NOT READY} | ||
| π― CRITICAL ACTIONS BEFORE MERGE: | ||
| 1. {Most critical blocking issue} | ||
| 2. {Second most critical blocking issue} | ||
| 3. {Third most critical blocking issue} | ||
| β‘ QUICK WINS: | ||
| - {Easy fix 1} ({estimated time}) | ||
| - {Easy fix 2} ({estimated time}) | ||
| π Full review: .docs/reviews/branch-{branch}-{timestamp}.md | ||
| π NEXT STEPS: | ||
| 1. Address blocking issues above | ||
| 2. Run `/code-review` after fixes to verify | ||
| 3. Create PR using this review as reference | ||
| 4. Share review with team for human review focus | ||
| ``` |
+13
-0
@@ -8,2 +8,14 @@ # Changelog | ||
| ## [0.3.2] - 2025-10-17 | ||
| ### Changed | ||
| - **Simplified init command output** - Reduced installation output from ~60-80 lines to ~10-15 lines | ||
| - **Unified review commands** - Consolidated /pre-commit and /pre-pr into single /code-review command | ||
| - **Streamlined statusline** - Removed cost/API metrics, added CPU/memory monitoring (28% code reduction) | ||
| ### Improved | ||
| - Replaced /catch-up suggestion with comprehensive commands reference for better initial UX | ||
| --- | ||
| ## [0.3.1] - 2025-10-17 | ||
@@ -254,2 +266,3 @@ | ||
| [0.3.2]: https://github.com/dean0x/devflow/releases/tag/v0.3.2 | ||
| [0.3.1]: https://github.com/dean0x/devflow/releases/tag/v0.3.1 | ||
@@ -256,0 +269,0 @@ [0.3.0]: https://github.com/dean0x/devflow/releases/tag/v0.3.0 |
@@ -1,1 +0,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"} | ||
| {"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"} |
+81
-127
@@ -63,4 +63,13 @@ import { Command } from 'commander'; | ||
| .action(async (options) => { | ||
| console.log('π DevFlow - Agentic Development Toolkit'); | ||
| console.log(' Intelligent tools for reliable AI-assisted development\n'); | ||
| // Get package version | ||
| const packageJsonPath = path.resolve(__dirname, '../../package.json'); | ||
| let version = ''; | ||
| try { | ||
| const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8')); | ||
| version = packageJson.version; | ||
| } | ||
| catch { | ||
| version = 'unknown'; | ||
| } | ||
| console.log(`π DevFlow v${version}${options.force ? ' [--force]' : ''}\n`); | ||
| // Get installation paths with proper validation | ||
@@ -80,11 +89,26 @@ let claudeDir; | ||
| await fs.access(claudeDir); | ||
| console.log(`π Detected Claude Code at ${claudeDir} β \n`); | ||
| } | ||
| catch { | ||
| console.error(`β Claude Code not detected at ${claudeDir}`); | ||
| console.error('\nInstall Claude Code from: https://claude.com/claude-code'); | ||
| console.error('\nOr set CLAUDE_CODE_DIR environment variable if installed elsewhere.'); | ||
| console.error(' Install from: https://claude.com/claude-code'); | ||
| console.error(' Or set CLAUDE_CODE_DIR if installed elsewhere\n'); | ||
| process.exit(1); | ||
| } | ||
| console.log('π οΈ Installing DevFlow for Claude Code...'); | ||
| // Handle --force flag prompt | ||
| let forceOverride = false; | ||
| if (options.force) { | ||
| if (options.yes) { | ||
| forceOverride = true; | ||
| } | ||
| else { | ||
| console.log('β οΈ WARNING: Force override will replace settings.json and CLAUDE.md'); | ||
| console.log(' Backups: settings.json.backup, CLAUDE.md.backup\n'); | ||
| forceOverride = await promptUser('Proceed? (y/N): '); | ||
| console.log(); | ||
| if (!forceOverride) { | ||
| console.log('β Cancelled. Use init without --force for safe installation.\n'); | ||
| process.exit(0); | ||
| } | ||
| } | ||
| } | ||
| // Get the root directory of the devflow package | ||
@@ -95,3 +119,2 @@ const rootDir = path.resolve(__dirname, '../..'); | ||
| // Clean old DevFlow files before installing | ||
| console.log(' π§Ή Cleaning old DevFlow files...'); | ||
| const commandsDevflowDir = path.join(claudeDir, 'commands', 'devflow'); | ||
@@ -109,12 +132,7 @@ const agentsDevflowDir = path.join(claudeDir, 'agents', 'devflow'); | ||
| } | ||
| // Install commands | ||
| console.log(' π Installing commands...'); | ||
| // Install components silently | ||
| await fs.mkdir(commandsDevflowDir, { recursive: true }); | ||
| await copyDirectory(path.join(claudeSourceDir, 'commands', 'devflow'), commandsDevflowDir); | ||
| // Install sub-agents | ||
| console.log(' π€ Installing sub-agents...'); | ||
| await fs.mkdir(agentsDevflowDir, { recursive: true }); | ||
| await copyDirectory(path.join(claudeSourceDir, 'agents', 'devflow'), agentsDevflowDir); | ||
| // Install scripts | ||
| console.log(' π Installing scripts...'); | ||
| await fs.mkdir(devflowScriptsDir, { recursive: true }); | ||
@@ -127,26 +145,5 @@ await copyDirectory(path.join(claudeSourceDir, 'scripts'), devflowScriptsDir); | ||
| } | ||
| // Handle --force flag | ||
| let forceOverride = false; | ||
| if (options.force) { | ||
| if (options.yes) { | ||
| console.log(' β οΈ Force override enabled with auto-approval (-y flag)\n'); | ||
| forceOverride = true; | ||
| } | ||
| else { | ||
| console.log(' β οΈ WARNING: --force flag will override existing settings.json and CLAUDE.md\n'); | ||
| console.log(' This will:'); | ||
| console.log(' β’ Replace ~/.claude/settings.json with DevFlow settings'); | ||
| console.log(' β’ Replace ~/.claude/CLAUDE.md with DevFlow global instructions\n'); | ||
| forceOverride = await promptUser(' Do you want to proceed? (y/N): '); | ||
| console.log(); | ||
| if (!forceOverride) { | ||
| console.log(' β Force override cancelled. Proceeding with safe installation.\n'); | ||
| } | ||
| else { | ||
| console.log(' β Force override approved. Proceeding...\n'); | ||
| } | ||
| } | ||
| } | ||
| console.log('β Claude Code detected'); | ||
| console.log('β Installing components... (commands, agents, scripts)'); | ||
| // Install settings with smart backup | ||
| console.log(' βοΈ Installing settings...'); | ||
| const settingsPath = path.join(claudeDir, 'settings.json'); | ||
@@ -162,3 +159,2 @@ const managedSettingsPath = path.join(claudeDir, 'managed-settings.json'); | ||
| await fs.rename(settingsPath, path.join(claudeDir, 'settings.json.backup')); | ||
| console.log(' πΎ Existing settings backed up to: settings.json.backup'); | ||
| } | ||
@@ -170,3 +166,2 @@ catch { | ||
| settingsAction = 'force-installed'; | ||
| console.log(' β DevFlow settings force-installed to: settings.json'); | ||
| } | ||
@@ -185,4 +180,2 @@ else { | ||
| settingsAction = 'saved-as-devflow'; | ||
| console.log(' β οΈ Your existing settings.json is preserved'); | ||
| console.log(' π DevFlow settings saved to: settings.devflow.json'); | ||
| } | ||
@@ -194,4 +187,2 @@ catch { | ||
| settingsAction = 'backed-up'; | ||
| console.log(' πΎ Your settings backed up to: managed-settings.json'); | ||
| console.log(' β DevFlow settings installed to: settings.json'); | ||
| } | ||
@@ -203,7 +194,5 @@ } | ||
| settingsAction = 'fresh-install'; | ||
| console.log(' β DevFlow settings installed to: settings.json'); | ||
| } | ||
| } | ||
| // Install CLAUDE.md with smart backup | ||
| console.log(' π Installing global CLAUDE.md...'); | ||
| const claudeMdPath = path.join(claudeDir, 'CLAUDE.md'); | ||
@@ -218,3 +207,2 @@ const devflowClaudeMdPath = path.join(claudeDir, 'CLAUDE.devflow.md'); | ||
| await fs.rename(claudeMdPath, path.join(claudeDir, 'CLAUDE.md.backup')); | ||
| console.log(' πΎ Existing CLAUDE.md backed up to: CLAUDE.md.backup'); | ||
| } | ||
@@ -226,3 +214,2 @@ catch { | ||
| claudeMdAction = 'force-installed'; | ||
| console.log(' β DevFlow CLAUDE.md force-installed'); | ||
| } | ||
@@ -237,4 +224,2 @@ else { | ||
| claudeMdAction = 'saved-as-devflow'; | ||
| console.log(' β οΈ Your existing CLAUDE.md is preserved'); | ||
| console.log(' π DevFlow CLAUDE.md saved to: CLAUDE.devflow.md'); | ||
| } | ||
@@ -245,58 +230,28 @@ catch { | ||
| claudeMdAction = 'fresh-install'; | ||
| console.log(' β DevFlow CLAUDE.md installed'); | ||
| } | ||
| } | ||
| console.log(' β Claude Code installation complete\n'); | ||
| // Show settings instructions if needed | ||
| if (settingsAction === 'saved-as-devflow') { | ||
| console.log('βοΈ SETTINGS CONFIGURATION REQUIRED:\n'); | ||
| console.log(' Your existing settings.json was preserved because managed-settings.json'); | ||
| console.log(' already exists. DevFlow settings are in settings.devflow.json\n'); | ||
| console.log(` To use DevFlow settings (statusline), manually merge into ${settingsPath}:`); | ||
| console.log(' ```json'); | ||
| console.log(' {'); | ||
| console.log(' "statusLine": {'); | ||
| console.log(' "type": "command",'); | ||
| console.log(` "command": "${path.join(devflowDir, 'scripts', 'statusline.sh')}"`); | ||
| console.log(' }'); | ||
| console.log(' }'); | ||
| console.log(' ```\n'); | ||
| // Show concise status messages | ||
| if (settingsAction === 'force-installed') { | ||
| console.log('β Settings force-installed (backup: settings.json.backup)'); | ||
| } | ||
| else if (settingsAction === 'backed-up') { | ||
| console.log('πΎ SETTINGS BACKUP:\n'); | ||
| console.log(` Your original settings saved to: ${managedSettingsPath}`); | ||
| console.log(` DevFlow settings now active in: ${settingsPath}`); | ||
| console.log(` To restore: mv ${managedSettingsPath} ${settingsPath}\n`); | ||
| console.log('β Settings configured'); | ||
| } | ||
| else if (settingsAction === 'force-installed') { | ||
| console.log('β οΈ FORCE OVERRIDE APPLIED:\n'); | ||
| console.log(` Your original settings backed up to: ${path.join(claudeDir, 'settings.json.backup')}`); | ||
| console.log(` DevFlow settings now active in: ${settingsPath}\n`); | ||
| else if (settingsAction === 'saved-as-devflow') { | ||
| console.log('β οΈ Existing settings preserved β DevFlow saved to settings.devflow.json'); | ||
| } | ||
| // Show CLAUDE.md instructions if needed | ||
| if (claudeMdAction === 'saved-as-devflow') { | ||
| console.log('π CLAUDE.MD CONFIGURATION REQUIRED:\n'); | ||
| console.log(' Your existing CLAUDE.md was preserved.'); | ||
| console.log(` DevFlow global instructions are in: ${devflowClaudeMdPath}\n`); | ||
| console.log(' To use DevFlow global instructions, manually merge into your CLAUDE.md:'); | ||
| console.log(' β’ Engineering Principles (Result types, DI, immutability)'); | ||
| console.log(' β’ Critical Anti-Patterns (NO FAKE SOLUTIONS, FAIL HONESTLY)'); | ||
| console.log(' β’ Code Quality Enforcement (root cause analysis)'); | ||
| console.log(' β’ Type Safety Best Practices (language-agnostic)'); | ||
| console.log(' β’ Architecture Documentation (inline docs)\n'); | ||
| console.log(` Or replace entirely: cp ${devflowClaudeMdPath} ${claudeMdPath}\n`); | ||
| else { | ||
| console.log('β Settings configured'); | ||
| } | ||
| else if (claudeMdAction === 'fresh-install') { | ||
| console.log('π CLAUDE.MD INSTALLED:\n'); | ||
| console.log(` DevFlow global instructions active in: ${claudeMdPath}`); | ||
| console.log(' β’ Language-agnostic engineering principles'); | ||
| console.log(' β’ Critical anti-patterns and foolishness prevention'); | ||
| console.log(' β’ Code quality enforcement rules\n'); | ||
| if (claudeMdAction === 'force-installed') { | ||
| console.log('β CLAUDE.md force-installed (backup: CLAUDE.md.backup)'); | ||
| } | ||
| else if (claudeMdAction === 'force-installed') { | ||
| console.log('β οΈ CLAUDE.MD FORCE OVERRIDE APPLIED:\n'); | ||
| console.log(` Your original CLAUDE.md backed up to: ${path.join(claudeDir, 'CLAUDE.md.backup')}`); | ||
| console.log(` DevFlow global instructions now active in: ${claudeMdPath}\n`); | ||
| else if (claudeMdAction === 'saved-as-devflow') { | ||
| console.log('β οΈ Existing CLAUDE.md preserved β DevFlow saved to CLAUDE.devflow.md'); | ||
| } | ||
| else { | ||
| console.log('β CLAUDE.md configured'); | ||
| } | ||
| // Create .claudeignore in git repository root | ||
| let claudeignoreCreated = false; | ||
| try { | ||
@@ -312,3 +267,2 @@ // Find git repository root | ||
| await fs.access(claudeignorePath); | ||
| console.log('π Security: .claudeignore already exists (skipping)'); | ||
| } | ||
@@ -507,6 +461,3 @@ catch { | ||
| await fs.writeFile(claudeignorePath, claudeignoreContent, 'utf-8'); | ||
| console.log('π Security: Created .claudeignore at repository root'); | ||
| console.log(' β’ Protects sensitive files (credentials, keys, secrets)'); | ||
| console.log(' β’ Reduces context pollution (node_modules, build artifacts)'); | ||
| console.log(' β’ Covers common patterns for all major languages\n'); | ||
| claudeignoreCreated = true; | ||
| } | ||
@@ -516,7 +467,9 @@ } | ||
| // Not a git repository or other error - skip .claudeignore creation | ||
| console.log('βΉοΈ Skipped .claudeignore (not in a git repository)\n'); | ||
| } | ||
| if (claudeignoreCreated) { | ||
| console.log('β .claudeignore created'); | ||
| } | ||
| // Offer to install project documentation structure | ||
| let docsCreated = false; | ||
| if (!options.skipDocs) { | ||
| console.log('π Project Documentation Setup\n'); | ||
| const docsDir = path.join(process.cwd(), '.docs'); | ||
@@ -527,32 +480,33 @@ try { | ||
| await fs.mkdir(path.join(docsDir, 'audits'), { recursive: true }); | ||
| console.log(' β Created .docs/ structure'); | ||
| console.log(' β’ .docs/status/ - Session documentation'); | ||
| console.log(' β’ .docs/reviews/ - Code review reports'); | ||
| console.log(' β’ .docs/audits/ - Security, performance, architecture audits'); | ||
| docsCreated = true; | ||
| } | ||
| catch (error) { | ||
| console.log(' β οΈ Could not create .docs/ structure (may already exist)'); | ||
| // .docs/ structure may already exist | ||
| } | ||
| } | ||
| console.log('\nβ DevFlow installation complete!\n'); | ||
| console.log('π― WHAT\'S INSTALLED:'); | ||
| console.log(' π Claude Code:'); | ||
| console.log(` β’ Commands: ${path.join(claudeDir, 'commands')}/`); | ||
| console.log(` β’ Sub-agents: ${path.join(claudeDir, 'agents')}/`); | ||
| console.log(` β’ Scripts: ${path.join(devflowDir, 'scripts')}/`); | ||
| console.log(` β’ Settings: ${settingsPath} (statusline and model)`); | ||
| console.log(` β’ Global Instructions: ${claudeMdPath} (language-agnostic)\n`); | ||
| console.log('π SMART STATUSLINE:'); | ||
| console.log(' β Statusline configured'); | ||
| console.log(' β’ Shows project context, git status, session cost, and duration\n'); | ||
| console.log('π QUICK START:'); | ||
| console.log(' 1. Navigate to a project directory'); | ||
| console.log(' 2. Run \'/catch-up\' to get oriented'); | ||
| console.log(' 3. Use \'/pre-commit\' to review uncommitted changes'); | ||
| console.log(' 4. Run \'/devlog\' to document sessions\n'); | ||
| console.log('π DOCUMENTATION:'); | ||
| console.log(' β’ Check README for comprehensive guide'); | ||
| console.log(' β’ Commands are self-documenting'); | ||
| console.log(' β’ Visit npm or GitHub for full documentation\n'); | ||
| console.log('Happy coding with DevFlow! π'); | ||
| if (docsCreated) { | ||
| console.log('β .docs/ structure ready'); | ||
| } | ||
| console.log('\nβ Installation complete!\n'); | ||
| // Show manual merge instructions if needed | ||
| if (settingsAction === 'saved-as-devflow' || claudeMdAction === 'saved-as-devflow') { | ||
| console.log('β οΈ Manual merge required:'); | ||
| if (settingsAction === 'saved-as-devflow') { | ||
| console.log(' Settings: Merge settings.devflow.json β settings.json'); | ||
| } | ||
| if (claudeMdAction === 'saved-as-devflow') { | ||
| console.log(' Instructions: cp ~/.claude/CLAUDE.devflow.md ~/.claude/CLAUDE.md'); | ||
| } | ||
| console.log(); | ||
| } | ||
| console.log('Available commands:'); | ||
| console.log(' /catch-up Session context and status'); | ||
| console.log(' /research Pre-implementation planning'); | ||
| console.log(' /code-review Comprehensive code review'); | ||
| console.log(' /commit Intelligent atomic commits'); | ||
| console.log(' /devlog Session documentation'); | ||
| console.log(' /debug Systematic debugging'); | ||
| console.log(' /release Release automation'); | ||
| console.log(' /plan-next-steps Extract actionable tasks'); | ||
| console.log('\nDocs: npm home devflow-kit'); | ||
| } | ||
@@ -559,0 +513,0 @@ catch (error) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/commands/init.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/commands/init.ts"],"names":[],"mappings":"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"} |
+1
-1
| { | ||
| "name": "devflow-kit", | ||
| "version": "0.3.1", | ||
| "version": "0.3.2", | ||
| "description": "Agentic Development Toolkit for Claude Code - Enhance AI-assisted development with intelligent commands and workflows", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
+5
-7
@@ -25,5 +25,4 @@ # DevFlow - Agentic Development Toolkit | ||
| | `/debug [issue]` | Systematic debugging with issue-specific investigation | When troubleshooting | | ||
| | `/pre-commit` | Review uncommitted changes using specialized sub-agents | Before committing | | ||
| | `/code-review` | Comprehensive code review using specialized sub-agents | Before committing or creating PR | | ||
| | `/commit` | Intelligent atomic commit creation with safety checks | When ready to commit | | ||
| | `/pre-pr` | Comprehensive branch review for PR readiness | Before creating PR | | ||
| | `/release` | Automated release workflow with version management and publishing | Creating a new release | | ||
@@ -101,3 +100,3 @@ | ||
| 1. `/research [topic]` - Research implementation approaches before coding | ||
| 2. `/pre-commit` - Review changes before committing | ||
| 2. `/code-review` - Review changes before committing | ||
| 3. `/commit` - Create intelligent atomic commits | ||
@@ -108,7 +107,7 @@ 4. Invoke audit sub-agents as needed | ||
| 1. `/devlog` - Document decisions and state | ||
| 2. `/pre-pr` - Review branch before creating PR | ||
| 2. `/code-review` - Review branch before creating PR | ||
| 3. `/commit` - Final commits with validation | ||
| ### Creating a Release | ||
| 1. `/pre-pr` - Comprehensive branch review | ||
| 1. `/code-review` - Comprehensive branch review | ||
| 2. `/release` - Automated release workflow | ||
@@ -169,5 +168,4 @@ - Detects project type (Node.js, Rust, Python, Go, etc.) | ||
| /research "add JWT authentication" # Research before implementing | ||
| /pre-commit # Review uncommitted changes | ||
| /code-review # Review changes (uncommitted or full branch) | ||
| /commit # Create atomic commits | ||
| /pre-pr # Branch review before PR | ||
| /release # Automated release workflow | ||
@@ -174,0 +172,0 @@ /debug "TypeError in auth module" # Debug specific issue |
@@ -13,21 +13,7 @@ #!/bin/bash | ||
| CWD=$(echo "$INPUT" | jq -r '.cwd // "~"' 2>/dev/null) | ||
| TOTAL_COST=$(echo "$INPUT" | jq -r '.cost.total_cost_usd // 0' 2>/dev/null) | ||
| LINES_ADDED=$(echo "$INPUT" | jq -r '.cost.total_lines_added // 0' 2>/dev/null) | ||
| LINES_REMOVED=$(echo "$INPUT" | jq -r '.cost.total_lines_removed // 0' 2>/dev/null) | ||
| TOTAL_DURATION_MS=$(echo "$INPUT" | jq -r '.cost.total_duration_ms // 0' 2>/dev/null) | ||
| API_DURATION_MS=$(echo "$INPUT" | jq -r '.cost.total_api_duration_ms // 0' 2>/dev/null) | ||
| EXCEEDS_200K=$(echo "$INPUT" | jq -r '.exceeds_200k_tokens // false' 2>/dev/null) | ||
| VERSION=$(echo "$INPUT" | jq -r '.version // ""' 2>/dev/null) | ||
| OUTPUT_STYLE=$(echo "$INPUT" | jq -r '.output_style.name // ""' 2>/dev/null) | ||
| else | ||
| MODEL="claude" | ||
| CWD=$(pwd) | ||
| TOTAL_COST="0.00" | ||
| LINES_ADDED="0" | ||
| LINES_REMOVED="0" | ||
| TOTAL_DURATION_MS="0" | ||
| API_DURATION_MS="0" | ||
| EXCEEDS_200K="false" | ||
| VERSION="" | ||
| OUTPUT_STYLE="" | ||
| fi | ||
@@ -38,3 +24,3 @@ | ||
| # Get git branch and last commit if in a git repo | ||
| # Get git branch if in a git repo | ||
| GIT_BRANCH=$(cd "$CWD" 2>/dev/null && git branch --show-current 2>/dev/null || echo "") | ||
@@ -44,75 +30,57 @@ if [ -z "$GIT_BRANCH" ]; then | ||
| else | ||
| # Get last commit message (first line, truncated to 50 chars) | ||
| LAST_COMMIT_MSG=$(cd "$CWD" 2>/dev/null && git log -1 --pretty=format:"%s" 2>/dev/null | cut -c1-50 || echo "") | ||
| # Check if there are uncommitted changes | ||
| if [ -n "$(cd "$CWD" 2>/dev/null && git status --porcelain 2>/dev/null)" ]; then | ||
| GIT_INFO=" / \033[1;33m$GIT_BRANCH*\033[0m" | ||
| GIT_INFO=" \033[1;33m$GIT_BRANCH*\033[0m" | ||
| else | ||
| GIT_INFO=" / \033[1;32m$GIT_BRANCH\033[0m" | ||
| GIT_INFO=" \033[1;32m$GIT_BRANCH\033[0m" | ||
| fi | ||
| fi | ||
| # Add commit message if available | ||
| if [ -n "$LAST_COMMIT_MSG" ]; then | ||
| GIT_INFO="$GIT_INFO \033[1;90m($LAST_COMMIT_MSG)\033[0m" | ||
| # Get system CPU and memory usage | ||
| get_cpu_usage() { | ||
| # Try multiple methods for cross-platform compatibility | ||
| if command -v top &> /dev/null; then | ||
| # Linux/macOS with top | ||
| top -bn1 2>/dev/null | grep -i "cpu" | head -1 | awk '{print $2}' | sed 's/%us,//' | sed 's/id,//' || echo "0" | ||
| elif command -v ps &> /dev/null; then | ||
| # Fallback: average CPU of all processes | ||
| ps -A -o %cpu | awk '{s+=$1} END {printf "%.0f", s}' | ||
| else | ||
| echo "0" | ||
| fi | ||
| fi | ||
| } | ||
| # Format cost with 2 decimal places | ||
| COST_FORMATTED=$(printf "%.2f" "$TOTAL_COST" 2>/dev/null || echo "0.00") | ||
| # Format session duration from milliseconds to human readable | ||
| format_duration() { | ||
| local ms=$1 | ||
| local seconds=$((ms / 1000)) | ||
| local minutes=$((seconds / 60)) | ||
| local hours=$((minutes / 60)) | ||
| local remaining_minutes=$((minutes % 60)) | ||
| if [ "$hours" -gt 0 ]; then | ||
| echo "${hours}h${remaining_minutes}m" | ||
| elif [ "$minutes" -gt 0 ]; then | ||
| echo "${minutes}m" | ||
| get_memory_usage() { | ||
| # Try multiple methods for cross-platform compatibility | ||
| if command -v free &> /dev/null; then | ||
| # Linux with free | ||
| free | grep Mem | awk '{printf "%.0f", ($3/$2)*100}' | ||
| elif command -v vm_stat &> /dev/null; then | ||
| # macOS with vm_stat | ||
| 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/\.//' | ||
| else | ||
| echo "${seconds}s" | ||
| echo "0" | ||
| fi | ||
| } | ||
| SESSION_DURATION=$(format_duration "$TOTAL_DURATION_MS") | ||
| API_DURATION=$(format_duration "$API_DURATION_MS") | ||
| CPU_USAGE=$(get_cpu_usage) | ||
| MEMORY_USAGE=$(get_memory_usage) | ||
| # Calculate API efficiency percentage | ||
| if [ "$TOTAL_DURATION_MS" -gt 0 ]; then | ||
| API_EFFICIENCY=$(echo "$API_DURATION_MS $TOTAL_DURATION_MS" | awk '{printf "%.0f", ($1/$2)*100}') | ||
| else | ||
| API_EFFICIENCY="0" | ||
| fi | ||
| # Build status line with colors - show components conditionally | ||
| # Build status line with colors | ||
| STATUS_LINE="\033[1;34m$DIR_NAME\033[0m$GIT_INFO" | ||
| # Add session duration if meaningful | ||
| # if [ "$TOTAL_DURATION_MS" -gt 60000 ]; then # > 1 minute | ||
| # STATUS_LINE="$STATUS_LINE \033[1;33m$SESSION_DURATION\033[0m" | ||
| # fi | ||
| # Add model name | ||
| STATUS_LINE="$STATUS_LINE \033[1;36m$MODEL\033[0m" | ||
| # Add API efficiency if session is long enough and efficiency is notable | ||
| if [ "$TOTAL_DURATION_MS" -gt 300000 ] && [ "$API_EFFICIENCY" -gt 10 ]; then # > 5 min and >10% API time | ||
| STATUS_LINE="$STATUS_LINE \033[1;91mapi:${API_EFFICIENCY}%\033[0m" | ||
| fi | ||
| # Add CPU usage | ||
| STATUS_LINE="$STATUS_LINE \033[1;35mcpu:${CPU_USAGE}%\033[0m" | ||
| # Add large context warning | ||
| # Add memory usage | ||
| STATUS_LINE="$STATUS_LINE \033[1;33mmem:${MEMORY_USAGE}%\033[0m" | ||
| # Add large context warning if needed | ||
| if [ "$EXCEEDS_200K" = "true" ]; then | ||
| STATUS_LINE="$STATUS_LINE \033[1;93mβ οΈlarge\033[0m" | ||
| STATUS_LINE="$STATUS_LINE \033[1;91mβ οΈlarge\033[0m" | ||
| fi | ||
| # Add cost if non-zero and meaningful (> $0.01) | ||
| COST_CENTS=$(echo "$TOTAL_COST" | awk '{printf "%.0f", $1*100}') | ||
| if [ "$COST_CENTS" -gt 1 ]; then | ||
| STATUS_LINE="$STATUS_LINE \033[1;32m\$$COST_FORMATTED\033[0m" | ||
| fi | ||
| # Add model at the end | ||
| # STATUS_LINE="$STATUS_LINE \033[1;36m$MODEL\033[0m" | ||
| echo -e "$STATUS_LINE" |
| --- | ||
| description: Review uncommitted changes before committing using specialized sub-agents | ||
| allowed-tools: Task, Bash, Read, Write, Grep, Glob | ||
| --- | ||
| ## Your Task | ||
| Perform a comprehensive review of uncommitted changes by orchestrating multiple specialized sub-agents in parallel. This provides quick feedback before committing changes. | ||
| **Audit Strategy**: | ||
| - **Always Run** (5 core audits): Security, Performance, Architecture, Tests, Complexity | ||
| - **Language-Specific** (conditional): TypeScript (runs only if .ts/.tsx files changed or tsconfig.json exists) | ||
| - **Available on demand**: Documentation, Dependencies, Database (use `/pre-pr` for full audit) | ||
| This lightweight approach provides fast feedback for individual commits. Use `/pre-pr` for comprehensive branch reviews before creating pull requests. | ||
| ### Step 1: Analyze Current Changes | ||
| First, check what changes are available for review: | ||
| ```bash | ||
| # Check for uncommitted changes | ||
| git status --porcelain | ||
| # Get the diff of uncommitted changes | ||
| if git diff --quiet HEAD; then | ||
| echo "No uncommitted changes to review" | ||
| exit 0 | ||
| fi | ||
| # Show summary of changes | ||
| echo "=== CHANGES TO REVIEW ===" | ||
| git diff --stat HEAD | ||
| echo "" | ||
| ``` | ||
| ### Step 2: Launch Specialized Sub-Agents in Parallel | ||
| Launch these sub-agents in parallel: | ||
| 1. audit-security sub-agent | ||
| 2. audit-typescript sub-agent (automatically skips if not applicable) | ||
| 3. audit-performance sub-agent | ||
| 4. audit-architecture sub-agent | ||
| 5. audit-tests sub-agent | ||
| 6. audit-complexity sub-agent | ||
| **Note**: The audit-typescript agent contains built-in detection logic and will automatically skip if: | ||
| - No .ts/.tsx files were changed AND | ||
| - No tsconfig.json exists in the project | ||
| ### Step 3: Synthesize Review Findings | ||
| After all sub-agents complete their analysis: | ||
| 1. **Collect Results**: Gather findings from all sub-agents | ||
| 2. **Prioritize Issues**: Categorize as Critical/High/Medium/Low | ||
| 3. **Create Unified Review**: Synthesize into coherent review document | ||
| 4. **Generate Action Items**: Provide specific next steps | ||
| ### Step 4: Save Review Document | ||
| Create a comprehensive review document at `.docs/reviews/diff-{YYYY-MM-DD_HHMM}.md`: | ||
| ```markdown | ||
| # Code Review - Uncommitted Changes | ||
| **Date**: {current_date} | ||
| **Time**: {current_time} | ||
| **Type**: Differential Review (uncommitted changes) | ||
| **Reviewer**: AI Sub-Agent Orchestra | ||
| --- | ||
| ## π Review Summary | ||
| **Files Changed**: {number} | ||
| **Lines Added**: {number} | ||
| **Lines Removed**: {number} | ||
| ### Issues Found | ||
| - π΄ **Critical**: {count} issues requiring immediate attention | ||
| - π **High**: {count} issues should be addressed before commit | ||
| - π‘ **Medium**: {count} improvements recommended | ||
| - π΅ **Low**: {count} minor suggestions | ||
| --- | ||
| ## π Detailed Analysis | ||
| ### Security Review (audit-security) | ||
| {security findings with file:line references} | ||
| ### TypeScript Review (audit-typescript) | ||
| {type safety findings, or "βοΈ Skipped - not applicable" if no TS files} | ||
| ### Performance Review (audit-performance) | ||
| {performance findings with specific optimizations} | ||
| ### Architecture Review (audit-architecture) | ||
| {design pattern and structure analysis} | ||
| ### Test Coverage Review (audit-tests) | ||
| {test gaps and quality assessment} | ||
| ### Complexity Review (audit-complexity) | ||
| {maintainability and refactoring suggestions} | ||
| --- | ||
| ## π― Action Items | ||
| ### Before Committing (Critical/High) | ||
| - [ ] {action 1} in {file:line} | ||
| - [ ] {action 2} in {file:line} | ||
| ### Future Improvements (Medium/Low) | ||
| - [ ] {improvement 1} | ||
| - [ ] {improvement 2} | ||
| --- | ||
| ## π Code Quality Metrics | ||
| **Overall Assessment**: {Excellent/Good/Needs Work/Poor} | ||
| **Commit Recommendation**: {β Safe to commit / β οΈ Address issues first / π« Do not commit} | ||
| --- | ||
| *Review generated by DevFlow sub-agent orchestration* | ||
| ``` | ||
| ### Step 5: Provide Interactive Summary | ||
| Give the developer a clear summary and next steps: | ||
| ``` | ||
| π UNCOMMITTED CHANGES REVIEW COMPLETE | ||
| Changes analyzed: {X} files, {Y} lines modified | ||
| Issues found: {Critical} critical, {High} high, {Medium} medium, {Low} low | ||
| π COMMIT READINESS ASSESSMENT: | ||
| {β SAFE TO COMMIT | β οΈ ISSUES TO ADDRESS | π« DO NOT COMMIT} | ||
| π― TOP PRIORITY ACTIONS: | ||
| 1. {Most critical issue and fix} | ||
| 2. {Second most critical issue and fix} | ||
| 3. {Third most critical issue and fix} | ||
| π Full review saved to: .docs/reviews/diff-{timestamp}.md | ||
| π‘ TIP: Run `/review-branch` before creating PR for comprehensive feature review | ||
| ``` |
| --- | ||
| description: Comprehensive branch review using specialized sub-agents for PR readiness | ||
| allowed-tools: Task, Bash, Read, Write, Grep, Glob | ||
| --- | ||
| ## Your Task | ||
| Perform a comprehensive review of this entire feature branch by orchestrating multiple specialized sub-agents in parallel. This is designed for thorough analysis before creating pull requests or merging branches. | ||
| ### Step 1: Analyze Branch Changes | ||
| First, determine the branch and base for comparison: | ||
| ```bash | ||
| # Get current branch | ||
| CURRENT_BRANCH=$(git branch --show-current) | ||
| if [ -z "$CURRENT_BRANCH" ]; then | ||
| echo "β Not on a branch (detached HEAD). Checkout a feature branch first." | ||
| exit 1 | ||
| fi | ||
| # Determine base branch (main, master, or develop) | ||
| BASE_BRANCH="" | ||
| for branch in main master develop; do | ||
| if git show-ref --verify --quiet refs/heads/$branch; then | ||
| BASE_BRANCH=$branch | ||
| break | ||
| fi | ||
| done | ||
| if [ -z "$BASE_BRANCH" ]; then | ||
| echo "β Could not find base branch (main/master/develop). Specify manually." | ||
| exit 1 | ||
| fi | ||
| echo "=== BRANCH REVIEW SCOPE ===" | ||
| echo "Current branch: $CURRENT_BRANCH" | ||
| echo "Base branch: $BASE_BRANCH" | ||
| echo "" | ||
| # Check if there are changes to review | ||
| if git diff --quiet $BASE_BRANCH...HEAD; then | ||
| echo "No changes between $BASE_BRANCH and $CURRENT_BRANCH" | ||
| exit 0 | ||
| fi | ||
| # Show comprehensive change summary | ||
| echo "=== CHANGES TO REVIEW ===" | ||
| git diff --stat $BASE_BRANCH...HEAD | ||
| echo "" | ||
| echo "=== COMMIT HISTORY ===" | ||
| git log --oneline $BASE_BRANCH..HEAD | ||
| echo "" | ||
| ``` | ||
| ### Step 2: Detect Change Categories | ||
| Analyze what types of changes are in this branch to determine which specialized agents are needed: | ||
| ```bash | ||
| # Check if database-related files changed | ||
| DB_CHANGES=$(git diff --name-only $BASE_BRANCH...HEAD | grep -E '\.(sql|prisma|migration|knex|sequelize|db)' || true) | ||
| DB_CHANGES+=$(git diff --name-only $BASE_BRANCH...HEAD | grep -iE '(migration|schema|database|models/)' || true) | ||
| if [ -n "$DB_CHANGES" ]; then | ||
| echo "ποΈ Database changes detected - will run database audit" | ||
| INCLUDE_DB_AUDIT=true | ||
| else | ||
| echo "βΉοΈ No database changes detected - skipping database audit" | ||
| INCLUDE_DB_AUDIT=false | ||
| fi | ||
| echo "" | ||
| ``` | ||
| ### Step 3: Launch Specialized Sub-Agents in Parallel | ||
| Launch these sub-agents in parallel based on change detection: | ||
| **Core Audits (Always Run)**: | ||
| 1. audit-security sub-agent | ||
| 2. audit-performance sub-agent | ||
| 3. audit-architecture sub-agent | ||
| 4. audit-tests sub-agent | ||
| 5. audit-complexity sub-agent | ||
| 6. audit-dependencies sub-agent | ||
| 7. audit-documentation sub-agent | ||
| **Conditional Audits** (automatically detect and skip if not applicable): | ||
| 8. audit-typescript sub-agent (only if .ts/.tsx files changed or tsconfig.json exists) | ||
| 9. audit-database sub-agent (only if database changes detected) | ||
| ### Step 4: Synthesize Comprehensive Review | ||
| After all sub-agents complete their analysis: | ||
| 1. **Collect Results**: Gather findings from all 7-8 specialized sub-agents (depending on change types) | ||
| 2. **Cross-Reference Issues**: Identify overlapping concerns between domains | ||
| 3. **Prioritize for PR**: Focus on merge-blocking vs nice-to-have improvements | ||
| 4. **Create PR-Ready Review**: Structure for easy consumption by human reviewers | ||
| ### Step 5: Save Comprehensive Review Document | ||
| Create a detailed review document at `.docs/reviews/branch-{BRANCH_NAME}-{YYYY-MM-DD_HHMM}.md`: | ||
| ```markdown | ||
| # Branch Review - {BRANCH_NAME} | ||
| **Date**: {current_date} | ||
| **Time**: {current_time} | ||
| **Type**: Branch Review (PR Readiness Assessment) | ||
| **Branch**: {CURRENT_BRANCH} | ||
| **Base**: {BASE_BRANCH} | ||
| **Reviewer**: AI Sub-Agent Orchestra | ||
| --- | ||
| ## π Branch Overview | ||
| **Commits**: {commit_count} commits | ||
| **Files Changed**: {files_changed} | ||
| **Lines Added**: {lines_added} | ||
| **Lines Removed**: {lines_removed} | ||
| **Review Duration**: {duration} | ||
| ### Change Categories | ||
| - π― **Features**: {feature_changes} | ||
| - π **Bug Fixes**: {bug_fixes} | ||
| - π§ **Refactoring**: {refactoring} | ||
| - π **Documentation**: {doc_changes} | ||
| - π§ͺ **Tests**: {test_changes} | ||
| --- | ||
| ## π― PR Readiness Assessment | ||
| ### π¦ MERGE RECOMMENDATION | ||
| **Status**: {β READY TO MERGE | β οΈ ISSUES TO ADDRESS | π« NOT READY} | ||
| **Confidence Level**: {High/Medium/Low} | ||
| ### Blocking Issues (Must Fix Before Merge) | ||
| - π΄ {critical_issue_1} in {file:line} | ||
| - π΄ {critical_issue_2} in {file:line} | ||
| ### High Priority (Should Fix Before Merge) | ||
| - π {high_issue_1} in {file:line} | ||
| - π {high_issue_2} in {file:line} | ||
| --- | ||
| ## π Detailed Sub-Agent Analysis | ||
| ### π Security Analysis (audit-security) | ||
| **Risk Level**: {Low/Medium/High/Critical} | ||
| #### Security Issues Found | ||
| {detailed security findings with file:line references} | ||
| #### Security Recommendations | ||
| {specific security improvements needed} | ||
| ### π TypeScript Analysis (audit-typescript) | ||
| **Type Safety**: {Excellent/Good/Acceptable/Poor} | ||
| **Note**: Only included if TypeScript files changed or project uses TypeScript | ||
| #### TypeScript Issues Found | ||
| {detailed type safety findings with file:line references} | ||
| #### TypeScript Recommendations | ||
| {specific type safety improvements needed} | ||
| ### β‘ Performance Analysis (audit-performance) | ||
| **Performance Impact**: {Positive/Neutral/Negative} | ||
| #### Performance Issues Found | ||
| {detailed performance findings with optimizations} | ||
| #### Performance Recommendations | ||
| {specific performance improvements} | ||
| ### ποΈ Architecture Analysis (audit-architecture) | ||
| **Architecture Quality**: {Excellent/Good/Acceptable/Poor} | ||
| #### Architectural Issues Found | ||
| {detailed architecture findings and design concerns} | ||
| #### Architecture Recommendations | ||
| {specific architectural improvements} | ||
| ### π§ͺ Test Coverage Analysis (audit-tests) | ||
| **Coverage Assessment**: {Excellent/Good/Adequate/Insufficient} | ||
| #### Testing Issues Found | ||
| {detailed test coverage gaps and quality issues} | ||
| #### Testing Recommendations | ||
| {specific tests that should be added} | ||
| ### π§ Complexity Analysis (audit-complexity) | ||
| **Maintainability Score**: {Excellent/Good/Acceptable/Poor} | ||
| #### Complexity Issues Found | ||
| {detailed complexity and maintainability concerns} | ||
| #### Complexity Recommendations | ||
| {specific refactoring suggestions} | ||
| ### π¦ Dependency Analysis (audit-dependencies) | ||
| **Dependency Health**: {Excellent/Good/Acceptable/Poor} | ||
| #### Dependency Issues Found | ||
| {detailed dependency concerns and security issues} | ||
| #### Dependency Recommendations | ||
| {specific dependency management improvements} | ||
| ### π Documentation Analysis (audit-documentation) | ||
| **Documentation Quality**: {Excellent/Good/Acceptable/Poor} | ||
| #### Documentation Issues Found | ||
| {detailed documentation drift, missing docs, stale examples} | ||
| #### Documentation Recommendations | ||
| {specific documentation updates needed} | ||
| ### ποΈ Database Analysis (audit-database) | ||
| **Database Health**: {Excellent/Good/Acceptable/Poor} | ||
| **Note**: Only included if database changes detected | ||
| #### Database Issues Found | ||
| {detailed database design, migration, and query issues} | ||
| #### Database Recommendations | ||
| {specific database improvements needed} | ||
| --- | ||
| ## π― Action Plan | ||
| ### Pre-Merge Checklist (Blocking) | ||
| - [ ] {blocking_action_1} - {estimated_effort} | ||
| - [ ] {blocking_action_2} - {estimated_effort} | ||
| - [ ] {blocking_action_3} - {estimated_effort} | ||
| ### Post-Merge Improvements (Non-Blocking) | ||
| - [ ] {improvement_1} - {estimated_effort} | ||
| - [ ] {improvement_2} - {estimated_effort} | ||
| - [ ] {improvement_3} - {estimated_effort} | ||
| ### Follow-Up Tasks | ||
| - [ ] {followup_1} | ||
| - [ ] {followup_2} | ||
| --- | ||
| ## π Quality Metrics | ||
| ### Code Quality Score: {score}/10 | ||
| **Breakdown**: | ||
| - Security: {score}/10 | ||
| - TypeScript: {score}/10 (if applicable) | ||
| - Performance: {score}/10 | ||
| - Architecture: {score}/10 | ||
| - Test Coverage: {score}/10 | ||
| - Maintainability: {score}/10 | ||
| - Dependencies: {score}/10 | ||
| - Documentation: {score}/10 | ||
| - Database: {score}/10 (if applicable) | ||
| ### Comparison to {BASE_BRANCH} | ||
| - Quality Trend: {Improving/Stable/Declining} | ||
| - Technical Debt: {Reduced/Neutral/Increased} | ||
| - Test Coverage: {Increased/Maintained/Decreased} | ||
| --- | ||
| ## π Related Resources | ||
| ### Files Requiring Attention | ||
| - {file1} - {reason} | ||
| - {file2} - {reason} | ||
| - {file3} - {reason} | ||
| ### Similar Issues in Codebase | ||
| - {related_issue_1} in {location} | ||
| - {related_issue_2} in {location} | ||
| ### Documentation Updates Needed | ||
| - {doc_update_1} | ||
| - {doc_update_2} | ||
| --- | ||
| ## π‘ Reviewer Notes | ||
| ### Human Review Focus Areas | ||
| Based on sub-agent analysis, human reviewers should focus on: | ||
| 1. {focus_area_1} - {reason} | ||
| 2. {focus_area_2} - {reason} | ||
| 3. {focus_area_3} - {reason} | ||
| ### Discussion Points | ||
| - {discussion_point_1} | ||
| - {discussion_point_2} | ||
| - {discussion_point_3} | ||
| --- | ||
| *Comprehensive review generated by DevFlow sub-agent orchestration* | ||
| *Next: Address blocking issues, then create PR with this review as reference* | ||
| ``` | ||
| ### Step 6: Provide Executive Summary | ||
| Give the developer a clear, actionable summary: | ||
| ``` | ||
| π BRANCH REVIEW COMPLETE: {BRANCH_NAME} | ||
| π ANALYSIS SUMMARY: | ||
| - Files analyzed: {X} files, {Y} commits | ||
| - Issues found: {Critical} critical, {High} high, {Medium} medium, {Low} low | ||
| - Review confidence: {High/Medium/Low} | ||
| π¦ PR READINESS: {β READY | β οΈ ISSUES TO ADDRESS | π« NOT READY} | ||
| π― CRITICAL ACTIONS BEFORE MERGE: | ||
| 1. {Most critical blocking issue} | ||
| 2. {Second most critical blocking issue} | ||
| 3. {Third most critical blocking issue} | ||
| β‘ QUICK WINS: | ||
| - {Easy fix 1} ({estimated time}) | ||
| - {Easy fix 2} ({estimated time}) | ||
| π Full review: .docs/reviews/branch-{branch}-{timestamp}.md | ||
| π NEXT STEPS: | ||
| 1. Address blocking issues above | ||
| 2. Run `/pre-commit` after fixes to verify | ||
| 3. Create PR using this review as reference | ||
| 4. Share review with team for human review focus | ||
| ``` |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
229275
-5.29%40
-2.44%648
-6.63%219
-0.9%