devflow-kit 0.8.0 → 0.9.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 CHANGED
@@ -5,6 +5,37 @@ 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.9.0] - 2025-12-04
9
+
10
+ ### Added
11
+ - **`/get-issue` command** - Fetch GitHub issue details and create working branch
12
+ - Fetch issue by number (`/get-issue 42`) or search term (`/get-issue fix login`)
13
+ - Display comprehensive issue details (title, body, labels, assignees, comments)
14
+ - Auto-generate branch names: `{type}/{number}-{slug}`
15
+ - Branch type derived from labels (feature, fix, docs, refactor, chore)
16
+ - Pre-flight checks for gh authentication and repository validation
17
+ - **`get-issue` sub-agent** - Specialized agent for GitHub issue workflow
18
+
19
+ ### Changed
20
+ - Optimized sub-agent model selection - 5 sub-agents switched to haiku model (get-issue, pull-request, project-state, tech-debt, pr-comments)
21
+ - Minimized command files - `/get-issue` (16 lines) and `/pull-request` (20 lines) delegate to sub-agents
22
+
23
+ ---
24
+
25
+ ## [0.8.1] - 2025-12-02
26
+
27
+ ### Added
28
+ - **`--verbose` flag for `devflow init`** - Clean, command-focused output by default
29
+ - Default output shows only version, available commands, and docs link
30
+ - Use `--verbose` for detailed installation progress, paths, and skills list
31
+ - Improves first-run experience by reducing noise
32
+
33
+ ### Changed
34
+ - Refactored init command output rendering into separate functions
35
+ - Extracted command and skill lists into maintainable constants
36
+
37
+ ---
38
+
8
39
  ## [0.8.0] - 2025-11-21
9
40
 
10
41
  ### Added
@@ -552,6 +583,8 @@ devflow init
552
583
 
553
584
  ---
554
585
 
586
+ [0.9.0]: https://github.com/dean0x/devflow/releases/tag/v0.9.0
587
+ [0.8.1]: https://github.com/dean0x/devflow/releases/tag/v0.8.1
555
588
  [0.8.0]: https://github.com/dean0x/devflow/releases/tag/v0.8.0
556
589
  [0.7.0]: https://github.com/dean0x/devflow/releases/tag/v0.7.0
557
590
  [0.6.1]: https://github.com/dean0x/devflow/releases/tag/v0.6.1
package/README.md CHANGED
@@ -73,6 +73,7 @@ This gives you the best of both worlds: automatic assistance when needed, manual
73
73
  | `/design` | Create detailed implementation plan with integration points | After brainstorming, ready for detailed design |
74
74
  | `/plan` | Triage issues - implement now, defer to GitHub issue, or skip | After code-review or discussion, deciding what to tackle |
75
75
  | `/breakdown` | Quickly break down discussion into actionable tasks | After planning discussion, quick task capture |
76
+ | `/get-issue` | Fetch GitHub issue details and create working branch | Starting work on a GitHub issue |
76
77
  | `/implement` | Streamlined todo implementation, only stopping for design decisions | After planning, ready to implement todos |
77
78
  | `/debug` | Systematic debugging workflow with hypothesis testing | When errors occur, tests fail, or investigating issues |
78
79
  | `/code-review` | Comprehensive code review using specialized sub-agents | Before committing or creating PR |
@@ -99,6 +100,7 @@ This gives you the best of both worlds: automatic assistance when needed, manual
99
100
  | `design` | Implementation Planning | Detailed implementation design with integration points and edge cases |
100
101
  | `catch-up` | Context Restoration | Project status and context restoration with validation |
101
102
  | `commit` | Git Operations | Intelligent commit creation with safety checks |
103
+ | `get-issue` | GitHub Issues | Fetch issue details and create working branches |
102
104
  | `pull-request` | PR Creation | Analyze commits/changes and generate comprehensive PR descriptions |
103
105
  | `release` | Release Automation | Project-agnostic release workflow with version management |
104
106
  | `debug` | Debugging | Systematic debugging with hypothesis testing and issue tracking |
@@ -259,7 +261,7 @@ The `.docs/` structure provides a searchable history of decisions, designs, and
259
261
 
260
262
  | Command | Purpose | Options |
261
263
  |---------|---------|---------|
262
- | `npx devflow-kit init` | Initialize DevFlow for Claude Code | `--scope <user\|local>` - Installation scope (user: user-wide, local: project-only)<br>`--skip-docs` - Skip creating `.docs/` structure |
264
+ | `npx devflow-kit init` | Initialize DevFlow for Claude Code | `--scope <user\|local>` - Installation scope (user: user-wide, local: project-only)<br>`--verbose` - Show detailed installation output<br>`--skip-docs` - Skip creating `.docs/` structure |
263
265
  | `npx devflow-kit uninstall` | Remove DevFlow from Claude Code | `--scope <user\|local>` - Uninstall from specific scope only (default: auto-detect all)<br>`--keep-docs` - Keep `.docs/` directory |
264
266
 
265
267
  **What `npx devflow-kit init` does:**
package/dist/cli.js CHANGED
@@ -15,7 +15,7 @@ program
15
15
  .description('Agentic Development Toolkit for Claude Code\n\nEnhance your AI-assisted development with intelligent commands and workflows.')
16
16
  .version(packageJson.version, '-v, --version', 'Display version number')
17
17
  .helpOption('-h, --help', 'Display help information')
18
- .addHelpText('after', '\nExamples:\n $ devflow init Install DevFlow for Claude Code\n $ devflow init --skip-docs Install without creating .docs/ structure\n $ devflow uninstall Remove DevFlow from Claude Code\n $ devflow --version Show version\n $ devflow --help Show help\n\nDocumentation:\n https://github.com/dean0x/devflow#readme');
18
+ .addHelpText('after', '\nExamples:\n $ devflow init Install DevFlow for Claude Code\n $ devflow init --verbose Install with detailed output\n $ devflow init --skip-docs Install without creating .docs/ structure\n $ devflow uninstall Remove DevFlow from Claude Code\n $ devflow --version Show version\n $ devflow --help Show help\n\nDocumentation:\n https://github.com/dean0x/devflow#readme');
19
19
  // Register commands
20
20
  program.addCommand(initCommand);
21
21
  program.addCommand(uninstallCommand);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,iCAAiC;AACjC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAC7D,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,8HAA8H,CAAC;KAC3I,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,wBAAwB,CAAC;KACvE,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC;KACpD,WAAW,CAAC,OAAO,EAAE,4VAA4V,CAAC,CAAC;AAEtX,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAErC,oBAAoB;AACpB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,4BAA4B;AAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,iCAAiC;AACjC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAC7D,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,8HAA8H,CAAC;KAC3I,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,wBAAwB,CAAC;KACvE,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC;KACpD,WAAW,CAAC,OAAO,EAAE,maAAma,CAAC,CAAC;AAE7b,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAErC,oBAAoB;AACpB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,4BAA4B;AAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
