claude-symphony 0.0.1 → 0.0.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/README.md +16 -12
- package/bin/create.js +80 -69
- package/package.json +1 -1
- package/template/.claude/commands/benchmark.md +32 -32
- package/template/.claude/commands/brainstorm.md +33 -33
- package/template/.claude/commands/checkpoint.md +42 -42
- package/template/.claude/commands/codex.md +52 -52
- package/template/.claude/commands/collaborate.md +47 -47
- package/template/.claude/commands/context.md +77 -77
- package/template/.claude/commands/deploy.md +50 -50
- package/template/.claude/commands/fork.md +46 -46
- package/template/.claude/commands/gemini.md +43 -43
- package/template/.claude/commands/handoff.md +42 -42
- package/template/.claude/commands/implement.md +42 -42
- package/template/.claude/commands/init-project.md +25 -25
- package/template/.claude/commands/next.md +67 -67
- package/template/.claude/commands/planning.md +38 -38
- package/template/.claude/commands/qa.md +47 -47
- package/template/.claude/commands/refactor.md +50 -50
- package/template/.claude/commands/research.md +31 -31
- package/template/.claude/commands/restore.md +53 -53
- package/template/.claude/commands/run-stage.md +45 -45
- package/template/.claude/commands/stages.md +49 -49
- package/template/.claude/commands/status.md +41 -41
- package/template/.claude/commands/tasks.md +33 -33
- package/template/.claude/commands/test.md +45 -45
- package/template/.claude/commands/ui-ux.md +31 -31
- package/template/.claude/commands/validate.md +81 -81
- package/template/.claude/hooks/ai-selector.sh +39 -39
- package/template/.claude/hooks/auto-checkpoint.sh +30 -30
- package/template/.claude/hooks/output-validator.sh +45 -45
- package/template/.claude/hooks/post-stage.sh +28 -28
- package/template/.claude/hooks/pre-stage.sh +47 -47
- package/template/.claude/hooks/session-start.sh +27 -27
- package/template/.claude/hooks/statusline.sh +24 -24
- package/template/.claude/hooks/stop.sh +26 -26
- package/template/.claude/settings.json +32 -32
- package/template/.claude/skills/ai-collaboration/README.md +31 -31
- package/template/.claude/skills/ai-collaboration/debate.md +66 -66
- package/template/.claude/skills/ai-collaboration/parallel.md +34 -34
- package/template/.claude/skills/ai-collaboration/prompts/CLAUDE.md +59 -63
- package/template/.claude/skills/auto-checkpoint/README.md +46 -46
- package/template/.claude/skills/auto-checkpoint/prompts/CLAUDE.md +68 -72
- package/template/.claude/skills/auto-checkpoint/rollback.md +95 -95
- package/template/.claude/skills/auto-checkpoint/trigger.md +37 -37
- package/template/.claude/skills/context-compression/README.md +69 -69
- package/template/.claude/skills/context-compression/analyze.md +74 -74
- package/template/.claude/skills/context-compression/compress.md +103 -103
- package/template/.claude/skills/context-compression/prompts/compression.md +78 -78
- package/template/.claude/skills/output-validator/README.md +33 -33
- package/template/.claude/skills/output-validator/prompts/CLAUDE.md +74 -78
- package/template/.claude/skills/output-validator/validate.md +76 -76
- package/template/.claude/skills/smart-handoff/README.md +35 -35
- package/template/.claude/skills/smart-handoff/extract.md +42 -42
- package/template/.claude/skills/smart-handoff/prompts/CLAUDE.md +52 -54
- package/template/.claude/skills/smart-handoff/summarize.md +55 -55
- package/template/.claude/skills/stage-transition/README.md +50 -50
- package/template/.claude/skills/stage-transition/handoff-gen.md +89 -89
- package/template/.claude/skills/stage-transition/prompts/transition.md +74 -74
- package/template/.claude/skills/stage-transition/validate.md +41 -41
- package/template/CLAUDE.md +334 -335
- package/template/config/ai_benchmarking.yaml +22 -22
- package/template/config/ai_collaboration.yaml +18 -18
- package/template/config/ai_logging.yaml +50 -50
- package/template/config/auto_checkpoint.yaml +32 -32
- package/template/config/context.yaml +20 -20
- package/template/config/git.yaml +51 -51
- package/template/config/handoff_intelligence.yaml +23 -23
- package/template/config/mcp_fallbacks.yaml +71 -71
- package/template/config/memory_integration.yaml +23 -23
- package/template/config/model_enforcement.yaml +53 -53
- package/template/config/models.yaml +24 -24
- package/template/config/output_validation.yaml +44 -44
- package/template/config/pipeline.yaml +25 -25
- package/template/config/pipeline_forking.yaml +40 -40
- package/template/config/qa_logging.yaml +67 -67
- package/template/config/smart_rollback.yaml +48 -48
- package/template/config/stage_personas.yaml +154 -154
- package/template/config/workflow.yaml +16 -16
- package/template/scripts/ai-benchmark.sh +41 -41
- package/template/scripts/codex-wrapper.sh +32 -32
- package/template/scripts/context-manager.sh +136 -136
- package/template/scripts/create-checkpoint.sh +34 -34
- package/template/scripts/gemini-wrapper.sh +31 -31
- package/template/scripts/init-project.sh +40 -40
- package/template/scripts/list-stages.sh +30 -30
- package/template/scripts/next-stage.sh +67 -67
- package/template/scripts/output-validate.sh +2 -2
- package/template/scripts/pipeline-fork.sh +68 -68
- package/template/scripts/pre-run-check.sh +84 -84
- package/template/scripts/restore-checkpoint.sh +50 -50
- package/template/scripts/run-stage.sh +44 -44
- package/template/scripts/show-status.sh +30 -30
- package/template/scripts/smart-handoff.sh +70 -70
- package/template/stages/01-brainstorm/CLAUDE.md +70 -74
- package/template/stages/01-brainstorm/README.md +54 -54
- package/template/stages/01-brainstorm/config.yaml +18 -18
- package/template/stages/01-brainstorm/prompts/collaboration.md +24 -24
- package/template/stages/01-brainstorm/prompts/ideation.md +41 -41
- package/template/stages/01-brainstorm/prompts/persona.md +50 -50
- package/template/stages/01-brainstorm/prompts/requirements.md +55 -55
- package/template/stages/01-brainstorm/prompts/validation.md +28 -28
- package/template/stages/01-brainstorm/templates/ideas.md +47 -47
- package/template/stages/01-brainstorm/templates/requirements_analysis.md +61 -61
- package/template/stages/02-research/CLAUDE.md +72 -76
- package/template/stages/02-research/config.yaml +12 -12
- package/template/stages/02-research/prompts/collaboration.md +29 -29
- package/template/stages/02-research/prompts/feasibility.md +38 -38
- package/template/stages/02-research/prompts/market_analysis.md +29 -29
- package/template/stages/02-research/prompts/tech_stack.md +34 -34
- package/template/stages/02-research/prompts/validation.md +29 -29
- package/template/stages/03-planning/CLAUDE.md +88 -92
- package/template/stages/03-planning/config.yaml +10 -10
- package/template/stages/03-planning/prompts/architecture.md +43 -43
- package/template/stages/03-planning/prompts/collaboration.md +34 -34
- package/template/stages/03-planning/prompts/validation.md +34 -34
- package/template/stages/04-ui-ux/CLAUDE.md +68 -72
- package/template/stages/04-ui-ux/config.yaml +5 -5
- package/template/stages/04-ui-ux/prompts/collaboration.md +35 -35
- package/template/stages/04-ui-ux/prompts/validation.md +30 -30
- package/template/stages/05-task-management/CLAUDE.md +81 -85
- package/template/stages/05-task-management/config.yaml +17 -17
- package/template/stages/05-task-management/prompts/collaboration.md +30 -30
- package/template/stages/05-task-management/prompts/validation.md +33 -33
- package/template/stages/05-task-management/templates/notion_integration.md +70 -70
- package/template/stages/05-task-management/templates/parallel_groups.yaml +64 -64
- package/template/stages/05-task-management/templates/task_schema.yaml +33 -33
- package/template/stages/06-implementation/CLAUDE.md +117 -121
- package/template/stages/06-implementation/config.yaml +10 -10
- package/template/stages/06-implementation/prompts/collaboration.md +29 -29
- package/template/stages/06-implementation/prompts/validation.md +36 -36
- package/template/stages/07-refactoring/CLAUDE.md +120 -124
- package/template/stages/07-refactoring/config.yaml +11 -11
- package/template/stages/07-refactoring/prompts/collaboration.md +36 -36
- package/template/stages/07-refactoring/prompts/validation.md +40 -40
- package/template/stages/08-qa/CLAUDE.md +80 -84
- package/template/stages/08-qa/config.yaml +7 -7
- package/template/stages/08-qa/prompts/collaboration.md +34 -34
- package/template/stages/08-qa/prompts/validation.md +41 -41
- package/template/stages/09-testing/CLAUDE.md +86 -90
- package/template/stages/09-testing/config.yaml +10 -10
- package/template/stages/09-testing/prompts/collaboration.md +38 -38
- package/template/stages/09-testing/prompts/validation.md +41 -41
- package/template/stages/10-deployment/CLAUDE.md +86 -90
- package/template/stages/10-deployment/config.yaml +11 -11
- package/template/stages/10-deployment/prompts/collaboration.md +37 -37
- package/template/stages/10-deployment/prompts/validation.md +54 -54
- package/template/stages/10-deployment/templates/github-actions-cd.yaml +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# claude-symphony
|
|
2
2
|
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="./assets/claude_symphony.webp" alt="Claude Symphony Logo" width="400">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
3
7
|
Multi-AI Orchestration Framework for Software Development
|
|
4
8
|
|
|
5
9
|
[](https://github.com/znehraks/claude-symphony/actions/workflows/ci.yml)
|
|
@@ -107,22 +111,22 @@ cd my-saas-app
|
|
|
107
111
|
Edit `stages/01-brainstorm/inputs/project_brief.md`:
|
|
108
112
|
|
|
109
113
|
```markdown
|
|
110
|
-
##
|
|
114
|
+
## Project Name
|
|
111
115
|
my-saas-app
|
|
112
116
|
|
|
113
|
-
##
|
|
114
|
-
[
|
|
117
|
+
## One-line Description
|
|
118
|
+
[Describe your project in one line]
|
|
115
119
|
|
|
116
|
-
##
|
|
117
|
-
[
|
|
120
|
+
## Problem Definition
|
|
121
|
+
[What problem are you trying to solve?]
|
|
118
122
|
|
|
119
|
-
##
|
|
120
|
-
[
|
|
123
|
+
## Target Users
|
|
124
|
+
[Who are the main users?]
|
|
121
125
|
|
|
122
|
-
##
|
|
123
|
-
1. [
|
|
124
|
-
2. [
|
|
125
|
-
3. [
|
|
126
|
+
## Core Features (Draft)
|
|
127
|
+
1. [Feature 1]
|
|
128
|
+
2. [Feature 2]
|
|
129
|
+
3. [Feature 3]
|
|
126
130
|
```
|
|
127
131
|
|
|
128
132
|
## Packages
|
|
@@ -212,7 +216,7 @@ context:
|
|
|
212
216
|
task_save_frequency: 5
|
|
213
217
|
|
|
214
218
|
git:
|
|
215
|
-
commit_language: "
|
|
219
|
+
commit_language: "English"
|
|
216
220
|
auto_commit: true
|
|
217
221
|
```
|
|
218
222
|
|
package/bin/create.js
CHANGED
|
@@ -8,7 +8,7 @@ import { input } from '@inquirer/prompts';
|
|
|
8
8
|
const __filename = fileURLToPath(import.meta.url);
|
|
9
9
|
const __dirname = path.dirname(__filename);
|
|
10
10
|
|
|
11
|
-
//
|
|
11
|
+
// Color codes
|
|
12
12
|
const colors = {
|
|
13
13
|
reset: '\x1b[0m',
|
|
14
14
|
green: '\x1b[32m',
|
|
@@ -22,6 +22,14 @@ function log(message, color = 'reset') {
|
|
|
22
22
|
console.log(`${colors[color]}${message}${colors.reset}`);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
function displayAsciiBanner() {
|
|
26
|
+
const bannerPath = path.join(__dirname, '..', 'assets', 'claude_symphony_ascii.txt');
|
|
27
|
+
if (fs.existsSync(bannerPath)) {
|
|
28
|
+
const banner = fs.readFileSync(bannerPath, 'utf8');
|
|
29
|
+
console.log(colors.cyan + banner + colors.reset);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
25
33
|
function copyRecursiveSync(src, dest) {
|
|
26
34
|
const exists = fs.existsSync(src);
|
|
27
35
|
const stats = exists && fs.statSync(src);
|
|
@@ -44,24 +52,24 @@ function copyRecursiveSync(src, dest) {
|
|
|
44
52
|
|
|
45
53
|
async function collectBriefInfo() {
|
|
46
54
|
console.log('');
|
|
47
|
-
log('
|
|
55
|
+
log('📜 Creating project brief. (Press Enter to skip)', 'yellow');
|
|
48
56
|
console.log('');
|
|
49
57
|
|
|
50
58
|
const info = {};
|
|
51
59
|
|
|
52
|
-
//
|
|
53
|
-
info.description = await input({ message: '
|
|
54
|
-
info.problem = await input({ message: '
|
|
55
|
-
info.targetUser = await input({ message: '
|
|
56
|
-
info.successCriteria = await input({ message: '
|
|
57
|
-
info.constraintSchedule = await input({ message: '
|
|
58
|
-
info.constraintBudget = await input({ message: '
|
|
59
|
-
info.constraintTech = await input({ message: '
|
|
60
|
-
info.references = await input({ message: '
|
|
61
|
-
|
|
62
|
-
//
|
|
60
|
+
// Sequential questions (each input() must complete before proceeding)
|
|
61
|
+
info.description = await input({ message: '📝 One-line description:' });
|
|
62
|
+
info.problem = await input({ message: '🔍 Problem definition (problem to solve):' });
|
|
63
|
+
info.targetUser = await input({ message: '🎯 Target users:' });
|
|
64
|
+
info.successCriteria = await input({ message: '🏆 Success criteria:' });
|
|
65
|
+
info.constraintSchedule = await input({ message: '⏰ Constraints - Schedule:' });
|
|
66
|
+
info.constraintBudget = await input({ message: '💰 Constraints - Budget:' });
|
|
67
|
+
info.constraintTech = await input({ message: '⚙️ Constraints - Technology:' });
|
|
68
|
+
info.references = await input({ message: '🔗 References (URL or documents):' });
|
|
69
|
+
|
|
70
|
+
// Core features - multiple inputs (separate loop)
|
|
63
71
|
console.log('');
|
|
64
|
-
log('
|
|
72
|
+
log('🎺 Core features (empty input to finish):', 'reset');
|
|
65
73
|
info.features = [];
|
|
66
74
|
let featureNum = 1;
|
|
67
75
|
while (true) {
|
|
@@ -75,68 +83,68 @@ async function collectBriefInfo() {
|
|
|
75
83
|
}
|
|
76
84
|
|
|
77
85
|
function generateBriefContent(projectName, info) {
|
|
78
|
-
//
|
|
86
|
+
// Core features formatting
|
|
79
87
|
let featuresContent;
|
|
80
88
|
if (info.features && info.features.length > 0) {
|
|
81
89
|
featuresContent = info.features.map((f, i) => `${i + 1}. ${f}`).join('\n');
|
|
82
90
|
} else {
|
|
83
|
-
featuresContent = '1. [
|
|
91
|
+
featuresContent = '1. [Feature 1]\n2. [Feature 2]\n3. [Feature 3]';
|
|
84
92
|
}
|
|
85
93
|
|
|
86
94
|
return `# Project Brief
|
|
87
95
|
|
|
88
|
-
##
|
|
96
|
+
## Project Name
|
|
89
97
|
${projectName}
|
|
90
98
|
|
|
91
|
-
##
|
|
92
|
-
${info.description || '[
|
|
99
|
+
## One-line Description
|
|
100
|
+
${info.description || '[Describe your project in one line]'}
|
|
93
101
|
|
|
94
|
-
##
|
|
95
|
-
${info.problem || '[
|
|
102
|
+
## Problem Definition
|
|
103
|
+
${info.problem || '[What problem are you trying to solve?]'}
|
|
96
104
|
|
|
97
|
-
##
|
|
98
|
-
${info.targetUser || '[
|
|
105
|
+
## Target Users
|
|
106
|
+
${info.targetUser || '[Who are the main users?]'}
|
|
99
107
|
|
|
100
|
-
##
|
|
108
|
+
## Core Features (Draft)
|
|
101
109
|
${featuresContent}
|
|
102
110
|
|
|
103
|
-
##
|
|
104
|
-
${info.successCriteria || '[
|
|
111
|
+
## Success Criteria
|
|
112
|
+
${info.successCriteria || '[What criteria define project success?]'}
|
|
105
113
|
|
|
106
|
-
##
|
|
107
|
-
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
114
|
+
## Constraints
|
|
115
|
+
- Schedule: ${info.constraintSchedule || ''}
|
|
116
|
+
- Budget: ${info.constraintBudget || ''}
|
|
117
|
+
- Technology: ${info.constraintTech || ''}
|
|
110
118
|
|
|
111
|
-
##
|
|
112
|
-
- ${info.references || '[URL
|
|
119
|
+
## References
|
|
120
|
+
- ${info.references || '[URL or documents]'}
|
|
113
121
|
`;
|
|
114
122
|
}
|
|
115
123
|
|
|
116
124
|
async function main() {
|
|
117
125
|
const args = process.argv.slice(2);
|
|
118
126
|
|
|
119
|
-
//
|
|
127
|
+
// Help check (process first)
|
|
120
128
|
if (args.includes('--help') || args.includes('-h')) {
|
|
121
129
|
console.log(`
|
|
122
|
-
${colors.cyan}claude-symphony${colors.reset} - Multi-AI Orchestration Framework
|
|
130
|
+
${colors.cyan}claude-symphony${colors.reset} - Multi-AI Orchestration Framework project creation
|
|
123
131
|
|
|
124
|
-
${colors.yellow}
|
|
132
|
+
${colors.yellow}Usage:${colors.reset}
|
|
125
133
|
npx claude-symphony <project-name>
|
|
126
|
-
npx claude-symphony . (
|
|
134
|
+
npx claude-symphony . (create in current directory)
|
|
127
135
|
|
|
128
|
-
${colors.yellow}
|
|
129
|
-
--yes, -y
|
|
136
|
+
${colors.yellow}Options:${colors.reset}
|
|
137
|
+
--yes, -y Create with defaults (no prompts)
|
|
130
138
|
|
|
131
|
-
${colors.yellow}
|
|
139
|
+
${colors.yellow}Examples:${colors.reset}
|
|
132
140
|
npx claude-symphony my-saas-app
|
|
133
141
|
npx claude-symphony my-game
|
|
134
142
|
npx claude-symphony my-project --yes
|
|
135
143
|
|
|
136
|
-
${colors.yellow}
|
|
144
|
+
${colors.yellow}After creation:${colors.reset}
|
|
137
145
|
1. cd <project-name>
|
|
138
|
-
2. stages/01-brainstorm/inputs/project_brief.md
|
|
139
|
-
3. /run-stage 01-brainstorm
|
|
146
|
+
2. Edit stages/01-brainstorm/inputs/project_brief.md
|
|
147
|
+
3. Run /run-stage 01-brainstorm
|
|
140
148
|
`);
|
|
141
149
|
process.exit(0);
|
|
142
150
|
}
|
|
@@ -144,9 +152,9 @@ ${colors.yellow}생성 후:${colors.reset}
|
|
|
144
152
|
const skipPrompts = args.includes('--yes') || args.includes('-y');
|
|
145
153
|
const projectName = args.find(arg => !arg.startsWith('-')) || '.';
|
|
146
154
|
|
|
147
|
-
//
|
|
155
|
+
// Project name validation
|
|
148
156
|
if (projectName !== '.' && !/^[a-z0-9-]+$/.test(projectName)) {
|
|
149
|
-
log('
|
|
157
|
+
log('Error: Project name must contain only lowercase letters, numbers, and hyphens.', 'red');
|
|
150
158
|
process.exit(1);
|
|
151
159
|
}
|
|
152
160
|
|
|
@@ -154,45 +162,48 @@ ${colors.yellow}생성 후:${colors.reset}
|
|
|
154
162
|
const targetDir = path.resolve(projectName);
|
|
155
163
|
const actualProjectName = projectName === '.' ? path.basename(targetDir) : projectName;
|
|
156
164
|
|
|
157
|
-
//
|
|
165
|
+
// Template existence check
|
|
158
166
|
if (!fs.existsSync(templateDir)) {
|
|
159
|
-
log(
|
|
167
|
+
log(`Error: Template directory not found: ${templateDir}`, 'red');
|
|
160
168
|
process.exit(1);
|
|
161
169
|
}
|
|
162
170
|
|
|
163
|
-
//
|
|
171
|
+
// Target directory check
|
|
164
172
|
if (projectName !== '.' && fs.existsSync(targetDir)) {
|
|
165
173
|
const files = fs.readdirSync(targetDir);
|
|
166
174
|
if (files.length > 0) {
|
|
167
|
-
log(
|
|
175
|
+
log(`Error: Directory is not empty: ${targetDir}`, 'red');
|
|
168
176
|
process.exit(1);
|
|
169
177
|
}
|
|
170
178
|
}
|
|
171
179
|
|
|
180
|
+
// Display ASCII banner
|
|
181
|
+
displayAsciiBanner();
|
|
182
|
+
|
|
172
183
|
console.log('');
|
|
173
184
|
log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━', 'cyan');
|
|
174
|
-
log(`🎼 claude-symphony
|
|
185
|
+
log(`🎼 Creating claude-symphony project: ${actualProjectName}`, 'cyan');
|
|
175
186
|
log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━', 'cyan');
|
|
176
187
|
console.log('');
|
|
177
188
|
|
|
178
|
-
// 1.
|
|
189
|
+
// 1. Create target directory
|
|
179
190
|
if (!fs.existsSync(targetDir)) {
|
|
180
191
|
fs.mkdirSync(targetDir, { recursive: true });
|
|
181
192
|
}
|
|
182
|
-
log(`✓
|
|
193
|
+
log(`✓ Project directory: ${targetDir}`, 'green');
|
|
183
194
|
|
|
184
|
-
// 2.
|
|
195
|
+
// 2. Collect project brief info (only when --yes flag is not present)
|
|
185
196
|
let briefInfo = {};
|
|
186
197
|
if (!skipPrompts) {
|
|
187
198
|
briefInfo = await collectBriefInfo();
|
|
188
199
|
}
|
|
189
200
|
|
|
190
|
-
// 3.
|
|
191
|
-
log('
|
|
201
|
+
// 3. Copy template
|
|
202
|
+
log(' Copying template...', 'blue');
|
|
192
203
|
copyRecursiveSync(templateDir, targetDir);
|
|
193
|
-
log('✓
|
|
204
|
+
log('✓ Template copy complete', 'green');
|
|
194
205
|
|
|
195
|
-
// 4. progress.json
|
|
206
|
+
// 4. Initialize progress.json
|
|
196
207
|
const progressTemplatePath = path.join(targetDir, 'state', 'progress.json.template');
|
|
197
208
|
const progressPath = path.join(targetDir, 'state', 'progress.json');
|
|
198
209
|
|
|
@@ -205,11 +216,11 @@ ${colors.yellow}생성 후:${colors.reset}
|
|
|
205
216
|
.replace('{{STARTED_AT}}', timestamp);
|
|
206
217
|
|
|
207
218
|
fs.writeFileSync(progressPath, progressContent);
|
|
208
|
-
fs.unlinkSync(progressTemplatePath); //
|
|
209
|
-
log('✓ progress.json
|
|
219
|
+
fs.unlinkSync(progressTemplatePath); // Delete template file
|
|
220
|
+
log('✓ progress.json initialized', 'green');
|
|
210
221
|
}
|
|
211
222
|
|
|
212
|
-
// 5. project_brief.md
|
|
223
|
+
// 5. Create project_brief.md
|
|
213
224
|
const briefPath = path.join(targetDir, 'stages', '01-brainstorm', 'inputs', 'project_brief.md');
|
|
214
225
|
const briefDir = path.dirname(briefPath);
|
|
215
226
|
|
|
@@ -219,25 +230,25 @@ ${colors.yellow}생성 후:${colors.reset}
|
|
|
219
230
|
|
|
220
231
|
const briefContent = generateBriefContent(actualProjectName, briefInfo);
|
|
221
232
|
fs.writeFileSync(briefPath, briefContent);
|
|
222
|
-
log('✓ project_brief.md
|
|
233
|
+
log('✓ project_brief.md created', 'green');
|
|
223
234
|
|
|
224
|
-
// 6.
|
|
235
|
+
// 6. Completion message
|
|
225
236
|
console.log('');
|
|
226
237
|
log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━', 'green');
|
|
227
|
-
log(`✓
|
|
238
|
+
log(`✓ Project '${actualProjectName}' created successfully!`, 'green');
|
|
228
239
|
log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━', 'green');
|
|
229
240
|
console.log('');
|
|
230
|
-
log('
|
|
241
|
+
log('Next steps:', 'yellow');
|
|
231
242
|
if (projectName !== '.') {
|
|
232
243
|
console.log(` 1. cd ${projectName}`);
|
|
233
|
-
console.log(' 2. stages/01-brainstorm/inputs/project_brief.md
|
|
234
|
-
console.log(' 3. /run-stage 01-brainstorm
|
|
244
|
+
console.log(' 2. Edit stages/01-brainstorm/inputs/project_brief.md');
|
|
245
|
+
console.log(' 3. Run /run-stage 01-brainstorm');
|
|
235
246
|
} else {
|
|
236
|
-
console.log(' 1. stages/01-brainstorm/inputs/project_brief.md
|
|
237
|
-
console.log(' 2. /run-stage 01-brainstorm
|
|
247
|
+
console.log(' 1. Edit stages/01-brainstorm/inputs/project_brief.md');
|
|
248
|
+
console.log(' 2. Run /run-stage 01-brainstorm');
|
|
238
249
|
}
|
|
239
250
|
console.log('');
|
|
240
|
-
log('
|
|
251
|
+
log('Pipeline stages:', 'cyan');
|
|
241
252
|
console.log(' 01-brainstorm → 02-research → 03-planning → 04-ui-ux');
|
|
242
253
|
console.log(' → 05-task-management → 06-implementation → 07-refactoring');
|
|
243
254
|
console.log(' → 08-qa → 09-testing → 10-deployment');
|
|
@@ -245,6 +256,6 @@ ${colors.yellow}생성 후:${colors.reset}
|
|
|
245
256
|
}
|
|
246
257
|
|
|
247
258
|
main().catch(err => {
|
|
248
|
-
log(
|
|
259
|
+
log(`Error: ${err.message}`, 'red');
|
|
249
260
|
process.exit(1);
|
|
250
261
|
});
|
package/package.json
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
# /benchmark - AI Model Benchmarking Command
|
|
2
2
|
|
|
3
|
-
AI
|
|
3
|
+
Compare AI model performance and select the optimal model.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Usage
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
/benchmark [options]
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Options
|
|
12
12
|
|
|
13
|
-
|
|
|
14
|
-
|
|
15
|
-
| `--task` |
|
|
16
|
-
| `--models` |
|
|
17
|
-
| `--samples` |
|
|
18
|
-
| `--metrics` |
|
|
19
|
-
| `--verbose` |
|
|
13
|
+
| Option | Description | Default |
|
|
14
|
+
|--------|-------------|---------|
|
|
15
|
+
| `--task` | Task type to benchmark | code_generation |
|
|
16
|
+
| `--models` | Models to compare (comma-separated) | claude,codex |
|
|
17
|
+
| `--samples` | Number of sample tasks | 3 |
|
|
18
|
+
| `--metrics` | Metrics to measure | correctness,performance |
|
|
19
|
+
| `--verbose` | Verbose output | false |
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Benchmark Task Types
|
|
22
22
|
|
|
23
23
|
### code_generation
|
|
24
24
|
```bash
|
|
25
25
|
/benchmark --task code_generation --models "claude,codex"
|
|
26
26
|
```
|
|
27
|
-
-
|
|
27
|
+
- Metrics: correctness, performance, style_compliance, readability
|
|
28
28
|
|
|
29
29
|
### refactoring
|
|
30
30
|
```bash
|
|
31
31
|
/benchmark --task refactoring --models "codex,claude"
|
|
32
32
|
```
|
|
33
|
-
-
|
|
33
|
+
- Metrics: complexity_reduction, test_coverage, maintainability
|
|
34
34
|
|
|
35
35
|
### test_generation
|
|
36
36
|
```bash
|
|
37
37
|
/benchmark --task test_generation --models "codex,claude"
|
|
38
38
|
```
|
|
39
|
-
-
|
|
39
|
+
- Metrics: coverage, edge_cases, quality
|
|
40
40
|
|
|
41
|
-
##
|
|
41
|
+
## Output Format
|
|
42
42
|
|
|
43
43
|
```markdown
|
|
44
44
|
# AI Benchmark Results
|
|
@@ -61,43 +61,43 @@ AI 모델 성능을 비교하고 최적 모델을 선택합니다.
|
|
|
61
61
|
| Readability | 0.2 | 0.85 | 0.75 |
|
|
62
62
|
|
|
63
63
|
### Recommendation
|
|
64
|
-
|
|
64
|
+
**Claude** recommended for this task
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
##
|
|
67
|
+
## Examples
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
#
|
|
70
|
+
# Code generation benchmark
|
|
71
71
|
/benchmark --task code_generation
|
|
72
72
|
|
|
73
|
-
#
|
|
73
|
+
# Detailed results output
|
|
74
74
|
/benchmark --task refactoring --verbose
|
|
75
75
|
|
|
76
|
-
#
|
|
76
|
+
# Compare specific models only
|
|
77
77
|
/benchmark --task test_generation --models "codex"
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
##
|
|
80
|
+
## Result Storage
|
|
81
81
|
|
|
82
|
-
-
|
|
83
|
-
-
|
|
82
|
+
- Results: `state/ai_benchmarks/`
|
|
83
|
+
- Reports: `state/ai_benchmarks/reports/`
|
|
84
84
|
|
|
85
|
-
##
|
|
85
|
+
## View History
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
-
#
|
|
88
|
+
# Check latest benchmark results
|
|
89
89
|
cat state/ai_benchmarks/latest.json
|
|
90
90
|
|
|
91
|
-
#
|
|
91
|
+
# Check weekly trends
|
|
92
92
|
scripts/ai-benchmark.sh --history weekly
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
##
|
|
95
|
+
## Configuration
|
|
96
96
|
|
|
97
|
-
`config/ai_benchmarking.yaml`
|
|
97
|
+
See `config/ai_benchmarking.yaml`
|
|
98
98
|
|
|
99
|
-
##
|
|
99
|
+
## Related Commands
|
|
100
100
|
|
|
101
|
-
- `/collaborate` - AI
|
|
102
|
-
- `/gemini` - Gemini
|
|
103
|
-
- `/codex` - Codex
|
|
101
|
+
- `/collaborate` - AI collaboration
|
|
102
|
+
- `/gemini` - Direct Gemini call
|
|
103
|
+
- `/codex` - Direct Codex call
|
|
@@ -1,67 +1,67 @@
|
|
|
1
1
|
# /brainstorm
|
|
2
2
|
|
|
3
|
-
01-brainstorm
|
|
3
|
+
Start the 01-brainstorm stage directly.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Usage
|
|
6
6
|
```
|
|
7
7
|
/brainstorm [topic]
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Stage Information
|
|
11
11
|
|
|
12
|
-
|
|
|
13
|
-
|
|
14
|
-
|
|
|
15
|
-
| AI
|
|
16
|
-
|
|
|
17
|
-
|
|
|
12
|
+
| Item | Value |
|
|
13
|
+
|------|-------|
|
|
14
|
+
| Stage | 01-brainstorm |
|
|
15
|
+
| AI Model | Gemini + ClaudeCode |
|
|
16
|
+
| Execution Mode | YOLO (Container) |
|
|
17
|
+
| Checkpoint | Optional |
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## Actions
|
|
20
20
|
|
|
21
|
-
1.
|
|
22
|
-
-
|
|
21
|
+
1. **Prerequisite Check**
|
|
22
|
+
- Project initialization status (progress.json)
|
|
23
23
|
|
|
24
|
-
2.
|
|
25
|
-
- Gemini CLI
|
|
26
|
-
- ClaudeCode
|
|
24
|
+
2. **Stage Start**
|
|
25
|
+
- Gemini CLI call (creative ideas)
|
|
26
|
+
- ClaudeCode parallel execution (technical review)
|
|
27
27
|
|
|
28
|
-
3.
|
|
29
|
-
- ideas.md -
|
|
30
|
-
- decisions.md -
|
|
28
|
+
3. **Output Generation**
|
|
29
|
+
- ideas.md - Brainstorming ideas
|
|
30
|
+
- decisions.md - Key decisions
|
|
31
31
|
|
|
32
|
-
##
|
|
32
|
+
## Execution
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
# /run-stage 01
|
|
35
|
+
# Same as /run-stage 01
|
|
36
36
|
scripts/run-stage.sh 01-brainstorm "$ARGUMENTS"
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
##
|
|
39
|
+
## Output Example
|
|
40
40
|
|
|
41
41
|
```
|
|
42
42
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
43
43
|
🧠 Stage 01: Brainstorm
|
|
44
44
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
45
|
-
AI: Gemini + ClaudeCode (
|
|
45
|
+
AI: Gemini + ClaudeCode (parallel)
|
|
46
46
|
Mode: YOLO (Container)
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
Topic: $ARGUMENTS
|
|
49
49
|
|
|
50
|
-
[Gemini]
|
|
51
|
-
[ClaudeCode]
|
|
50
|
+
[Gemini] Generating creative ideas...
|
|
51
|
+
[ClaudeCode] Technical review in progress...
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
After completion: /next or /research
|
|
54
54
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
##
|
|
57
|
+
## Related Commands
|
|
58
58
|
|
|
59
|
-
- `/run-stage 01` -
|
|
60
|
-
- `/next` -
|
|
61
|
-
- `/gemini` - Gemini CLI
|
|
59
|
+
- `/run-stage 01` - Start after prerequisite check
|
|
60
|
+
- `/next` - Next stage (02-research)
|
|
61
|
+
- `/gemini` - Direct Gemini CLI call
|
|
62
62
|
|
|
63
63
|
## Tips
|
|
64
64
|
|
|
65
|
-
- YOLO
|
|
66
|
-
-
|
|
67
|
-
- decisions.md
|
|
65
|
+
- YOLO mode: Failure is okay, creativity first
|
|
66
|
+
- Freely explore multiple ideas
|
|
67
|
+
- Record final selections in decisions.md
|