clavix 4.10.0 → 4.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/analyze.d.ts +3 -0
- package/dist/cli/commands/analyze.js +11 -5
- package/dist/cli/commands/execute.d.ts +2 -2
- package/dist/cli/commands/execute.js +23 -21
- package/dist/cli/commands/improve.d.ts +32 -0
- package/dist/cli/commands/improve.js +250 -0
- package/dist/cli/commands/init.js +35 -29
- package/dist/cli/commands/prd.js +14 -13
- package/dist/cli/commands/prompts/clear.d.ts +2 -2
- package/dist/cli/commands/prompts/clear.js +32 -26
- package/dist/cli/commands/prompts/list.js +14 -19
- package/dist/cli/commands/summarize.js +23 -14
- package/dist/cli/commands/verify.d.ts +2 -2
- package/dist/cli/commands/verify.js +26 -24
- package/dist/core/doc-injector.d.ts +2 -0
- package/dist/core/doc-injector.js +12 -13
- package/dist/core/intelligence/intent-detector.d.ts +4 -0
- package/dist/core/intelligence/intent-detector.js +8 -18
- package/dist/core/intelligence/pattern-library.d.ts +16 -10
- package/dist/core/intelligence/pattern-library.js +47 -35
- package/dist/core/intelligence/patterns/actionability-enhancer.d.ts +2 -2
- package/dist/core/intelligence/patterns/actionability-enhancer.js +1 -1
- package/dist/core/intelligence/patterns/alternative-phrasing-generator.d.ts +2 -2
- package/dist/core/intelligence/patterns/alternative-phrasing-generator.js +1 -1
- package/dist/core/intelligence/patterns/ambiguity-detector.d.ts +2 -2
- package/dist/core/intelligence/patterns/ambiguity-detector.js +1 -1
- package/dist/core/intelligence/patterns/assumption-explicitizer.d.ts +2 -2
- package/dist/core/intelligence/patterns/assumption-explicitizer.js +1 -1
- package/dist/core/intelligence/patterns/base-pattern.d.ts +10 -7
- package/dist/core/intelligence/patterns/base-pattern.js +7 -3
- package/dist/core/intelligence/patterns/completeness-validator.d.ts +2 -2
- package/dist/core/intelligence/patterns/completeness-validator.js +1 -1
- package/dist/core/intelligence/patterns/conciseness-filter.d.ts +2 -2
- package/dist/core/intelligence/patterns/conciseness-filter.js +1 -1
- package/dist/core/intelligence/patterns/context-precision.d.ts +2 -2
- package/dist/core/intelligence/patterns/context-precision.js +1 -1
- package/dist/core/intelligence/patterns/conversation-summarizer.d.ts +2 -2
- package/dist/core/intelligence/patterns/conversation-summarizer.js +1 -1
- package/dist/core/intelligence/patterns/dependency-identifier.d.ts +2 -2
- package/dist/core/intelligence/patterns/dependency-identifier.js +1 -1
- package/dist/core/intelligence/patterns/domain-context-enricher.d.ts +2 -2
- package/dist/core/intelligence/patterns/domain-context-enricher.js +1 -1
- package/dist/core/intelligence/patterns/edge-case-identifier.d.ts +2 -2
- package/dist/core/intelligence/patterns/edge-case-identifier.js +1 -1
- package/dist/core/intelligence/patterns/error-tolerance-enhancer.d.ts +2 -2
- package/dist/core/intelligence/patterns/error-tolerance-enhancer.js +1 -1
- package/dist/core/intelligence/patterns/implicit-requirement-extractor.d.ts +2 -2
- package/dist/core/intelligence/patterns/implicit-requirement-extractor.js +1 -1
- package/dist/core/intelligence/patterns/objective-clarifier.d.ts +2 -2
- package/dist/core/intelligence/patterns/objective-clarifier.js +1 -1
- package/dist/core/intelligence/patterns/output-format-enforcer.d.ts +2 -2
- package/dist/core/intelligence/patterns/output-format-enforcer.js +1 -1
- package/dist/core/intelligence/patterns/prd-structure-enforcer.d.ts +2 -2
- package/dist/core/intelligence/patterns/prd-structure-enforcer.js +1 -1
- package/dist/core/intelligence/patterns/prerequisite-identifier.d.ts +2 -2
- package/dist/core/intelligence/patterns/prerequisite-identifier.js +1 -1
- package/dist/core/intelligence/patterns/requirement-prioritizer.d.ts +2 -2
- package/dist/core/intelligence/patterns/requirement-prioritizer.js +1 -1
- package/dist/core/intelligence/patterns/scope-definer.d.ts +2 -2
- package/dist/core/intelligence/patterns/scope-definer.js +1 -1
- package/dist/core/intelligence/patterns/step-decomposer.d.ts +2 -2
- package/dist/core/intelligence/patterns/step-decomposer.js +1 -1
- package/dist/core/intelligence/patterns/structure-organizer.d.ts +2 -2
- package/dist/core/intelligence/patterns/structure-organizer.js +1 -1
- package/dist/core/intelligence/patterns/success-criteria-enforcer.d.ts +2 -2
- package/dist/core/intelligence/patterns/success-criteria-enforcer.js +1 -1
- package/dist/core/intelligence/patterns/success-metrics-enforcer.d.ts +2 -2
- package/dist/core/intelligence/patterns/success-metrics-enforcer.js +1 -1
- package/dist/core/intelligence/patterns/technical-context-enricher.d.ts +2 -2
- package/dist/core/intelligence/patterns/technical-context-enricher.js +1 -1
- package/dist/core/intelligence/patterns/topic-coherence-analyzer.d.ts +2 -2
- package/dist/core/intelligence/patterns/topic-coherence-analyzer.js +1 -1
- package/dist/core/intelligence/patterns/user-persona-enricher.d.ts +2 -2
- package/dist/core/intelligence/patterns/user-persona-enricher.js +1 -1
- package/dist/core/intelligence/patterns/validation-checklist-creator.d.ts +2 -2
- package/dist/core/intelligence/patterns/validation-checklist-creator.js +1 -1
- package/dist/core/intelligence/types.d.ts +6 -3
- package/dist/core/intelligence/universal-optimizer.d.ts +20 -15
- package/dist/core/intelligence/universal-optimizer.js +44 -29
- package/dist/core/prompt-manager.d.ts +24 -22
- package/dist/core/prompt-manager.js +65 -92
- package/dist/core/verification-manager.d.ts +8 -7
- package/dist/core/verification-manager.js +34 -41
- package/dist/templates/agents/octo.md +6 -8
- package/dist/templates/instructions/README.md +161 -188
- package/dist/templates/instructions/core/clavix-mode.md +3 -4
- package/dist/templates/instructions/core/verification.md +15 -17
- package/dist/templates/instructions/troubleshooting/jumped-to-implementation.md +1 -1
- package/dist/templates/instructions/troubleshooting/skipped-file-creation.md +7 -7
- package/dist/templates/slash-commands/_canonical/archive.md +1 -1
- package/dist/templates/slash-commands/_canonical/execute.md +39 -41
- package/dist/templates/slash-commands/_canonical/improve.md +604 -0
- package/dist/templates/slash-commands/_canonical/plan.md +1 -1
- package/dist/templates/slash-commands/_canonical/prd.md +2 -2
- package/dist/templates/slash-commands/_canonical/start.md +1 -1
- package/dist/templates/slash-commands/_canonical/summarize.md +1 -1
- package/dist/templates/slash-commands/_canonical/verify.md +9 -9
- package/dist/templates/slash-commands/_components/agent-protocols/decision-rules.md +16 -16
- package/dist/templates/slash-commands/_components/agent-protocols/self-correction.md +4 -4
- package/dist/templates/slash-commands/_components/agent-protocols/state-assertion.md +3 -4
- package/dist/templates/slash-commands/_components/agent-protocols/state-awareness.md +1 -1
- package/dist/templates/slash-commands/_components/sections/escalation-factors.md +25 -25
- package/dist/templates/slash-commands/_components/sections/pattern-visibility.md +27 -33
- package/dist/templates/slash-commands/_components/troubleshooting/mode-confusion.md +1 -1
- package/dist/templates/slash-commands/_components/troubleshooting/triage-escalation.md +9 -9
- package/dist/types/config.d.ts +1 -2
- package/dist/types/verification.d.ts +7 -6
- package/dist/types/verification.js +2 -1
- package/package.json +3 -1
- package/dist/templates/slash-commands/_canonical/deep.md +0 -651
- 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
|
-
|
|
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 = '
|
|
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
|
-
|
|
115
|
+
recommendedDepth = 'comprehensive';
|
|
111
116
|
}
|
|
112
117
|
else if (score >= 35) {
|
|
113
|
-
|
|
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
|
-
|
|
8
|
-
|
|
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
|
|
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 --
|
|
11
|
-
'<%= config.bin %> <%= command.id %> --latest --
|
|
12
|
-
'<%= config.bin %> <%= command.id %> --id
|
|
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
|
-
|
|
21
|
-
|
|
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
|
-
|
|
25
|
-
|
|
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:
|
|
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
|
|
61
|
-
if (flags.
|
|
62
|
-
filtered = allPrompts.filter((p) => p.
|
|
61
|
+
// Apply depth filter
|
|
62
|
+
if (flags.standard && !flags.comprehensive) {
|
|
63
|
+
filtered = allPrompts.filter((p) => p.depthUsed === 'standard');
|
|
63
64
|
}
|
|
64
|
-
else if (flags.
|
|
65
|
-
filtered = allPrompts.filter((p) => p.
|
|
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
|
|
69
|
-
console.log(chalk.yellow(`\n⚠️ No ${
|
|
70
|
-
console.log(chalk.cyan(`Generate a
|
|
71
|
-
console.log(chalk.cyan(` /clavix
|
|
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} [${
|
|
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(`
|
|
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(' •
|
|
231
|
-
console.log(chalk.gray('
|
|
232
|
-
console.log(chalk.gray('
|
|
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
|
|
290
|
-
- \`clavix
|
|
291
|
-
- \`clavix execute [--latest]\` - Execute saved prompts
|
|
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\`, \`--
|
|
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
|
-
|
|
323
|
-
- \`/clavix:
|
|
324
|
-
- \`/clavix
|
|
325
|
-
|
|
326
|
-
|
|
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 (
|
|
346
|
+
### Prompt Lifecycle (v4.11)
|
|
343
347
|
|
|
344
348
|
1. **Create improved prompt**:
|
|
345
349
|
\`\`\`bash
|
|
346
|
-
clavix
|
|
347
|
-
#
|
|
348
|
-
|
|
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
|
|
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
|
-
- **
|
|
420
|
-
-
|
|
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
|
|
433
|
+
**Improve a prompt** (v4.11 unified):
|
|
427
434
|
\`\`\`bash
|
|
428
|
-
clavix
|
|
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
|
-
- \`
|
|
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:
|
package/dist/cli/commands/prd.js
CHANGED
|
@@ -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 ||
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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
|
|
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, '
|
|
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
|
|
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
|
-
|
|
7
|
-
|
|
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>;
|