clavix 4.10.0 → 4.11.1

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.
Files changed (95) hide show
  1. package/dist/cli/commands/analyze.d.ts +3 -0
  2. package/dist/cli/commands/analyze.js +11 -5
  3. package/dist/cli/commands/execute.d.ts +2 -2
  4. package/dist/cli/commands/execute.js +23 -21
  5. package/dist/cli/commands/improve.d.ts +32 -0
  6. package/dist/cli/commands/improve.js +250 -0
  7. package/dist/cli/commands/init.js +35 -29
  8. package/dist/cli/commands/prd.js +14 -13
  9. package/dist/cli/commands/prompts/clear.d.ts +2 -2
  10. package/dist/cli/commands/prompts/clear.js +32 -26
  11. package/dist/cli/commands/prompts/list.js +14 -19
  12. package/dist/cli/commands/summarize.js +23 -14
  13. package/dist/cli/commands/verify.d.ts +2 -2
  14. package/dist/cli/commands/verify.js +26 -24
  15. package/dist/core/doc-injector.d.ts +2 -0
  16. package/dist/core/doc-injector.js +12 -13
  17. package/dist/core/intelligence/intent-detector.d.ts +4 -0
  18. package/dist/core/intelligence/intent-detector.js +8 -18
  19. package/dist/core/intelligence/pattern-library.d.ts +16 -10
  20. package/dist/core/intelligence/pattern-library.js +47 -35
  21. package/dist/core/intelligence/patterns/actionability-enhancer.d.ts +2 -2
  22. package/dist/core/intelligence/patterns/actionability-enhancer.js +1 -1
  23. package/dist/core/intelligence/patterns/alternative-phrasing-generator.d.ts +2 -2
  24. package/dist/core/intelligence/patterns/alternative-phrasing-generator.js +1 -1
  25. package/dist/core/intelligence/patterns/ambiguity-detector.d.ts +2 -2
  26. package/dist/core/intelligence/patterns/ambiguity-detector.js +1 -1
  27. package/dist/core/intelligence/patterns/assumption-explicitizer.d.ts +2 -2
  28. package/dist/core/intelligence/patterns/assumption-explicitizer.js +1 -1
  29. package/dist/core/intelligence/patterns/base-pattern.d.ts +10 -7
  30. package/dist/core/intelligence/patterns/base-pattern.js +7 -3
  31. package/dist/core/intelligence/patterns/completeness-validator.d.ts +2 -2
  32. package/dist/core/intelligence/patterns/completeness-validator.js +1 -1
  33. package/dist/core/intelligence/patterns/conciseness-filter.d.ts +2 -2
  34. package/dist/core/intelligence/patterns/conciseness-filter.js +1 -1
  35. package/dist/core/intelligence/patterns/context-precision.d.ts +2 -2
  36. package/dist/core/intelligence/patterns/context-precision.js +1 -1
  37. package/dist/core/intelligence/patterns/conversation-summarizer.d.ts +2 -2
  38. package/dist/core/intelligence/patterns/conversation-summarizer.js +1 -1
  39. package/dist/core/intelligence/patterns/dependency-identifier.d.ts +2 -2
  40. package/dist/core/intelligence/patterns/dependency-identifier.js +1 -1
  41. package/dist/core/intelligence/patterns/domain-context-enricher.d.ts +2 -2
  42. package/dist/core/intelligence/patterns/domain-context-enricher.js +1 -1
  43. package/dist/core/intelligence/patterns/edge-case-identifier.d.ts +2 -2
  44. package/dist/core/intelligence/patterns/edge-case-identifier.js +1 -1
  45. package/dist/core/intelligence/patterns/error-tolerance-enhancer.d.ts +2 -2
  46. package/dist/core/intelligence/patterns/error-tolerance-enhancer.js +1 -1
  47. package/dist/core/intelligence/patterns/implicit-requirement-extractor.d.ts +2 -2
  48. package/dist/core/intelligence/patterns/implicit-requirement-extractor.js +1 -1
  49. package/dist/core/intelligence/patterns/objective-clarifier.d.ts +2 -2
  50. package/dist/core/intelligence/patterns/objective-clarifier.js +1 -1
  51. package/dist/core/intelligence/patterns/output-format-enforcer.d.ts +2 -2
  52. package/dist/core/intelligence/patterns/output-format-enforcer.js +1 -1
  53. package/dist/core/intelligence/patterns/prd-structure-enforcer.d.ts +2 -2
  54. package/dist/core/intelligence/patterns/prd-structure-enforcer.js +1 -1
  55. package/dist/core/intelligence/patterns/prerequisite-identifier.d.ts +2 -2
  56. package/dist/core/intelligence/patterns/prerequisite-identifier.js +1 -1
  57. package/dist/core/intelligence/patterns/requirement-prioritizer.d.ts +2 -2
  58. package/dist/core/intelligence/patterns/requirement-prioritizer.js +1 -1
  59. package/dist/core/intelligence/patterns/scope-definer.d.ts +2 -2
  60. package/dist/core/intelligence/patterns/scope-definer.js +1 -1
  61. package/dist/core/intelligence/patterns/step-decomposer.d.ts +2 -2
  62. package/dist/core/intelligence/patterns/step-decomposer.js +1 -1
  63. package/dist/core/intelligence/patterns/structure-organizer.d.ts +2 -2
  64. package/dist/core/intelligence/patterns/structure-organizer.js +1 -1
  65. package/dist/core/intelligence/patterns/success-criteria-enforcer.d.ts +2 -2
  66. package/dist/core/intelligence/patterns/success-criteria-enforcer.js +1 -1
  67. package/dist/core/intelligence/patterns/success-metrics-enforcer.d.ts +2 -2
  68. package/dist/core/intelligence/patterns/success-metrics-enforcer.js +1 -1
  69. package/dist/core/intelligence/patterns/technical-context-enricher.d.ts +2 -2
  70. package/dist/core/intelligence/patterns/technical-context-enricher.js +1 -1
  71. package/dist/core/intelligence/patterns/topic-coherence-analyzer.d.ts +2 -2
  72. package/dist/core/intelligence/patterns/topic-coherence-analyzer.js +1 -1
  73. package/dist/core/intelligence/patterns/user-persona-enricher.d.ts +2 -2
  74. package/dist/core/intelligence/patterns/user-persona-enricher.js +1 -1
  75. package/dist/core/intelligence/patterns/validation-checklist-creator.d.ts +2 -2
  76. package/dist/core/intelligence/patterns/validation-checklist-creator.js +1 -1
  77. package/dist/core/intelligence/types.d.ts +6 -3
  78. package/dist/core/intelligence/universal-optimizer.d.ts +20 -15
  79. package/dist/core/intelligence/universal-optimizer.js +44 -29
  80. package/dist/core/prompt-manager.d.ts +24 -22
  81. package/dist/core/prompt-manager.js +65 -92
  82. package/dist/core/verification-manager.d.ts +8 -7
  83. package/dist/core/verification-manager.js +34 -41
  84. package/dist/templates/agents/octo.md +6 -8
  85. package/dist/templates/slash-commands/_canonical/execute.md +39 -41
  86. package/dist/templates/slash-commands/_canonical/improve.md +604 -0
  87. package/dist/templates/slash-commands/_canonical/verify.md +1 -1
  88. package/dist/templates/slash-commands/_components/sections/escalation-factors.md +25 -25
  89. package/dist/templates/slash-commands/_components/sections/pattern-visibility.md +27 -33
  90. package/dist/types/config.d.ts +1 -2
  91. package/dist/types/verification.d.ts +7 -6
  92. package/dist/types/verification.js +2 -1
  93. package/package.json +1 -1
  94. package/dist/templates/slash-commands/_canonical/deep.md +0 -651
  95. package/dist/templates/slash-commands/_canonical/fast.md +0 -535