@@ -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;AA4CpC,eAAO,MAAM,WAAW,SAiiBpB,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;AA0KpC,eAAO,MAAM,WAAW,SAyiBpB,CAAC"}
@@ -28,10 +28,101 @@ async function promptUser(question) {
28
28
  });
29
29
  });
30
30
  }
31
+ /**
32
+ * DevFlow commands with user-friendly descriptions.
33
+ * Used for displaying available commands in init output.
34
+ */
35
+ const DEVFLOW_COMMANDS = [
36
+ { name: '/catch-up', description: 'Get up to speed on project state' },
37
+ { name: '/brainstorm', description: 'Explore design decisions' },
38
+ { name: '/design', description: 'Create implementation plan' },
39
+ { name: '/plan', description: 'Triage issues from discussion' },
40
+ { name: '/breakdown', description: 'Break down tasks quickly' },
41
+ { name: '/get-issue', description: 'Fetch issue and create branch' },
42
+ { name: '/implement', description: 'Interactive implementation' },
43
+ { name: '/code-review', description: 'Comprehensive code review' },
44
+ { name: '/commit', description: 'Smart atomic commits' },
45
+ { name: '/pull-request', description: 'Create PR with description' },
46
+ { name: '/release', description: 'Automated releases' },
47
+ { name: '/devlog', description: 'Document session progress' },
48
+ { name: '/debug', description: 'Systematic debugging' },
49
+ { name: '/resolve-comments', description: 'Address PR feedback' },
50
+ ];
51
+ /**
52
+ * DevFlow skills with descriptions.
53
+ * Displayed only in verbose mode to show auto-activating capabilities.
54
+ */
55
+ const DEVFLOW_SKILLS = [
56
+ { name: 'pattern-check', description: 'Architectural pattern validation' },
57
+ { name: 'test-design', description: 'Test quality enforcement' },
58
+ { name: 'code-smell', description: 'Anti-pattern detection' },
59
+ { name: 'research', description: 'Pre-implementation planning (auto)' },
60
+ { name: 'debug', description: 'Systematic debugging (auto)' },
61
+ { name: 'input-validation', description: 'Boundary validation' },
62
+ { name: 'error-handling', description: 'Result type consistency' },
63
+ ];
64
+ /**
65
+ * Render clean, minimal output for default (non-verbose) mode.
66
+ * Shows only essential information: version, available commands, and docs link.
67
+ *
68
+ * @param version - The DevFlow version string to display
69
+ */
70
+ function renderCleanOutput(version) {
71
+ console.log(`\n✓ DevFlow v${version} installed\n`);
72
+ console.log('Commands available:');
73
+ // Calculate max command name length for alignment
74
+ const maxLen = Math.max(...DEVFLOW_COMMANDS.map(c => c.name.length));
75
+ for (const cmd of DEVFLOW_COMMANDS) {
76
+ const padding = ' '.repeat(maxLen - cmd.name.length + 2);
77
+ console.log(` ${cmd.name}${padding}${cmd.description}`);
78
+ }
79
+ console.log('\nRun any command in Claude Code to get started.');
80
+ console.log('\nDocs: https://github.com/dean0x/devflow');
81
+ }
82
+ /**
83
+ * Render detailed output for verbose mode.
84
+ * Shows full installation details including paths, merge instructions, and skills.
85
+ *
86
+ * @param version - The DevFlow version string to display
87
+ * @param scope - Installation scope ('user' for user-wide, 'local' for project-only)
88
+ * @param claudeDir - Path to the Claude Code directory
89
+ * @param devflowDir - Path to the DevFlow directory
90
+ * @param settingsExists - Whether existing settings.json was preserved
91
+ * @param claudeMdExists - Whether existing CLAUDE.md was preserved
92
+ */
93
+ function renderVerboseOutput(version, scope, claudeDir, devflowDir, settingsExists, claudeMdExists) {
94
+ console.log(`\n✅ DevFlow v${version} installed!\n`);
95
+ console.log(`📍 Installation scope: ${scope}`);
96
+ console.log(` Claude dir: ${claudeDir}`);
97
+ console.log(` DevFlow dir: ${devflowDir}\n`);
98
+ // Show manual merge instructions if needed
99
+ if (settingsExists || claudeMdExists) {
100
+ console.log('📝 Manual merge recommended:\n');
101
+ if (settingsExists) {
102
+ console.log(' Settings: Review settings.devflow.json and merge desired config into settings.json');
103
+ console.log(' Key setting: statusLine configuration for DevFlow statusline\n');
104
+ }
105
+ if (claudeMdExists) {
106
+ console.log(' Instructions: Review CLAUDE.devflow.md and adopt desired practices');
107
+ console.log(" This contains DevFlow's recommended development patterns\n");
108
+ }
109
+ }
110
+ console.log('Available commands:');
111
+ for (const cmd of DEVFLOW_COMMANDS) {
112
+ console.log(` ${cmd.name.padEnd(18)}${cmd.description}`);
113
+ }
114
+ console.log('\nInstalled skills (auto-activate):');
115
+ for (const skill of DEVFLOW_SKILLS) {
116
+ console.log(` ${skill.name.padEnd(18)}${skill.description}`);
117
+ }
118
+ console.log('\nNote: debug exists as both command (manual) and skill (auto)');
119
+ console.log('Docs: https://github.com/dean0x/devflow');
120
+ }
31
121
  export const initCommand = new Command('init')
32
122
  .description('Initialize DevFlow for Claude Code')
33
123
  .option('--skip-docs', 'Skip creating .docs/ structure')
34
124
  .option('--scope <type>', 'Installation scope: user (user-wide) or local (project-only)', /^(user|local)$/i)