@@ -9,6 +9,9 @@ export default class Analyze extends Command {
9
9
  prompt: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
10
  };
11
11
  run(): Promise<void>;
12
+ /**
13
+ * v4.11: Calculate escalation with unified improve mode
14
+ */
12
15
  private calculateEscalation;
13
16
  }
14
17
  //# sourceMappingURL=analyze.d.ts.map
@@ -31,7 +31,8 @@ export default class Analyze extends Command {
31
31
  return;
32
32
  }
33
33
  const optimizer = new UniversalOptimizer();
34
- const result = await optimizer.optimize(args.prompt, 'fast');
34
+ // v4.11: Use 'improve' mode for analysis
35
+ const result = await optimizer.optimize(args.prompt, 'improve');
35
36
  // Calculate escalation score and recommendation
36
37
  const escalation = this.calculateEscalation(result);
37
38
  // Build the analysis result
@@ -58,6 +59,9 @@ export default class Analyze extends Command {
58
59
  // Output as JSON
59
60
  console.log(JSON.stringify(analysisResult, null, flags.pretty ? 2 : 0));
60
61
  }
62
+ /**
63
+ * v4.11: Calculate escalation with unified improve mode
64
+ */
61
65
  calculateEscalation(result) {
62
66
  const factors = [];
63
67
  let score = 0;
@@ -101,16 +105,17 @@ export default class Analyze extends Command {
101
105
  score += 10;
102
106
  factors.push('low intent confidence');
103
107
  }
104
- // Determine recommendation based on score and intent
105
- let recommend = 'fast';
108
+ // v4.11: Determine recommendation based on score and intent
109
+ let recommend = 'improve';
110
+ let recommendedDepth = 'standard';
106
111
  if (result.intent.primaryIntent === 'prd-generation') {
107
112
  recommend = 'prd';
108
113
  }
109
114
  else if (score >= 60 || result.quality.overall < 50) {
110
- recommend = 'deep';
115
+ recommendedDepth = 'comprehensive';
111
116
  }
112
117
  else if (score >= 35) {
113
- recommend = 'deep';
118
+ recommendedDepth = 'comprehensive';
114
119
  }
115
120
  // Check for strategic keywords that suggest PRD mode
116
121
  const strategicIntents = ['planning', 'prd-generation', 'documentation'];
@@ -120,6 +125,7 @@ export default class Analyze extends Command {
120
125
  return {
121
126
  score: Math.min(100, score),
122
127
  recommend,
128
+ recommendedDepth: recommend === 'improve' ? recommendedDepth : undefined,
123
129
  factors,
124
130
  };
125
131
  }
@@ -4,8 +4,8 @@ export default class Execute extends Command {
4
4
  static examples: string[];
5
5
  static flags: {
6
6
  latest: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
- fast: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
- deep: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ standard: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ comprehensive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
9
  id: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  };
11
11
  run(): Promise<void>;
@@ -4,12 +4,12 @@ import inquirer from 'inquirer';
4
4
  import { PromptManager } from '../../core/prompt-manager.js';
5
5
  import { ChecklistParser } from '../../core/checklist-parser.js';
6
6
  export default class Execute extends Command {
7
- static description = 'Execute a saved prompt from fast/deep optimization';
7
+ static description = 'Execute a saved prompt from improve optimization';
8
8
  static examples = [
9
9
  '<%= config.bin %> <%= command.id %> --latest',
10
- '<%= config.bin %> <%= command.id %> --latest --fast',
11
- '<%= config.bin %> <%= command.id %> --latest --deep',
12
- '<%= config.bin %> <%= command.id %> --id fast-20250117-143022-a3f2',
10
+ '<%= config.bin %> <%= command.id %> --latest --standard',
11
+ '<%= config.bin %> <%= command.id %> --latest --comprehensive',
12
+ '<%= config.bin %> <%= command.id %> --id std-20250117-143022-a3f2',
13
13
  '<%= config.bin %> <%= command.id %>',
14
14
  ];
15
15
  static flags = {
@@ -17,12 +17,14 @@ export default class Execute extends Command {
17
17
  description: 'Auto-select latest prompt (any type)',
18
18
  default: false,
19
19
  }),
20
- fast: Flags.boolean({
21
- description: 'Filter to fast prompts only (use with --latest)',
20
+ standard: Flags.boolean({
21
+ char: 's',
22
+ description: 'Filter to standard depth prompts only (use with --latest)',
22
23
  default: false,
23
24
  }),
24
- deep: Flags.boolean({
25
- description: 'Filter to deep prompts only (use with --latest)',
25
+ comprehensive: Flags.boolean({
26
+ char: 'c',
27
+ description: 'Filter to comprehensive depth prompts only (use with --latest)',
26
28
  default: false,
27
29
  }),
28
30
  id: Flags.string({
@@ -38,8 +40,7 @@ export default class Execute extends Command {
38
40
  if (allPrompts.length === 0) {
39
41
  console.log(chalk.yellow('\n⚠️ No prompts found\n'));
40
42
  console.log(chalk.cyan('Generate an optimized prompt first:'));
41
- console.log(chalk.cyan(' /clavix:fast "your requirement"'));
42
- console.log(chalk.cyan(' /clavix:deep "your requirement"'));
43
+ console.log(chalk.cyan(' /clavix:improve "your requirement"'));
43
44
  console.log();
44
45
  return;
45
46
  }
@@ -57,18 +58,18 @@ export default class Execute extends Command {
57
58
  // Auto-select latest with optional filtering
58
59
  else if (flags.latest) {
59
60
  let filtered = allPrompts;
60
- // Apply source filter
61
- if (flags.fast && !flags.deep) {
62
- filtered = allPrompts.filter((p) => p.source === 'fast');
61
+ // Apply depth filter
62
+ if (flags.standard && !flags.comprehensive) {
63
+ filtered = allPrompts.filter((p) => p.depthUsed === 'standard');
63
64
  }
64
- else if (flags.deep && !flags.fast) {
65
- filtered = allPrompts.filter((p) => p.source === 'deep');
65
+ else if (flags.comprehensive && !flags.standard) {
66
+ filtered = allPrompts.filter((p) => p.depthUsed === 'comprehensive');
66
67
  }
67
68
  if (filtered.length === 0) {
68
- const source = flags.fast ? 'fast' : flags.deep ? 'deep' : 'any';
69
- console.log(chalk.yellow(`\n⚠️ No ${source} prompts found\n`));
70
- console.log(chalk.cyan(`Generate a ${source} prompt first:`));
71
- console.log(chalk.cyan(` /clavix:${source === 'any' ? 'fast' : source} "your requirement"`));
69
+ const depth = flags.standard ? 'standard' : flags.comprehensive ? 'comprehensive' : 'any';
70
+ console.log(chalk.yellow(`\n⚠️ No ${depth} prompts found\n`));
71
+ console.log(chalk.cyan(`Generate a prompt first:`));
72
+ console.log(chalk.cyan(` /clavix:improve "your requirement"`));
72
73
  console.log();
73
74
  return;
74
75
  }
@@ -94,8 +95,9 @@ export default class Execute extends Command {
94
95
  const status = p.executed ? chalk.green('✓') : chalk.gray('○');
95
96
  const age = p.ageInDays === 0 ? 'today' : `${p.ageInDays}d ago`;
96
97
  const ageColor = (p.ageInDays || 0) > 30 ? chalk.red : (p.ageInDays || 0) > 7 ? chalk.yellow : chalk.gray;
98
+ const depthLabel = p.depthUsed === 'comprehensive' ? 'comp' : 'std';
97
99
  return {
98
- name: `${status} [${p.source}] ${p.originalPrompt.substring(0, 60)}... ${ageColor(`(${age})`)}`,
100
+ name: `${status} [${depthLabel}] ${p.originalPrompt.substring(0, 60)}... ${ageColor(`(${age})`)}`,
99
101
  value: p.id,
100
102
  short: p.id,
101
103
  };
@@ -119,7 +121,7 @@ export default class Execute extends Command {
119
121
  }
120
122
  // Display prompt header
121
123
  console.log(chalk.bold.cyan(`\n🎯 Executing Prompt: ${prompt.id}\n`));
122
- console.log(chalk.gray(`Source: ${prompt.source}`));
124
+ console.log(chalk.gray(`Depth: ${prompt.depthUsed}`));
123
125
  console.log(chalk.gray(`Created: ${new Date(prompt.timestamp).toLocaleDateString()}`));
124
126
  console.log(chalk.gray(`Age: ${prompt.ageInDays} days\n`));
125
127
  // Display full prompt content
@@ -0,0 +1,32 @@
1
+ import { Command } from '@oclif/core';
2
+ /**
3
+ * v4.11: Unified improve command with smart depth auto-detection
4
+ *
5
+ * Replaces the old fast/deep commands with intelligent depth selection:
6
+ * - Quality score >= 75: auto-comprehensive
7
+ * - Quality score 60-74: ask user (borderline)
8
+ * - Quality score < 60: auto-standard
9
+ *
10
+ * Users can override with --comprehensive or --standard flags.
11
+ */
12
+ export default class Improve extends Command {
13
+ static description: string;
14
+ static examples: string[];
15
+ static flags: {
16
+ comprehensive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ standard: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ 'analysis-only': import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ };
20
+ static args: {
21
+ prompt: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
22
+ };
23
+ run(): Promise<void>;
24
+ /**
25
+ * v4.11: Smart depth auto-detection based on quality score
26
+ */
27
+ private autoDetectDepth;
28
+ private displayOutput;
29
+ private displayAnalysisOnly;
30
+ private savePrompt;
31
+ }
32
+ //# sourceMappingURL=improve.d.ts.map
@@ -0,0 +1,250 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import inquirer from 'inquirer';
4
+ import { UniversalOptimizer } from '../../core/intelligence/index.js';
5
+ import { PromptManager } from '../../core/prompt-manager.js';
6
+ /**
7
+ * v4.11: Unified improve command with smart depth auto-detection
8
+ *
9
+ * Replaces the old fast/deep commands with intelligent depth selection:
10
+ * - Quality score >= 75: auto-comprehensive
11
+ * - Quality score 60-74: ask user (borderline)
12
+ * - Quality score < 60: auto-standard
13
+ *
14
+ * Users can override with --comprehensive or --standard flags.
15
+ */
16
+ export default class Improve extends Command {
17
+ static description = 'Improve a prompt with smart quality-based depth selection (replaces fast/deep)';
18
+ static examples = [
19
+ '<%= config.bin %> <%= command.id %> "Create a login page"',
20
+ '<%= config.bin %> <%= command.id %> "Build an API for user management" --comprehensive',
21
+ '<%= config.bin %> <%= command.id %> "Fix the button styling" --standard',
22
+ '<%= config.bin %> <%= command.id %> "Design a notification system" --analysis-only',
23
+ ];
24
+ static flags = {
25
+ comprehensive: Flags.boolean({
26
+ char: 'c',
27
+ description: 'Force comprehensive depth (alternative approaches, edge cases, validation)',
28
+ default: false,
29
+ }),
30
+ standard: Flags.boolean({
31
+ char: 's',
32
+ description: 'Force standard depth (quick improvements)',
33
+ default: false,
34
+ }),
35
+ 'analysis-only': Flags.boolean({
36
+ description: 'Show only quality analysis without improved prompt',
37
+ default: false,
38
+ }),
39
+ };
40
+ static args = {
41
+ prompt: Args.string({
42
+ description: 'The prompt to improve',
43
+ required: true,
44
+ }),
45
+ };
46
+ async run() {
47
+ const { args, flags } = await this.parse(Improve);
48
+ if (!args.prompt || args.prompt.trim().length === 0) {
49
+ console.log(chalk.red('\n✗ Please provide a prompt to improve\n'));
50
+ console.log(chalk.gray('Example:'), chalk.cyan('clavix improve "Create a login page"'));
51
+ return;
52
+ }
53
+ // Determine depth level
54
+ let depthLevel;
55
+ if (flags.comprehensive && flags.standard) {
56
+ console.log(chalk.yellow('\n⚠️ Cannot use both --comprehensive and --standard\n'));
57
+ console.log(chalk.gray('Using smart auto-detection instead...\n'));
58
+ depthLevel = await this.autoDetectDepth(args.prompt);
59
+ }
60
+ else if (flags.comprehensive) {
61
+ depthLevel = 'comprehensive';
62
+ console.log(chalk.bold.cyan('\n🔍 Performing comprehensive analysis...\n'));
63
+ console.log(chalk.gray('This may take up to 15 seconds for thorough exploration\n'));
64
+ }
65
+ else if (flags.standard) {
66
+ depthLevel = 'standard';
67
+ console.log(chalk.bold.cyan('\n🔍 Performing standard analysis...\n'));
68
+ }
69
+ else {
70
+ depthLevel = await this.autoDetectDepth(args.prompt);
71
+ }
72
+ // Run optimization
73
+ const optimizer = new UniversalOptimizer();
74
+ const result = await optimizer.optimize(args.prompt, 'improve', { depthLevel });
75
+ // Handle --analysis-only flag
76
+ if (flags['analysis-only']) {
77
+ this.displayAnalysisOnly(result, depthLevel);
78
+ return;
79
+ }
80
+ // Display full output
81
+ this.displayOutput(result, depthLevel);
82
+ // Save prompt to file system
83
+ await this.savePrompt(result, depthLevel);
84
+ }
85
+ /**
86
+ * v4.11: Smart depth auto-detection based on quality score
87
+ */
88
+ async autoDetectDepth(prompt) {
89
+ console.log(chalk.bold.cyan('\n🔍 Analyzing prompt quality...\n'));
90
+ // Quick analysis to determine depth
91
+ const optimizer = new UniversalOptimizer();
92
+ const quickResult = await optimizer.optimize(prompt, 'improve', { depthLevel: 'standard' });
93
+ const qualityScore = quickResult.quality.overall;
94
+ // v4.11 thresholds
95
+ if (qualityScore >= 75) {
96
+ // High quality - recommend comprehensive for extra polish
97
+ console.log(chalk.cyan(`Quality score: ${qualityScore.toFixed(0)}% - Recommending comprehensive depth\n`));
98
+ return 'comprehensive';
99
+ }
100
+ else if (qualityScore >= 60) {
101
+ // Borderline - ask user
102
+ console.log(chalk.yellow(`Quality score: ${qualityScore.toFixed(0)}% - Borderline quality\n`));
103
+ const { choice } = await inquirer.prompt([
104
+ {
105
+ type: 'list',
106
+ name: 'choice',
107
+ message: 'Choose analysis depth:',
108
+ choices: [
109
+ {
110
+ name: 'Comprehensive (alternative approaches, edge cases, validation)',
111
+ value: 'comprehensive',
112
+ },
113
+ { name: 'Standard (quick improvements)', value: 'standard' },
114
+ ],
115
+ },
116
+ ]);
117
+ console.log();
118
+ return choice;
119
+ }
120
+ else {
121
+ // Low quality - standard is fine, comprehensive would add noise
122
+ console.log(chalk.cyan(`Quality score: ${qualityScore.toFixed(0)}% - Using standard depth\n`));
123
+ return 'standard';
124
+ }
125
+ }
126
+ displayOutput(result, depthLevel) {
127
+ const modeLabel = depthLevel === 'comprehensive' ? 'Comprehensive' : 'Standard';
128
+ console.log(chalk.bold.cyan(`🔍 ${modeLabel} Analysis Complete\n`));
129
+ // Intent Analysis
130
+ console.log(chalk.bold.cyan('🎯 Intent Analysis:\n'));
131
+ console.log(chalk.cyan(` Type: ${result.intent.primaryIntent}`));
132
+ console.log(chalk.cyan(` Confidence: ${result.intent.confidence}%`));
133
+ if (depthLevel === 'comprehensive') {
134
+ console.log(chalk.cyan(` Characteristics:`));
135
+ console.log(chalk.cyan(` • Has code context: ${result.intent.characteristics.hasCodeContext ? 'Yes' : 'No'}`));
136
+ console.log(chalk.cyan(` • Technical terms: ${result.intent.characteristics.hasTechnicalTerms ? 'Yes' : 'No'}`));
137
+ console.log(chalk.cyan(` • Open-ended: ${result.intent.characteristics.isOpenEnded ? 'Yes' : 'No'}`));
138
+ console.log(chalk.cyan(` • Needs structure: ${result.intent.characteristics.needsStructure ? 'Yes' : 'No'}`));
139
+ }
140
+ console.log();
141
+ // Quality Metrics
142
+ console.log(chalk.bold('📊 Quality Metrics:\n'));
143
+ const getScoreColor = (score) => {
144
+ if (score >= 80)
145
+ return chalk.green;
146
+ if (score >= 60)
147
+ return chalk.yellow;
148
+ return chalk.red;
149
+ };
150
+ console.log(getScoreColor(result.quality.clarity)(` Clarity: ${result.quality.clarity.toFixed(0)}%`));
151
+ console.log(getScoreColor(result.quality.efficiency)(` Efficiency: ${result.quality.efficiency.toFixed(0)}%`));
152
+ console.log(getScoreColor(result.quality.structure)(` Structure: ${result.quality.structure.toFixed(0)}%`));
153
+ console.log(getScoreColor(result.quality.completeness)(` Completeness: ${result.quality.completeness.toFixed(0)}%`));
154
+ console.log(getScoreColor(result.quality.actionability)(` Actionability: ${result.quality.actionability.toFixed(0)}%`));
155
+ console.log(getScoreColor(result.quality.overall).bold(`\n Overall: ${result.quality.overall.toFixed(0)}%\n`));
156
+ // Strengths
157
+ if (result.quality.strengths.length > 0) {
158
+ console.log(chalk.bold.green('✅ Strengths:\n'));
159
+ result.quality.strengths.forEach((strength) => {
160
+ console.log(chalk.green(` • ${strength}`));
161
+ });
162
+ console.log();
163
+ }
164
+ // Improvements Applied
165
+ if (result.improvements.length > 0) {
166
+ console.log(chalk.bold.magenta('✨ Improvements Applied:\n'));
167
+ result.improvements.forEach((improvement) => {
168
+ const emoji = improvement.impact === 'high' ? '🔥' : improvement.impact === 'medium' ? '⚡' : '💡';
169
+ console.log(chalk.magenta(` ${emoji} ${improvement.description} [${improvement.dimension}]`));
170
+ });
171
+ console.log();
172
+ }
173
+ // Enhanced Prompt
174
+ console.log(chalk.bold.cyan('✨ Enhanced Prompt:\n'));
175
+ console.log(chalk.dim('─'.repeat(80)));
176
+ console.log(result.enhanced);
177
+ console.log(chalk.dim('─'.repeat(80)));
178
+ console.log();
179
+ // Patterns Applied (comprehensive mode)
180
+ if (depthLevel === 'comprehensive' && result.appliedPatterns.length > 0) {
181
+ console.log(chalk.bold.blue('🧩 Patterns Applied:\n'));
182
+ result.appliedPatterns.forEach((pattern) => {
183
+ console.log(chalk.blue(` • ${pattern.name}: ${pattern.description}`));
184
+ });
185
+ console.log();
186
+ }
187
+ // Remaining Issues
188
+ if (result.quality.remainingIssues && result.quality.remainingIssues.length > 0) {
189
+ console.log(chalk.bold.yellow('⚠️ Remaining Areas for Improvement:\n'));
190
+ result.quality.remainingIssues.forEach((issue) => {
191
+ console.log(chalk.yellow(` • ${issue}`));
192
+ });
193
+ console.log();
194
+ }
195
+ // Recommendation
196
+ const recommendation = new UniversalOptimizer().getRecommendation(result);
197
+ if (recommendation) {
198
+ console.log(chalk.blue.bold('💡 Recommendation:'));
199
+ console.log(chalk.blue(` ${recommendation}\n`));
200
+ }
201
+ console.log(chalk.gray(`⚡ Processed in ${result.processingTimeMs}ms\n`));
202
+ if (depthLevel === 'comprehensive') {
203
+ console.log(chalk.gray('💡 Tip: The enhanced prompt includes alternative approaches, edge cases, and validation checklist\n'));
204
+ }
205
+ else {
206
+ console.log(chalk.gray('💡 Tip: Copy the enhanced prompt above and use it with your AI agent\n'));
207
+ }
208
+ }
209
+ displayAnalysisOnly(result, depthLevel) {
210
+ console.log(chalk.bold.cyan('🎯 Intent Analysis:\n'));
211
+ console.log(chalk.cyan(` Type: ${result.intent.primaryIntent}`));
212
+ console.log(chalk.cyan(` Confidence: ${result.intent.confidence}%`));
213
+ console.log(chalk.cyan(` Depth: ${depthLevel}`));
214
+ if (depthLevel === 'comprehensive') {
215
+ console.log(chalk.cyan(` Characteristics:`));
216
+ console.log(chalk.cyan(` • Has code context: ${result.intent.characteristics.hasCodeContext ? 'Yes' : 'No'}`));
217
+ console.log(chalk.cyan(` • Technical terms: ${result.intent.characteristics.hasTechnicalTerms ? 'Yes' : 'No'}`));
218
+ console.log(chalk.cyan(` • Open-ended: ${result.intent.characteristics.isOpenEnded ? 'Yes' : 'No'}`));
219
+ console.log(chalk.cyan(` • Needs structure: ${result.intent.characteristics.needsStructure ? 'Yes' : 'No'}`));
220
+ }
221
+ console.log();
222
+ console.log(chalk.bold('📊 Quality Scores:\n'));
223
+ console.log(chalk.white(` Clarity: ${result.quality.clarity.toFixed(0)}%`));
224
+ console.log(chalk.white(` Efficiency: ${result.quality.efficiency.toFixed(0)}%`));
225
+ console.log(chalk.white(` Structure: ${result.quality.structure.toFixed(0)}%`));
226
+ console.log(chalk.white(` Completeness: ${result.quality.completeness.toFixed(0)}%`));
227
+ console.log(chalk.white(` Actionability: ${result.quality.actionability.toFixed(0)}%`));
228
+ console.log(chalk.bold(`\n Overall: ${result.quality.overall.toFixed(0)}%\n`));
229
+ if (result.quality.strengths.length > 0) {
230
+ console.log(chalk.bold.green('✅ Strengths:\n'));
231
+ result.quality.strengths.forEach((strength) => {
232
+ console.log(chalk.green(` • ${strength}`));
233
+ });
234
+ console.log();
235
+ }
236
+ }
237
+ async savePrompt(result, depthLevel) {
238
+ try {
239
+ const manager = new PromptManager();
240
+ const content = result.enhanced;
241
+ await manager.savePrompt(content, depthLevel, result.original);
242
+ console.log(chalk.gray(`💾 Saved prompt to .clavix/outputs/prompts/\n`));
243
+ }
244
+ catch (error) {
245
+ console.log(chalk.yellow('⚠️ Could not save prompt to file system'));
246
+ console.log(chalk.gray('Error: ' + (error instanceof Error ? error.message : 'Unknown error')));
247
+ }
248
+ }
249
+ }
250
+ //# sourceMappingURL=improve.js.map
@@ -223,13 +223,17 @@ export default class Init extends Command {
223
223
  console.log(chalk.gray(' ✓ Created detailed workflow guides for generic integrations'));
224
224
  }
225
225
  // Success message
226
+ // v4.11: Use generic command names - format varies by integration
227
+ // (claude-code uses colon like /clavix:improve, droid uses hyphen like /clavix-improve)
226
228
  console.log(chalk.bold.green('\n✅ Clavix initialized successfully!\n'));
227
229
  console.log(chalk.gray('Next steps:'));
228
230
  console.log(chalk.gray(' • Slash commands are now available in your AI agent'));
229
- console.log(chalk.gray(' • Run'), chalk.cyan('clavix --help'), chalk.gray('to see all commands'));
230
- console.log(chalk.gray(' • Try'), chalk.cyan('/clavix:fast'), chalk.gray('for quick prompt improvements'));
231
- console.log(chalk.gray(' • Try'), chalk.cyan('/clavix:deep'), chalk.gray('for comprehensive prompt analysis'));
232
- console.log(chalk.gray(' • Use'), chalk.cyan('/clavix:prd'), chalk.gray('to generate a PRD\n'));
231
+ console.log(chalk.gray(' • Run'), chalk.cyan('clavix --help'), chalk.gray('to see all CLI commands'));
232
+ console.log(chalk.gray(' • Available slash commands:'));
233
+ console.log(chalk.gray(''), chalk.cyan('improve'), chalk.gray('- Smart prompt optimization with auto depth selection'));
234
+ console.log(chalk.gray(''), chalk.cyan('prd'), chalk.gray('- Generate PRD through guided questions'));
235
+ console.log(chalk.gray(' ◦'), chalk.cyan('execute'), chalk.gray('- Run saved prompts'));
236
+ console.log(chalk.gray('\n Command format varies by integration (colon vs hyphen)\n'));
233
237
  }
234
238
  catch (error) {
235
239
  const { getErrorMessage, toError } = await import('../../utils/error-utils.js');
@@ -276,21 +280,19 @@ Welcome to Clavix! This directory contains your local Clavix configuration and d
276
280
  │ │ ├── quick-prd.md
277
281
  │ │ ├── tasks.md
278
282
  │ │ └── .clavix-implement-config.json
279
- │ ├── prompts/ # Saved prompts for re-execution
280
- │ │ ├── fast/ # Fast mode prompts
281
- │ │ └── deep/ # Deep mode prompts
283
+ │ ├── prompts/ # Saved prompts for re-execution (v4.11 unified)
282
284
  │ └── archive/ # Archived completed projects
283
285
  └── templates/ # Custom template overrides (optional)
284
286
  \`\`\`
285
287
 
286
288
  ## CLI Commands Reference
287
289
 
288
- ### Prompt Improvement
289
- - \`clavix fast "<prompt>"\` - Quick Clavix Intelligence improvements with smart triage
290
- - \`clavix deep "<prompt>"\` - Comprehensive Clavix Intelligence analysis with alternatives
291
- - \`clavix execute [--latest]\` - Execute saved prompts from fast/deep optimization
290
+ ### Prompt Improvement (v4.11)
291
+ - \`clavix improve "<prompt>"\` - Smart prompt optimization with auto depth selection
292
+ - \`clavix improve "<prompt>" --comprehensive\` - Force comprehensive depth analysis
293
+ - \`clavix execute [--latest]\` - Execute saved prompts
292
294
  - \`clavix prompts list\` - View all saved prompts with status (NEW/EXECUTED/OLD/STALE)
293
- - \`clavix prompts clear\` - Cleanup prompts (\`--executed\`, \`--stale\`, \`--fast\`, \`--deep\`, \`--all\`)
295
+ - \`clavix prompts clear\` - Cleanup prompts (\`--executed\`, \`--stale\`, \`--standard\`, \`--comprehensive\`, \`--all\`)
294
296
 
295
297
  ### PRD & Planning
296
298
  - \`clavix prd\` - Generate PRD through guided Socratic questions
@@ -319,11 +321,13 @@ If using Claude Code, Cursor, or Windsurf, the following slash commands are avai
319
321
 
320
322
  **Note:** Running \`clavix init\` or \`clavix update\` will regenerate all slash commands from templates. Any manual edits to generated commands will be lost. If you need custom commands, create new command files instead of modifying generated ones.
321
323
 
322
- ### Prompt Improvement
323
- - \`/clavix:fast [prompt]\` - Quick prompt improvements
324
- - \`/clavix:deep [prompt]\` - Comprehensive prompt analysis
325
- - \`/clavix:execute\` - Execute saved prompts
326
- - \`/clavix:prompts\` - Manage prompt lifecycle
324
+ **Command format varies by integration:**
325
+ - Claude Code, Gemini, Qwen: \`/clavix:improve\` (colon format)
326
+ - Cursor, Droid, Windsurf, etc.: \`/clavix-improve\` (hyphen format)
327
+
328
+ ### Prompt Improvement (v4.11)
329
+ - \`improve [prompt]\` - Smart optimization with auto depth selection
330
+ - \`execute\` - Execute saved prompts
327
331
 
328
332
  ### PRD & Planning
329
333
  - \`/clavix:prd\` - Generate PRD through guided questions
@@ -339,15 +343,17 @@ If using Claude Code, Cursor, or Windsurf, the following slash commands are avai
339
343
 
340
344
  ## Workflows
341
345
 
342
- ### Prompt Lifecycle (v2.7+)
346
+ ### Prompt Lifecycle (v4.11)
343
347
 
344
348
  1. **Create improved prompt**:
345
349
  \`\`\`bash
346
- clavix fast "your prompt here"
347
- # or
348
- clavix deep "your prompt here"
350
+ clavix improve "your prompt here"
351
+ # Clavix auto-selects depth based on quality analysis:
352
+ # - <60% quality: standard depth (basic fixes)
353
+ # - 60-74%: asks user to choose
354
+ # - >=75%: comprehensive depth (polish)
349
355
  \`\`\`
350
- - CLI auto-saves to \`.clavix/outputs/prompts/fast/\` or \`deep/\`
356
+ - CLI auto-saves to \`.clavix/outputs/prompts/\`
351
357
  - Slash commands require manual save per template instructions
352
358
 
353
359
  2. **Execute saved prompt**:
@@ -414,18 +420,19 @@ When using \`clavix implement --commit-strategy=<type>\`:
414
420
 
415
421
  **Recommendation**: Use \`none\` for most projects. Only enable auto-commits for large implementations with clear phases.
416
422
 
417
- ## When to Use Which Mode
423
+ ## When to Use Which Mode (v4.11)
418
424
 
419
- - **Fast mode**: Quick cleanup for simple prompts (1-2 iterations)
420
- - **Deep mode**: Complex requirements needing comprehensive analysis (3-5 alternatives)
425
+ - **Improve mode**: Smart prompt optimization with auto depth selection
426
+ - Standard depth: Quick cleanup for simpler prompts
427
+ - Comprehensive depth: Thorough analysis for complex requirements
421
428
  - **PRD mode**: Strategic planning with architecture, risks, and business impact
422
429
  - **Conversational mode** (\`start\`/\`summarize\`): Natural discussion → extract structured requirements
423
430
 
424
431
  ## Typical Workflows
425
432
 
426
- **Improve a prompt quickly**:
433
+ **Improve a prompt** (v4.11 unified):
427
434
  \`\`\`bash
428
- clavix fast "Add user authentication"
435
+ clavix improve "Add user authentication"
429
436
  clavix execute --latest
430
437
  \`\`\`
431
438
 
@@ -453,8 +460,7 @@ clavix archive my-project
453
460
  ## Customization
454
461
 
455
462
  Create custom templates in \`.clavix/templates/\` to override defaults:
456
- - \`fast.txt\` - Custom fast mode template
457
- - \`deep.txt\` - Custom deep mode template
463
+ - \`improve.txt\` - Custom improve mode template
458
464
  - \`prd-questions.txt\` - Custom PRD questions
459
465
 
460
466
  Edit configuration:
@@ -43,8 +43,7 @@ export default class Prd extends Command {
43
43
  // Initialize QuestionEngine
44
44
  const engine = new QuestionEngine();
45
45
  // Determine template path
46
- const templatePath = flags.template ||
47
- path.join(__dirname, '../../templates/prd-questions.md');
46
+ const templatePath = flags.template || path.join(__dirname, '../../templates/prd-questions.md');
48
47
  // Load question flow
49
48
  console.log(chalk.dim('Loading questions...\n'));
50
49
  const flow = await engine.loadFlow(templatePath);
@@ -113,12 +112,13 @@ export default class Prd extends Command {
113
112
  name: 'answer',
114
113
  message: question.text,
115
114
  default: question.default,
116
- validate: question.validate || ((input) => {
117
- if (currentQuestion.required && !input.trim()) {
118
- return 'This field is required';
119
- }
120
- return true;
121
- }),
115
+ validate: question.validate ||
116
+ ((input) => {
117
+ if (currentQuestion.required && !input.trim()) {
118
+ return 'This field is required';
119
+ }
120
+ return true;
121
+ }),
122
122
  },
123
123
  ]);
124
124
  answer = response.answer;
@@ -172,10 +172,11 @@ export default class Prd extends Command {
172
172
  const firstAnswer = Object.values(answers)[0];
173
173
  if (typeof firstAnswer === 'string') {
174
174
  // Extract first few words, convert to kebab-case
175
- const words = firstAnswer.toLowerCase()
175
+ const words = firstAnswer
176
+ .toLowerCase()
176
177
  .replace(/[^a-z0-9\s]/g, '')
177
178
  .split(/\s+/)
178
- .filter(w => w.length > 0)
179
+ .filter((w) => w.length > 0)
179
180
  .slice(0, 3);
180
181
  if (words.length > 0) {
181
182
  return words.join('-');
@@ -273,9 +274,9 @@ export default class Prd extends Command {
273
274
  const prdContent = await fs.readFile(quickPrdPath, 'utf-8');
274
275
  console.log(chalk.bold.cyan('✅ Validating Quick PRD Quality\n'));
275
276
  console.log(chalk.gray('Analyzing for AI consumption quality...\n'));
276
- // Run quality assessment
277
+ // Run quality assessment (v4.11: use improve mode)
277
278
  const optimizer = new UniversalOptimizer();
278
- const result = await optimizer.optimize(prdContent, 'fast');
279
+ const result = await optimizer.optimize(prdContent, 'improve');
279
280
  const getScoreColor = (score) => {
280
281
  if (score >= 80)
281
282
  return chalk.green;
@@ -311,7 +312,7 @@ export default class Prd extends Command {
311
312
  }
312
313
  }
313
314
  }
314
- catch (error) {
315
+ catch {
315
316
  console.log(chalk.yellow('⚠️ Could not validate PRD quality'));
316
317
  console.log(chalk.gray('Continuing without validation...\n'));
317
318
  }
@@ -3,8 +3,8 @@ export default class PromptsClear extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- fast: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
- deep: import("@oclif/core/interfaces").BooleanFlag<boolean>;
6
+ standard: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ comprehensive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
8
  executed: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
9
  stale: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
10
  all: import("@oclif/core/interfaces").BooleanFlag<boolean>;