125
+ .option('--verbose', 'Show detailed installation output')
35
126
  .action(async (options) => {
36
127
  // Get package version
37
128
  const packageJsonPath = path.resolve(__dirname, '../../package.json');
@@ -43,33 +134,49 @@ export const initCommand = new Command('init')
43
134
  catch {
44
135
  version = 'unknown';
45
136
  }
46
- console.log(`🚀 DevFlow v${version}\n`);
137
+ const verbose = options.verbose ?? false;
138
+ if (verbose) {
139
+ console.log(`🚀 DevFlow v${version}\n`);
140
+ }
47
141
  // Determine installation scope
48
142
  let scope = 'user'; // Default to user for backwards compatibility
49
143
  if (options.scope) {
50
- scope = options.scope.toLowerCase();
144
+ const normalizedScope = options.scope.toLowerCase();
145
+ // Runtime validation (Commander regex already validates, but be defensive)
146
+ if (normalizedScope !== 'user' && normalizedScope !== 'local') {
147
+ console.error('❌ Invalid scope. Use "user" or "local"\n');
148
+ process.exit(1);
149
+ }
150
+ scope = normalizedScope;
51
151
  }
52
152
  else {
53
153
  // Check if running in interactive terminal (TTY)
54
154
  if (!process.stdin.isTTY) {
55
155
  // Non-interactive environment (CI/CD, scripts) - use default
56
- console.log('📦 Non-interactive environment detected, using default scope: user');
57
- console.log(' To specify scope in CI/CD, use: devflow init --scope <user|local>\n');
156
+ if (verbose) {
157
+ console.log('📦 Non-interactive environment detected, using default scope: user');
158
+ console.log(' To specify scope in CI/CD, use: devflow init --scope <user|local>\n');
159
+ }
58
160
  scope = 'user';
59
161
  }
60
162
  else {
61
163
  // Interactive prompt for scope
62
- console.log('📦 Installation Scope:\n');
63
- console.log(' user - Install for all projects (user-wide)');
64
- console.log(' └─ ~/.claude/ and ~/.devflow/');
65
- console.log(' local - Install for current project only');
66
- console.log(' └─ <git-root>/.claude/ and <git-root>/.devflow/\n');
164
+ if (verbose) {
165
+ console.log('📦 Installation Scope:\n');
166
+ console.log(' user - Install for all projects (user-wide)');
167
+ console.log(' └─ ~/.claude/ and ~/.devflow/');
168
+ console.log(' local - Install for current project only');
169
+ console.log(' └─ <git-root>/.claude/ and <git-root>/.devflow/\n');
170
+ }
67
171
  const rl = readline.createInterface({
68
172
  input: process.stdin,
69
173
  output: process.stdout
70
174
  });
175
+ const prompt = verbose
176
+ ? 'Choose scope (user/local) [user]: '
177
+ : 'Install scope - user (all projects) or local (this project only) [user]: ';
71
178
  const answer = await new Promise((resolve) => {
72
- rl.question('Choose scope (user/local) [user]: ', (input) => {
179
+ rl.question(prompt, (input) => {
73
180
  rl.close();
74
181
  resolve(input.trim().toLowerCase() || 'user');
75
182
  });
@@ -84,7 +191,9 @@ export const initCommand = new Command('init')
84
191
  console.error('❌ Invalid scope. Use "user" or "local"\n');
85
192
  process.exit(1);
86
193
  }
87
- console.log();
194
+ if (verbose) {
195
+ console.log();
196
+ }
88
197
  }
89
198
  }
90
199
  // Get installation paths with proper validation
@@ -97,9 +206,11 @@ export const initCommand = new Command('init')
97
206
  devflowDir = paths.devflowDir;
98
207
  // Cache git root for later use (already computed in getInstallationPaths for local scope)
99
208
  gitRoot = await getGitRoot();
100
- console.log(`📍 Installation scope: ${scope}`);
101
- console.log(` Claude dir: ${claudeDir}`);
102
- console.log(` DevFlow dir: ${devflowDir}\n`);
209
+ if (verbose) {
210
+ console.log(`📍 Installation scope: ${scope}`);
211
+ console.log(` Claude dir: ${claudeDir}`);
212
+ console.log(` DevFlow dir: ${devflowDir}\n`);
213
+ }
103
214
  }
104
215
  catch (error) {
105
216
  console.error('❌ Path configuration error:', error instanceof Error ? error.message : error);
@@ -116,13 +227,17 @@ export const initCommand = new Command('init')
116
227
  console.error(' Or set CLAUDE_CODE_DIR if installed elsewhere\n');
117
228
  process.exit(1);
118
229
  }
119
- console.log('✓ Claude Code detected');
230
+ if (verbose) {
231
+ console.log('✓ Claude Code detected');
232
+ }
120
233
  }
121
234
  else {
122
235
  // Local scope - create .claude directory if it doesn't exist
123
236
  try {
124
237
  await fs.mkdir(claudeDir, { recursive: true });
125
- console.log('✓ Local .claude directory ready');
238
+ if (verbose) {
239
+ console.log('✓ Local .claude directory ready');
240
+ }
126
241
  }
127
242
  catch (error) {
128
243
  console.error(`❌ Failed to create ${claudeDir}:`, error);
@@ -208,7 +323,9 @@ export const initCommand = new Command('init')
208
323
  for (const script of scripts) {
209
324
  await fs.chmod(path.join(scriptsDir, script), 0o755);
210
325
  }
211
- console.log('✓ Installing components... (commands, agents, skills, scripts)');
326
+ if (verbose) {
327
+ console.log('✓ Installing components... (commands, agents, skills, scripts)');
328
+ }
212
329
  // Install settings.json - never override existing files (atomic operation)
213
330
  const settingsPath = path.join(claudeDir, 'settings.json');
214
331
  const devflowSettingsPath = path.join(claudeDir, 'settings.devflow.json');
@@ -220,14 +337,18 @@ export const initCommand = new Command('init')
220
337
  try {
221
338
  // Atomic exclusive create - fails if file already exists
222
339
  await fs.writeFile(settingsPath, settingsContent, { encoding: 'utf-8', flag: 'wx' });
223
- console.log('✓ Settings configured');
340
+ if (verbose) {
341
+ console.log('✓ Settings configured');
342
+ }
224
343
  }
225
344
  catch (error) {
226
345
  if (isNodeSystemError(error) && error.code === 'EEXIST') {
227
346
  // Existing settings.json found - install as settings.devflow.json
228
347
  settingsExists = true;
229
348
  await fs.writeFile(devflowSettingsPath, settingsContent, 'utf-8');
230
- console.log('⚠️ Existing settings.json preserved → DevFlow config: settings.devflow.json');
349
+ if (verbose) {
350
+ console.log('⚠️ Existing settings.json preserved → DevFlow config: settings.devflow.json');
351
+ }
231
352
  }
232
353
  else {
233
354
  throw error;
@@ -242,14 +363,18 @@ export const initCommand = new Command('init')
242
363
  // Atomic exclusive create - fails if file already exists
243
364
  const content = await fs.readFile(sourceClaudeMdPath, 'utf-8');
244
365
  await fs.writeFile(claudeMdPath, content, { encoding: 'utf-8', flag: 'wx' });
245
- console.log('✓ CLAUDE.md configured');
366
+ if (verbose) {
367
+ console.log('✓ CLAUDE.md configured');
368
+ }
246
369
  }
247
370
  catch (error) {
248
371
  if (isNodeSystemError(error) && error.code === 'EEXIST') {
249
372
  // Existing CLAUDE.md found - install as CLAUDE.devflow.md
250
373
  claudeMdExists = true;
251
374
  await fs.copyFile(sourceClaudeMdPath, devflowClaudeMdPath);
252
- console.log('⚠️ Existing CLAUDE.md preserved → DevFlow guide: CLAUDE.devflow.md');
375
+ if (verbose) {
376
+ console.log('⚠️ Existing CLAUDE.md preserved → DevFlow guide: CLAUDE.devflow.md');
377
+ }
253
378
  }
254
379
  else {
255
380
  throw error;
@@ -460,7 +585,7 @@ Pipfile.lock
460
585
  catch (error) {
461
586
  // Not a git repository or other error - skip .claudeignore creation
462
587
  }
463
- if (claudeignoreCreated) {
588
+ if (claudeignoreCreated && verbose) {
464
589
  console.log('✓ .claudeignore created');
465
590
  }
466
591
  // For local scope, update .gitignore to exclude .claude/ and .devflow/
@@ -487,11 +612,15 @@ Pipfile.lock
487
612
  ? `${gitignoreContent.trimEnd()}\n\n# DevFlow local scope installation\n${linesToAdd.join('\n')}\n`
488
613
  : `# DevFlow local scope installation\n${linesToAdd.join('\n')}\n`;
489
614
  await fs.writeFile(gitignorePath, newContent, 'utf-8');
490
- console.log('✓ .gitignore updated (excluded .claude/ and .devflow/)');
615
+ if (verbose) {
616
+ console.log('✓ .gitignore updated (excluded .claude/ and .devflow/)');
617
+ }
491
618
  }
492
619
  }
493
620
  catch (error) {
494
- console.warn('⚠️ Could not update .gitignore:', error instanceof Error ? error.message : error);
621
+ if (verbose) {
622
+ console.warn('⚠️ Could not update .gitignore:', error instanceof Error ? error.message : error);
623
+ }
495
624
  }
496
625
  }
497
626
  // Offer to install project documentation structure
@@ -509,46 +638,16 @@ Pipfile.lock
509
638
  // .docs/ structure may already exist
510
639
  }
511
640
  }
512
- if (docsCreated) {
641
+ if (docsCreated && verbose) {
513
642
  console.log('✓ .docs/ structure ready');
514
643
  }
515
- console.log('\n✅ Installation complete!\n');
516
- // Show manual merge instructions if needed
517
- if (settingsExists || claudeMdExists) {
518
- console.log('📝 Manual merge recommended:\n');
519
- if (settingsExists) {
520
- console.log(' Settings: Review settings.devflow.json and merge desired config into settings.json');
521
- console.log(' Key setting: statusLine configuration for DevFlow statusline\n');
522
- }
523
- if (claudeMdExists) {
524
- console.log(' Instructions: Review CLAUDE.devflow.md and adopt desired practices');
525
- console.log(' This contains DevFlow\'s recommended development patterns\n');
526
- }
644
+ // Render output based on verbose flag
645
+ if (verbose) {
646
+ renderVerboseOutput(version, scope, claudeDir, devflowDir, settingsExists, claudeMdExists);
647
+ }
648
+ else {
649
+ renderCleanOutput(version);
527
650
  }
528
- console.log('Available commands:');
529
- console.log(' /catch-up Session context and status');
530
- console.log(' /brainstorm Explore design decisions and approaches');
531
- console.log(' /design Create detailed implementation plan');
532
- console.log(' /debug Systematic debugging (manual)');
533
- console.log(' /plan Triage issues - now, defer to GH issue, or skip');
534
- console.log(' /breakdown Quickly break down discussion into tasks');
535
- console.log(' /implement Interactive implementation orchestrator');
536
- console.log(' /code-review Comprehensive code review');
537
- console.log(' /commit Intelligent atomic commits');
538
- console.log(' /pull-request Create PR with smart description');
539
- console.log(' /resolve-comments Address PR review feedback');
540
- console.log(' /devlog Session documentation');
541
- console.log(' /release Release automation');
542
- console.log('\nInstalled skills (auto-activate):');
543
- console.log(' pattern-check Architectural pattern validation');
544
- console.log(' test-design Test quality enforcement');
545
- console.log(' code-smell Anti-pattern detection');
546
- console.log(' research Pre-implementation planning (auto)');
547
- console.log(' debug Systematic debugging (auto)');
548
- console.log(' input-validation Boundary validation');
549
- console.log(' error-handling Result type consistency');
550
- console.log('\nNote: debug exists as both command (manual) and skill (auto)');
551
- console.log('Docs: npm home devflow-kit');
552
651
  }
553
652
  catch (error) {
554
653
  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.8.0",
3
+ "version": "0.9.0",
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",
@@ -0,0 +1,286 @@
1
+ ---
2
+ name: get-issue
3
+ description: Fetch GitHub issue details and create a working branch for implementation
4
+ tools: Bash, Read, Grep, Glob
5
+ model: haiku
6
+ ---
7
+
8
+ You are a GitHub issue specialist focused on fetching issue details and preparing the development environment for implementation. Your task is to retrieve comprehensive issue information and create an appropriately named branch.
9
+
10
+ **CRITICAL PHILOSOPHY**: Developers should start working on issues with full context. Fetch all relevant details, understand the scope, and create a clean branch name that reflects the work.
11
+
12
+ ## Your Task
13
+
14
+ Fetch GitHub issue details and create a working branch. You will receive:
15
+ - `ISSUE_INPUT`: Either an issue number (e.g., "123") or a search term/description (e.g., "fix login bug")
16
+
17
+ ### Step 1: Determine Input Type and Fetch Issue
18
+
19
+ Determine if input is a number or search term, then fetch the issue:
20
+
21
+ ```bash
22
+ ISSUE_INPUT="$ISSUE_INPUT"
23
+
24
+ # Check if input is a number
25
+ if [[ "$ISSUE_INPUT" =~ ^[0-9]+$ ]]; then
26
+ echo "=== FETCHING ISSUE #$ISSUE_INPUT ==="
27
+ ISSUE_NUMBER="$ISSUE_INPUT"
28
+ else
29
+ echo "=== SEARCHING FOR ISSUE: $ISSUE_INPUT ==="
30
+
31
+ # Search for matching issues
32
+ echo "Search results:"
33
+ gh issue list --search "$ISSUE_INPUT" --limit 5 --json number,title,state --jq '.[] | "#\(.number) [\(.state)] \(.title)"'
34
+ echo ""
35
+
36
+ # Get the first matching open issue
37
+ ISSUE_NUMBER=$(gh issue list --search "$ISSUE_INPUT" --state open --limit 1 --json number --jq '.[0].number // empty')
38
+
39
+ if [ -z "$ISSUE_NUMBER" ]; then
40
+ # Try closed issues if no open ones found
41
+ ISSUE_NUMBER=$(gh issue list --search "$ISSUE_INPUT" --state closed --limit 1 --json number --jq '.[0].number // empty')
42
+ fi
43
+
44
+ if [ -z "$ISSUE_NUMBER" ]; then
45
+ echo "ERROR: No issues found matching '$ISSUE_INPUT'"
46
+ echo ""
47
+ echo "Try:"
48
+ echo " - Using the exact issue number: /get-issue 123"
49
+ echo " - Different search terms"
50
+ echo " - Check if you're in the correct repository"
51
+ exit 1
52
+ fi
53
+
54
+ echo "Selected issue: #$ISSUE_NUMBER"
55
+ fi
56
+ echo ""
57
+ ```
58
+
59
+ ### Step 2: Fetch Complete Issue Details
60
+
61
+ Get all relevant information about the issue:
62
+
63
+ ```bash
64
+ echo "=== ISSUE DETAILS ==="
65
+
66
+ # Get comprehensive issue data
67
+ gh issue view "$ISSUE_NUMBER" --json number,title,body,state,labels,assignees,milestone,author,createdAt,comments --jq '
68
+ "Number: #\(.number)
69
+ Title: \(.title)
70
+ State: \(.state)
71
+ Author: \(.author.login)
72
+ Created: \(.createdAt)
73
+ Labels: \(if .labels | length > 0 then [.labels[].name] | join(", ") else "none" end)
74
+ Assignees: \(if .assignees | length > 0 then [.assignees[].login] | join(", ") else "unassigned" end)
75
+ Milestone: \(.milestone.title // "none")
76
+ Comments: \(.comments | length)
77
+
78
+ --- DESCRIPTION ---
79
+ \(.body // "No description provided")
80
+ "'
81
+
82
+ echo ""
83
+
84
+ # Show recent comments if any exist
85
+ COMMENT_COUNT=$(gh issue view "$ISSUE_NUMBER" --json comments --jq '.comments | length')
86
+ if [ "$COMMENT_COUNT" -gt 0 ]; then
87
+ echo "=== RECENT COMMENTS (last 3) ==="
88
+ gh issue view "$ISSUE_NUMBER" --json comments --jq '.comments | .[-3:] | .[] | "[\(.author.login) - \(.createdAt[0:10])]\n\(.body)\n---"'
89
+ echo ""
90
+ fi
91
+
92
+ # Get linked PRs if any
93
+ echo "=== LINKED PULL REQUESTS ==="
94
+ gh pr list --search "linked:issue:$ISSUE_NUMBER" --json number,title,state --jq '.[] | "#\(.number) [\(.state)] \(.title)"' 2>/dev/null || echo "None"
95
+ echo ""
96
+ ```
97
+
98
+ ### Step 3: Generate Branch Name
99
+
100
+ Create a clean, descriptive branch name from the issue:
101
+
102
+ ```bash
103
+ echo "=== GENERATING BRANCH NAME ==="
104
+
105
+ # Get issue title and type from labels
106
+ ISSUE_TITLE=$(gh issue view "$ISSUE_NUMBER" --json title --jq '.title')
107
+ ISSUE_LABELS=$(gh issue view "$ISSUE_NUMBER" --json labels --jq '[.labels[].name] | join(",")')
108
+
109
+ # Determine branch prefix from labels
110
+ PREFIX="feature"
111
+ if echo "$ISSUE_LABELS" | grep -qiE "bug|fix"; then
112
+ PREFIX="fix"
113
+ elif echo "$ISSUE_LABELS" | grep -qiE "enhancement|feature"; then
114
+ PREFIX="feature"
115
+ elif echo "$ISSUE_LABELS" | grep -qiE "docs|documentation"; then
116
+ PREFIX="docs"
117
+ elif echo "$ISSUE_LABELS" | grep -qiE "refactor"; then
118
+ PREFIX="refactor"
119
+ elif echo "$ISSUE_LABELS" | grep -qiE "chore|maintenance"; then
120
+ PREFIX="chore"
121
+ fi
122
+
123
+ # Sanitize title for branch name:
124
+ # - Convert to lowercase
125
+ # - Replace spaces and special chars with dashes
126
+ # - Remove consecutive dashes
127
+ # - Trim to reasonable length (50 chars max for slug)
128
+ # - Remove leading/trailing dashes
129
+ SLUG=$(echo "$ISSUE_TITLE" | \
130
+ tr '[:upper:]' '[:lower:]' | \
131
+ sed 's/[^a-z0-9]/-/g' | \
132
+ sed 's/--*/-/g' | \
133
+ cut -c1-50 | \
134
+ sed 's/^-//' | \
135
+ sed 's/-$//')
136
+
137
+ BRANCH_NAME="${PREFIX}/${ISSUE_NUMBER}-${SLUG}"
138
+
139
+ echo "Suggested branch: $BRANCH_NAME"
140
+ echo ""
141
+ ```
142
+
143
+ ### Step 4: Check Branch State and Create
144
+
145
+ Verify branch doesn't exist and create it:
146
+
147
+ ```bash
148
+ echo "=== CREATING BRANCH ==="
149
+
150
+ # Check if branch already exists locally
151
+ if git show-ref --verify --quiet "refs/heads/$BRANCH_NAME" 2>/dev/null; then
152
+ echo "Branch '$BRANCH_NAME' already exists locally."
153
+ echo ""
154
+ echo "Options:"
155
+ echo " 1. Switch to it: git checkout $BRANCH_NAME"
156
+ echo " 2. Delete and recreate: git branch -D $BRANCH_NAME"
157
+ echo ""
158
+
159
+ # Ask if user wants to switch to existing branch
160
+ echo "Switching to existing branch..."
161
+ git checkout "$BRANCH_NAME"
162
+ exit 0
163
+ fi
164
+
165
+ # Check if branch exists on remote
166
+ if git ls-remote --heads origin "$BRANCH_NAME" 2>/dev/null | grep -q "$BRANCH_NAME"; then
167
+ echo "Branch '$BRANCH_NAME' exists on remote."
168
+ echo "Checking out and tracking remote branch..."
169
+ git checkout -b "$BRANCH_NAME" --track "origin/$BRANCH_NAME"
170
+ exit 0
171
+ fi
172
+
173
+ # Get default branch to branch from
174
+ DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo "main")
175
+
176
+ # Ensure we're up to date with the default branch
177
+ echo "Updating from $DEFAULT_BRANCH..."
178
+ git fetch origin "$DEFAULT_BRANCH" 2>/dev/null || true
179
+
180
+ # Create and switch to new branch
181
+ echo "Creating branch from $DEFAULT_BRANCH..."
182
+ git checkout -b "$BRANCH_NAME" "origin/$DEFAULT_BRANCH" 2>/dev/null || \
183
+ git checkout -b "$BRANCH_NAME" "$DEFAULT_BRANCH" 2>/dev/null || \
184
+ git checkout -b "$BRANCH_NAME"
185
+
186
+ echo ""
187
+ echo "Branch '$BRANCH_NAME' created and checked out."
188
+ ```
189
+
190
+ ### Step 5: Output Summary
191
+
192
+ Present a clear summary of the issue and branch:
193
+
194
+ ```markdown
195
+ ## ISSUE READY FOR IMPLEMENTATION
196
+
197
+ **Issue:** #{ISSUE_NUMBER} - {ISSUE_TITLE}
198
+ **Branch:** {BRANCH_NAME}
199
+ **State:** {STATE}
200
+ **Labels:** {LABELS}
201
+
202
+ ### Description
203
+ {ISSUE_BODY or summary}
204
+
205
+ ### Acceptance Criteria
206
+ {Extract from issue body if present, or mark as "Not specified"}
207
+
208
+ ### Next Steps
209
+ 1. Review the issue description above
210
+ 2. Start implementation on branch `{BRANCH_NAME}`
211
+ 3. Reference this issue in commits: `fix #{ISSUE_NUMBER}` or `closes #{ISSUE_NUMBER}`
212
+ 4. Create PR when ready: `/pull-request`
213
+
214
+ ### Useful Commands
215
+ ```bash
216
+ # View issue in browser
217
+ gh issue view {ISSUE_NUMBER} --web
218
+
219
+ # Add yourself as assignee
220
+ gh issue edit {ISSUE_NUMBER} --add-assignee @me
221
+
222
+ # Add a comment
223
+ gh issue comment {ISSUE_NUMBER} --body "Starting work on this"
224
+ ```
225
+ ```
226
+
227
+ ## Error Handling
228
+
229
+ ### Issue Not Found
230
+ ```markdown
231
+ ERROR: Issue not found
232
+
233
+ The issue #{NUMBER} does not exist or you don't have access.
234
+
235
+ Verify:
236
+ - Issue number is correct
237
+ - You're in the correct repository
238
+ - You have access to this repository
239
+ - Run `gh auth status` to check authentication
240
+ ```
241
+
242
+ ### No Search Results
243
+ ```markdown
244
+ ERROR: No issues match "{SEARCH_TERM}"
245
+
246
+ Try:
247
+ - Using exact issue number: `/get-issue 123`
248
+ - Broader search terms
249
+ - Checking issue state (open vs closed)
250
+ - Running `gh issue list` to see available issues
251
+ ```
252
+
253
+ ### Git Errors
254
+ ```markdown
255
+ ERROR: Git operation failed
256
+
257
+ Common causes:
258
+ - Not in a git repository
259
+ - Uncommitted changes blocking checkout
260
+ - Remote not accessible
261
+
262
+ Solutions:
263
+ - Run `git status` to check state
264
+ - Commit or stash changes: `git stash`
265
+ - Check remote: `gh repo view`
266
+ ```
267
+
268
+ ## Quality Standards
269
+
270
+ ### Issue Fetch Quality:
271
+ - [ ] All issue metadata retrieved (title, body, labels, etc.)
272
+ - [ ] Comments included for context
273
+ - [ ] Linked PRs identified
274
+ - [ ] State clearly displayed
275
+
276
+ ### Branch Quality:
277
+ - [ ] Name follows pattern: `{type}/{number}-{slug}`
278
+ - [ ] Type derived from labels (feature, fix, docs, etc.)
279
+ - [ ] Slug is readable and descriptive
280
+ - [ ] Branch created from up-to-date default branch
281
+
282
+ ### Output Quality:
283
+ - [ ] Clear summary of issue details
284
+ - [ ] Actionable next steps provided
285
+ - [ ] Useful commands included
286
+ - [ ] Error cases handled gracefully
@@ -2,7 +2,7 @@
2
2
  name: pr-comments
3
3
  description: Creates individual PR comments with fix suggestions for code review findings
4
4
  tools: Bash, Read, Grep, Glob
5
- model: inherit
5
+ model: haiku
6
6
  ---
7
7
 
8
8
  You are a PR comment specialist responsible for creating actionable, well-formatted comments on pull requests for issues found during code review.
@@ -2,7 +2,7 @@
2
2
  name: project-state
3
3
  description: Analyze current project state including git history, file changes, TODOs, and documentation for status reporting
4
4
  tools: Bash, Read, Grep, Glob
5
- model: inherit
5
+ model: haiku
6
6
  ---
7
7
 
8
8
  You are a project state analysis specialist focused on gathering comprehensive codebase insights for status reporting and documentation. Your role is to analyze git history, recent changes, pending work, and documentation structure.
@@ -2,7 +2,7 @@
2
2
  name: pull-request
3
3
  description: Analyze commits and changes to generate comprehensive PR title and description
4
4
  tools: Bash, Read, Grep, Glob
5
- model: inherit
5
+ model: haiku
6
6
  ---
7
7
 
8
8
  You are a pull request specialist focused on analyzing code changes and generating comprehensive, accurate PR descriptions. Your task is to understand what changed, why it changed, and communicate that clearly to human reviewers.
@@ -11,11 +11,54 @@ You are a pull request specialist focused on analyzing code changes and generati
11
11
 
12
12
  ## Your Task
13
13
 
14
- Analyze all commits and code changes in the current branch compared to the base branch, then generate a comprehensive PR title and description that helps reviewers understand the changes quickly.
14
+ Create a pull request from the current branch with comprehensive analysis and description.
15
15
 
16
- You will receive:
17
- - `CURRENT_BRANCH`: The feature branch being reviewed
18
- - `BASE_BRANCH`: The base branch to compare against
16
+ You will receive arguments that may contain:
17
+ - Base branch name (e.g., `main`, `develop`)
18
+ - `--draft` flag for draft PR
19
+
20
+ ### Step 0: Setup and Pre-Flight Checks
21
+
22
+ ```bash
23
+ # Parse arguments
24
+ ARGS="$1"
25
+ BASE_BRANCH=""
26
+ DRAFT_FLAG=""
27
+
28
+ for arg in $ARGS; do
29
+ case $arg in
30
+ --draft) DRAFT_FLAG="--draft" ;;
31
+ *) [ -z "$BASE_BRANCH" ] && BASE_BRANCH="$arg" ;;
32
+ esac
33
+ done
34
+
35
+ # Get current branch
36
+ CURRENT_BRANCH=$(git branch --show-current)
37
+ if [ -z "$CURRENT_BRANCH" ]; then
38
+ echo "ERROR: Not on a branch (detached HEAD)"
39
+ exit 1
40
+ fi
41
+
42
+ # Auto-detect base branch
43
+ if [ -z "$BASE_BRANCH" ]; then
44
+ for branch in main master develop; do
45
+ git show-ref --verify --quiet refs/heads/$branch && BASE_BRANCH=$branch && break
46
+ done
47
+ fi
48
+ [ -z "$BASE_BRANCH" ] && echo "ERROR: Could not detect base branch" && exit 1
49
+
50
+ # Pre-flight checks
51
+ COMMITS_AHEAD=$(git rev-list --count $BASE_BRANCH..HEAD)
52
+ [ "$COMMITS_AHEAD" -eq 0 ] && echo "ERROR: No commits ahead of $BASE_BRANCH" && exit 1
53
+
54
+ EXISTING_PR=$(gh pr list --head "$CURRENT_BRANCH" --json number --jq '.[0].number' 2>/dev/null || echo "")
55
+ [ -n "$EXISTING_PR" ] && echo "ERROR: PR #$EXISTING_PR already exists" && exit 1
56
+
57
+ # Push if needed
58
+ git ls-remote --exit-code --heads origin "$CURRENT_BRANCH" >/dev/null 2>&1 || git push -u origin "$CURRENT_BRANCH"
59
+
60
+ echo "Branch: $CURRENT_BRANCH -> $BASE_BRANCH ($COMMITS_AHEAD commits)"
61
+ ```
19
62
 
20
63
  ### Step 1: Analyze Commit History
21
64
 
@@ -420,4 +463,31 @@ END OF PR CONTENT
420
463
  - [ ] PR size assessed accurately
421
464
  - [ ] Split recommendations if needed
422
465
 
423
- This ensures high-quality PR descriptions that make reviews efficient and effective.
466
+ ### Step 9: Create the Pull Request
467
+
468
+ After generating the title and description, create the PR:
469
+
470
+ ```bash
471
+ # Create PR with generated content
472
+ gh pr create \
473
+ --base "$BASE_BRANCH" \
474
+ --head "$CURRENT_BRANCH" \
475
+ --title "{GENERATED_TITLE}" \
476
+ --body "$(cat <<'EOF'
477
+ {GENERATED_DESCRIPTION}
478
+ EOF
479
+ )" $DRAFT_FLAG
480
+
481
+ # Get PR URL
482
+ PR_URL=$(gh pr view --json url --jq '.url')
483
+ echo ""
484
+ echo "PR Created: $PR_URL"
485
+ ```
486
+
487
+ **Final Output:**
488
+ ```
489
+ PR Created: {PR_URL}
490
+ Branch: {CURRENT_BRANCH} -> {BASE_BRANCH}
491
+ Commits: {N}
492
+ Status: {Draft/Ready for review}
493
+ ```
@@ -2,7 +2,7 @@
2
2
  name: tech-debt
3
3
  description: Manages tech debt GitHub issue - adds new items and cleans up fixed ones
4
4
  tools: Bash, Read, Grep, Glob
5
- model: inherit
5
+ model: haiku
6
6
  ---
7
7
 
8
8
  You are a tech debt management specialist responsible for maintaining the Tech Debt Backlog GitHub issue. You add new pre-existing issues found during code reviews and clean up items that have been fixed.
@@ -0,0 +1,16 @@
1
+ ---
2
+ allowed-tools: Task
3
+ description: Fetch GitHub issue details and create a working branch for implementation
4
+ ---
5
+
6
+ ## Your task
7
+
8
+ Launch the `get-issue` sub-agent with the issue identifier: `$ARGUMENTS`
9
+
10
+ The agent will:
11
+ 1. Fetch issue by number or search term
12
+ 2. Display issue details (title, body, labels, comments)
13
+ 3. Create and checkout a branch named `{type}/{number}-{slug}`
14
+ 4. Provide next steps for implementation
15
+
16
+ Pass the full `$ARGUMENTS` to the sub-agent as the issue input.
@@ -1,269 +1,20 @@
1
1
  ---
2
- allowed-tools: Task, Bash
2
+ allowed-tools: Task
3
3
  description: Create pull request with comprehensive analysis and smart description generation
4
4
  ---
5
5
 
6
6
  ## Your task
7
7
 
8
- Create a pull request from the current branch with a comprehensive description generated by analyzing commits and code changes. This command orchestrates PR creation using the `pull-request` sub-agent for deep analysis.
8
+ Launch the `pull-request` sub-agent to create a PR from the current branch.
9
9
 
10
- ### Step 1: Parse Arguments and Detect Context
10
+ Pass `$ARGUMENTS` to the sub-agent (may contain base branch and/or `--draft` flag).
11
11
 
12
- Parse the arguments to determine base branch and PR options:
12
+ The agent will:
13
+ 1. Detect current branch and base branch (auto-detect if not specified)
14
+ 2. Run pre-flight checks (commits exist, no existing PR, branch pushed)
15
+ 3. Analyze commits and code changes
16
+ 4. Generate PR title and comprehensive description
17
+ 5. Create the PR using `gh pr create`
18
+ 6. Return the PR URL
13
19
 
14
- ```bash
15
- # Parse arguments
16
- BASE_BRANCH=""
17
- DRAFT_FLAG=""
18
-
19
- for arg in $ARGUMENTS; do
20
- case $arg in
21
- --draft)
22
- DRAFT_FLAG="--draft"
23
- ;;
24
- *)
25
- if [ -z "$BASE_BRANCH" ]; then
26
- BASE_BRANCH="$arg"
27
- fi
28
- ;;
29
- esac
30
- done
31
-
32
- # Get current branch
33
- CURRENT_BRANCH=$(git branch --show-current)
34
- if [ -z "$CURRENT_BRANCH" ]; then
35
- echo "❌ Not on a branch (detached HEAD). Checkout a feature branch first."
36
- exit 1
37
- fi
38
-
39
- # Auto-detect base branch if not specified
40
- if [ -z "$BASE_BRANCH" ]; then
41
- for branch in main master develop; do
42
- if git show-ref --verify --quiet refs/heads/$branch; then
43
- BASE_BRANCH=$branch
44
- break
45
- fi
46
- done
47
- fi
48
-
49
- if [ -z "$BASE_BRANCH" ]; then
50
- echo "❌ Could not auto-detect base branch. Specify manually: /pull-request <base-branch>"
51
- exit 1
52
- fi
53
-
54
- echo "=== PR CREATION CONTEXT ==="
55
- echo "Current branch: $CURRENT_BRANCH"
56
- echo "Base branch: $BASE_BRANCH"
57
- echo "Draft mode: ${DRAFT_FLAG:-disabled}"
58
- echo ""
59
- ```
60
-
61
- ### Step 2: Pre-Flight Checks
62
-
63
- Verify the branch state and catch common issues:
64
-
65
- ```bash
66
- echo "=== PRE-FLIGHT CHECKS ==="
67
-
68
- # Check if branch has commits ahead of base
69
- COMMITS_AHEAD=$(git rev-list --count $BASE_BRANCH..HEAD)
70
- if [ "$COMMITS_AHEAD" -eq 0 ]; then
71
- echo "❌ No commits to create PR. Branch is up to date with $BASE_BRANCH."
72
- exit 1
73
- fi
74
-
75
- # Check if PR already exists for this branch
76
- EXISTING_PR=$(gh pr list --head "$CURRENT_BRANCH" --json number --jq '.[0].number' 2>/dev/null || echo "")
77
- if [ -n "$EXISTING_PR" ]; then
78
- echo "⚠️ PR #$EXISTING_PR already exists for branch $CURRENT_BRANCH"
79
- echo "View: gh pr view $EXISTING_PR"
80
- echo "Update: git push to update existing PR"
81
- exit 1
82
- fi
83
-
84
- # Check if branch is pushed to remote
85
- if ! git ls-remote --exit-code --heads origin "$CURRENT_BRANCH" >/dev/null 2>&1; then
86
- echo "⚠️ Branch not pushed to remote. Pushing now..."
87
- git push -u origin "$CURRENT_BRANCH"
88
- fi
89
-
90
- # Show quick summary
91
- echo "✅ Ready to create PR"
92
- echo " Commits: $COMMITS_AHEAD ahead of $BASE_BRANCH"
93
- git log --oneline $BASE_BRANCH..HEAD | head -5
94
- echo ""
95
- ```
96
-
97
- ### Step 3: Launch Pull Request Sub-Agent
98
-
99
- Launch the `pull-request` sub-agent to analyze commits and generate PR content:
100
-
101
- **IMPORTANT**: Pass these variables to the sub-agent:
102
- - `CURRENT_BRANCH`: The branch being reviewed
103
- - `BASE_BRANCH`: The base branch for comparison
104
-
105
- The sub-agent will:
106
- 1. Analyze commit history and messages
107
- 2. Analyze code changes and impact
108
- 3. Extract issue references
109
- 4. Detect breaking changes
110
- 5. Generate PR title and comprehensive description
111
- 6. Assess PR size and suggest splits if needed
112
-
113
- Use the Task tool to launch the sub-agent with subagent_type="pull-request":
114
-
115
- ```
116
- Launch pull-request sub-agent with:
117
- - Current branch: {CURRENT_BRANCH}
118
- - Base branch: {BASE_BRANCH}
119
-
120
- The sub-agent will analyze all commits and changes between {BASE_BRANCH} and {CURRENT_BRANCH}, then generate:
121
- - PR title following conventional commit format
122
- - Comprehensive PR description with:
123
- - Summary of changes
124
- - Breaking changes (if any)
125
- - Testing recommendations
126
- - Related issues
127
- - Size assessment and recommendations
128
-
129
- Return the complete PR title and description ready for `gh pr create`.
130
- ```
131
-
132
- ### Step 4: Review Sub-Agent Output
133
-
134
- After the sub-agent completes, extract the generated PR content and present it to the user for review:
135
-
136
- ```markdown
137
- 📝 GENERATED PR CONTENT
138
-
139
- **Title:**
140
- {generated PR title}
141
-
142
- **Description:**
143
- {generated PR description}
144
-
145
- ---
146
-
147
- **Size Assessment:**
148
- - Files changed: {X}
149
- - Lines changed: {Y}
150
- - Complexity: {Simple/Medium/Complex/Too Large}
151
-
152
- {If too large, show recommendations for splitting}
153
-
154
- **Recommendations from analysis:**
155
- {Any warnings or suggestions from sub-agent}
156
- ```
157
-
158
- ### Step 5: Create Pull Request
159
-
160
- Create the PR using `gh pr create` with the generated content:
161
-
162
- ```bash
163
- # Save PR body to temp file to preserve formatting
164
- PR_BODY=$(cat <<'EOF'
165
- {generated PR description from sub-agent}
166
- EOF
167
- )
168
-
169
- # Create the PR
170
- gh pr create \
171
- --base "$BASE_BRANCH" \
172
- --head "$CURRENT_BRANCH" \
173
- --title "{generated PR title}" \
174
- --body "$PR_BODY" \
175
- $DRAFT_FLAG
176
-
177
- # Capture the PR URL
178
- PR_URL=$(gh pr view --json url --jq '.url' 2>/dev/null || echo "")
179
- ```
180
-
181
- ### Step 6: Provide Success Summary
182
-
183
- Present the final summary to the user:
184
-
185
- ```markdown
186
- ✅ PULL REQUEST CREATED
187
-
188
- 🔗 **PR URL:** {PR_URL}
189
-
190
- 📊 **Summary:**
191
- - Branch: {CURRENT_BRANCH} → {BASE_BRANCH}
192
- - Commits: {X} commits
193
- - Files: {Y} files changed
194
- - Status: {Draft/Ready for review}
195
-
196
- 💡 **Next Steps:**
197
- - View PR: gh pr view {PR_NUMBER}
198
- - Request reviews: gh pr edit {PR_NUMBER} --add-reviewer @username
199
- - Monitor CI checks: gh pr checks {PR_NUMBER}
200
- - If changes needed, push commits or use /resolve-comments after review
201
-
202
- 📝 **Full PR details:** {PR_URL}
203
- ```
204
-
205
- ---
206
-
207
- ## Usage Examples
208
-
209
- ### Basic Usage
210
- ```bash
211
- # Create PR to main branch (auto-detected)
212
- /pull-request
213
-
214
- # Create PR to develop branch
215
- /pull-request develop
216
-
217
- # Create draft PR
218
- /pull-request --draft
219
-
220
- # Create draft PR to specific base
221
- /pull-request develop --draft
222
- ```
223
-
224
- ### When to Use
225
-
226
- **✅ Use /pull-request when:**
227
- - You have commits ready for review
228
- - Branch is ready for team review
229
- - You want comprehensive PR description
230
- - You want to detect breaking changes automatically
231
-
232
- **⚠️ Before using:**
233
- - Run `/code-review` to validate quality
234
- - Ensure all commits are meaningful (not WIP)
235
- - Consider if PR is too large (should it be split?)
236
-
237
- **💡 Pro Tips:**
238
- - For small PRs (<10 files), this generates great descriptions automatically
239
- - For large PRs (>20 files), consider the split recommendations
240
- - Draft PRs are great for early feedback without formal review requests
241
- - PR description can be edited after creation with `gh pr edit`
242
-
243
- ---
244
-
245
- ## Command Behavior
246
-
247
- ### Pre-Flight Validation:
248
- - ✅ Verifies branch has commits ahead of base
249
- - ✅ Checks for existing PRs on this branch
250
- - ✅ Ensures branch is pushed to remote
251
- - ✅ Validates base branch exists
252
-
253
- ### PR Content Generation:
254
- - ✅ Analyzes all commits since branching from base
255
- - ✅ Groups changes by feature/fix/refactor
256
- - ✅ Extracts issue references automatically
257
- - ✅ Detects breaking changes from commit messages
258
- - ✅ Generates testing recommendations
259
-
260
- ### Safety Features:
261
- - ⚠️ Warns if PR is too large (>500 lines changed)
262
- - ⚠️ Suggests splitting strategy for large PRs
263
- - ⚠️ Detects missing tests or documentation
264
- - ⚠️ Highlights security-sensitive changes
265
-
266
- ### Integration:
267
- - Works seamlessly with `/code-review` (run before PR creation)
268
- - Complements `/resolve-comments` (for handling feedback after PR)
269
- - Follows conventional commit format for consistency
20
+ Trust the agent's judgment. It handles all validation and creation.