musubi-sdd 6.2.1 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +3 -3
- package/README.md +3 -3
- package/bin/musubi-dashboard.js +23 -14
- package/bin/musubi-design.js +3 -3
- package/bin/musubi-gaps.js +9 -9
- package/bin/musubi-init.js +14 -1310
- package/bin/musubi-requirements.js +1 -1
- package/bin/musubi-tasks.js +5 -5
- package/bin/musubi-trace.js +23 -23
- package/bin/musubi-upgrade.js +400 -0
- package/bin/musubi.js +16 -1
- package/package.json +4 -3
- package/src/analyzers/gap-detector.js +3 -3
- package/src/analyzers/traceability.js +17 -17
- package/src/cli/dashboard-cli.js +54 -60
- package/src/cli/init-generators.js +464 -0
- package/src/cli/init-helpers.js +884 -0
- package/src/constitutional/checker.js +67 -65
- package/src/constitutional/ci-reporter.js +58 -49
- package/src/constitutional/index.js +2 -2
- package/src/constitutional/phase-minus-one.js +24 -27
- package/src/constitutional/steering-sync.js +29 -40
- package/src/dashboard/index.js +2 -2
- package/src/dashboard/sprint-planner.js +17 -19
- package/src/dashboard/sprint-reporter.js +47 -38
- package/src/dashboard/transition-recorder.js +12 -18
- package/src/dashboard/workflow-dashboard.js +28 -39
- package/src/enterprise/error-recovery.js +109 -49
- package/src/enterprise/experiment-report.js +63 -37
- package/src/enterprise/index.js +5 -5
- package/src/enterprise/rollback-manager.js +28 -29
- package/src/enterprise/tech-article.js +41 -35
- package/src/generators/design.js +3 -3
- package/src/generators/requirements.js +5 -3
- package/src/generators/tasks.js +2 -2
- package/src/integrations/platforms.js +1 -1
- package/src/templates/agents/claude-code/CLAUDE.md +1 -1
- package/src/templates/agents/claude-code/skills/design-reviewer/SKILL.md +132 -113
- package/src/templates/agents/claude-code/skills/requirements-reviewer/SKILL.md +85 -56
- package/src/templates/agents/codex/AGENTS.md +2 -2
- package/src/templates/agents/cursor/AGENTS.md +2 -2
- package/src/templates/agents/gemini-cli/GEMINI.md +2 -2
- package/src/templates/agents/github-copilot/AGENTS.md +2 -2
- package/src/templates/agents/github-copilot/commands/sdd-requirements.prompt.md +23 -4
- package/src/templates/agents/qwen-code/QWEN.md +2 -2
- package/src/templates/agents/shared/AGENTS.md +1 -1
- package/src/templates/agents/windsurf/AGENTS.md +2 -2
- package/src/templates/skills/browser-agent.md +1 -1
- package/src/traceability/extractor.js +22 -21
- package/src/traceability/gap-detector.js +19 -17
- package/src/traceability/index.js +2 -2
- package/src/traceability/matrix-storage.js +20 -22
- package/src/validators/constitution.js +5 -2
- package/src/validators/critic-system.js +6 -6
- package/src/validators/traceability-validator.js +3 -3
package/README.ja.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**究極の仕様駆動開発ツール**
|
|
6
6
|
|
|
7
|
-
[](https://github.com/nahisaho/MUSUBI/actions/workflows/ci.yml)
|
|
8
8
|
[](https://www.npmjs.com/package/musubi-sdd)
|
|
9
9
|
[](https://www.npmjs.com/package/musubi-sdd)
|
|
10
10
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -1107,7 +1107,7 @@ steering/rules/constitution.md
|
|
|
1107
1107
|
|
|
1108
1108
|
```bash
|
|
1109
1109
|
# リポジトリをクローン
|
|
1110
|
-
git clone https://github.com/
|
|
1110
|
+
git clone https://github.com/nahisaho/MUSUBI.git
|
|
1111
1111
|
cd musubi
|
|
1112
1112
|
|
|
1113
1113
|
# 依存関係をインストール
|
|
@@ -1163,7 +1163,7 @@ MUSUBIは以下のフレームワークから機能を統合しています。
|
|
|
1163
1163
|
|
|
1164
1164
|
**🎋 MUSUBI** - むすび - 仕様、設計、コードを結びつける。
|
|
1165
1165
|
|
|
1166
|
-
[](https://github.com/nahisaho/
|
|
1166
|
+
[](https://github.com/nahisaho/MUSUBI)
|
|
1167
1167
|
|
|
1168
1168
|
Made with ❤️ for the AI Coding Community
|
|
1169
1169
|
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**Ultimate Specification Driven Development Tool**
|
|
6
6
|
|
|
7
|
-
[](https://github.com/nahisaho/MUSUBI/actions/workflows/ci.yml)
|
|
8
8
|
[](https://www.npmjs.com/package/musubi-sdd)
|
|
9
9
|
[](https://www.npmjs.com/package/musubi-sdd)
|
|
10
10
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -1414,7 +1414,7 @@ steering/rules/constitution.md
|
|
|
1414
1414
|
|
|
1415
1415
|
```bash
|
|
1416
1416
|
# Clone repository
|
|
1417
|
-
git clone https://github.com/nahisaho/
|
|
1417
|
+
git clone https://github.com/nahisaho/MUSUBI.git
|
|
1418
1418
|
cd musubi
|
|
1419
1419
|
|
|
1420
1420
|
# Install dependencies
|
|
@@ -1476,7 +1476,7 @@ MUSUBI synthesizes features from:
|
|
|
1476
1476
|
|
|
1477
1477
|
**🎋 MUSUBI** - むすび - Bringing specifications, design, and code together.
|
|
1478
1478
|
|
|
1479
|
-
[](https://github.com/nahisaho/
|
|
1479
|
+
[](https://github.com/nahisaho/MUSUBI)
|
|
1480
1480
|
|
|
1481
1481
|
Made with ❤️ for the AI Coding Community
|
|
1482
1482
|
|
package/bin/musubi-dashboard.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* MUSUBI Dashboard CLI
|
|
5
|
-
*
|
|
5
|
+
*
|
|
6
6
|
* Workflow dashboard for progress visualization and management.
|
|
7
|
-
*
|
|
7
|
+
*
|
|
8
8
|
* Usage:
|
|
9
9
|
* musubi-dashboard show <feature> Show workflow status
|
|
10
10
|
* musubi-dashboard create <feature> Create new workflow
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* musubi-dashboard blocker <feature> Manage blockers
|
|
13
13
|
* musubi-dashboard sprint <action> Sprint management
|
|
14
14
|
* musubi-dashboard trace <action> Traceability management
|
|
15
|
-
*
|
|
15
|
+
*
|
|
16
16
|
* Requirement: IMP-6.2-003-05
|
|
17
17
|
*/
|
|
18
18
|
|
|
@@ -21,7 +21,7 @@ const { DashboardCLI } = require('../src/cli/dashboard-cli');
|
|
|
21
21
|
const args = process.argv.slice(2);
|
|
22
22
|
const command = args[0];
|
|
23
23
|
const subcommand = args[1];
|
|
24
|
-
const
|
|
24
|
+
const _feature = args[2] || args[1];
|
|
25
25
|
|
|
26
26
|
// Parse options
|
|
27
27
|
const options = {};
|
|
@@ -70,13 +70,13 @@ async function main() {
|
|
|
70
70
|
result = await cli.execute('blocker:add', [subcommand], {
|
|
71
71
|
stage: options.stage || 'current',
|
|
72
72
|
description: options.add,
|
|
73
|
-
severity: options.severity || 'medium'
|
|
73
|
+
severity: options.severity || 'medium',
|
|
74
74
|
});
|
|
75
75
|
console.log(`\n✅ Blocker added: ${options.add}`);
|
|
76
76
|
} else if (options.resolve) {
|
|
77
77
|
result = await cli.execute('blocker:resolve', [subcommand], {
|
|
78
78
|
blockerId: options.resolve,
|
|
79
|
-
resolution: options.resolution || 'Resolved'
|
|
79
|
+
resolution: options.resolution || 'Resolved',
|
|
80
80
|
});
|
|
81
81
|
console.log(`\n✅ Blocker resolved`);
|
|
82
82
|
} else {
|
|
@@ -213,7 +213,7 @@ function formatWorkflowStatus(workflow) {
|
|
|
213
213
|
|
|
214
214
|
function formatBlockers(result) {
|
|
215
215
|
const blockers = result.blockers || [];
|
|
216
|
-
|
|
216
|
+
|
|
217
217
|
if (blockers.length === 0) {
|
|
218
218
|
console.log('\n✅ No blockers');
|
|
219
219
|
return;
|
|
@@ -241,10 +241,12 @@ function formatSprintStatus(sprint) {
|
|
|
241
241
|
console.log('═'.repeat(50));
|
|
242
242
|
console.log(`Status: ${sprint.status || 'unknown'}`);
|
|
243
243
|
console.log(`Tasks: ${sprint.tasks?.length || 0}`);
|
|
244
|
-
|
|
244
|
+
|
|
245
245
|
if (sprint.metrics) {
|
|
246
246
|
console.log(`Completion: ${sprint.metrics.completionPercentage || 0}%`);
|
|
247
|
-
console.log(
|
|
247
|
+
console.log(
|
|
248
|
+
`Points: ${sprint.metrics.completedPoints || 0}/${sprint.metrics.totalPoints || 0}`
|
|
249
|
+
);
|
|
248
250
|
}
|
|
249
251
|
}
|
|
250
252
|
|
|
@@ -268,7 +270,14 @@ function formatGaps(result) {
|
|
|
268
270
|
|
|
269
271
|
Object.entries(bySeverity).forEach(([severity, items]) => {
|
|
270
272
|
if (items.length > 0) {
|
|
271
|
-
const icon =
|
|
273
|
+
const icon =
|
|
274
|
+
severity === 'critical'
|
|
275
|
+
? '🔴'
|
|
276
|
+
: severity === 'high'
|
|
277
|
+
? '🟠'
|
|
278
|
+
: severity === 'medium'
|
|
279
|
+
? '🟡'
|
|
280
|
+
: '🟢';
|
|
272
281
|
console.log(`\n${icon} ${severity.toUpperCase()} (${items.length}):`);
|
|
273
282
|
items.forEach(gap => {
|
|
274
283
|
console.log(` - ${gap.requirementId}: ${gap.gapType}`);
|
|
@@ -282,11 +291,11 @@ function formatGaps(result) {
|
|
|
282
291
|
|
|
283
292
|
function getStatusIcon(status) {
|
|
284
293
|
const icons = {
|
|
285
|
-
|
|
294
|
+
completed: '✅',
|
|
286
295
|
'in-progress': '🔄',
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
'not-started': '⬜'
|
|
296
|
+
blocked: '🚫',
|
|
297
|
+
pending: '⬜',
|
|
298
|
+
'not-started': '⬜',
|
|
290
299
|
};
|
|
291
300
|
return icons[status] || '⬜';
|
|
292
301
|
}
|
package/bin/musubi-design.js
CHANGED
|
@@ -41,10 +41,10 @@ program
|
|
|
41
41
|
program
|
|
42
42
|
.command('init <feature>')
|
|
43
43
|
.description('Initialize design document for a feature')
|
|
44
|
-
.option('-o, --output <path>', 'Output directory', '
|
|
44
|
+
.option('-o, --output <path>', 'Output directory', 'storage/design')
|
|
45
45
|
.option('-a, --author <name>', 'Author name')
|
|
46
46
|
.option('--project <name>', 'Project name')
|
|
47
|
-
.option('-r, --requirements <path>', 'Requirements
|
|
47
|
+
.option('-r, --requirements <path>', 'Requirements directory path', 'storage/specs')
|
|
48
48
|
.option('--dry-run', 'Show what would be created without writing files')
|
|
49
49
|
.option('--verbose', 'Show detailed output')
|
|
50
50
|
.option('--json', 'Output result as JSON')
|
|
@@ -59,7 +59,7 @@ program
|
|
|
59
59
|
console.log(chalk.dim(` Output: ${options.output}`));
|
|
60
60
|
console.log(chalk.dim(` Author: ${options.author || 'Not specified'}`));
|
|
61
61
|
console.log(chalk.dim(` Project: ${options.project || 'Not specified'}`));
|
|
62
|
-
console.log(chalk.dim(` Requirements: ${options.requirements
|
|
62
|
+
console.log(chalk.dim(` Requirements: ${options.requirements}`));
|
|
63
63
|
console.log(chalk.dim(` Dry run: ${options.dryRun || false}`));
|
|
64
64
|
console.log();
|
|
65
65
|
}
|
package/bin/musubi-gaps.js
CHANGED
|
@@ -19,9 +19,9 @@ program
|
|
|
19
19
|
program
|
|
20
20
|
.command('detect')
|
|
21
21
|
.description('Detect all gaps (requirements, code, tests)')
|
|
22
|
-
.option('--requirements <dir>', 'Requirements directory', '
|
|
23
|
-
.option('--design <dir>', 'Design directory', '
|
|
24
|
-
.option('--tasks <dir>', 'Tasks directory', '
|
|
22
|
+
.option('--requirements <dir>', 'Requirements directory', 'storage/specs')
|
|
23
|
+
.option('--design <dir>', 'Design directory', 'storage/design')
|
|
24
|
+
.option('--tasks <dir>', 'Tasks directory', 'storage/tasks')
|
|
25
25
|
.option('--src <dir>', 'Source code directory', 'src')
|
|
26
26
|
.option('--tests <dir>', 'Test directory', 'tests')
|
|
27
27
|
.option('--format <format>', 'Output format (table|json|markdown)', 'table')
|
|
@@ -70,9 +70,9 @@ program
|
|
|
70
70
|
program
|
|
71
71
|
.command('requirements')
|
|
72
72
|
.description('Detect orphaned requirements (no design/code)')
|
|
73
|
-
.option('--requirements <dir>', 'Requirements directory', '
|
|
74
|
-
.option('--design <dir>', 'Design directory', '
|
|
75
|
-
.option('--tasks <dir>', 'Tasks directory', '
|
|
73
|
+
.option('--requirements <dir>', 'Requirements directory', 'storage/specs')
|
|
74
|
+
.option('--design <dir>', 'Design directory', 'storage/design')
|
|
75
|
+
.option('--tasks <dir>', 'Tasks directory', 'storage/tasks')
|
|
76
76
|
.option('--format <format>', 'Output format (table|json|markdown)', 'table')
|
|
77
77
|
.action(async options => {
|
|
78
78
|
try {
|
|
@@ -148,9 +148,9 @@ program
|
|
|
148
148
|
program
|
|
149
149
|
.command('coverage')
|
|
150
150
|
.description('Calculate coverage statistics')
|
|
151
|
-
.option('--requirements <dir>', 'Requirements directory', '
|
|
152
|
-
.option('--design <dir>', 'Design directory', '
|
|
153
|
-
.option('--tasks <dir>', 'Tasks directory', '
|
|
151
|
+
.option('--requirements <dir>', 'Requirements directory', 'storage/specs')
|
|
152
|
+
.option('--design <dir>', 'Design directory', 'storage/design')
|
|
153
|
+
.option('--tasks <dir>', 'Tasks directory', 'storage/tasks')
|
|
154
154
|
.option('--src <dir>', 'Source code directory', 'src')
|
|
155
155
|
.option('--tests <dir>', 'Test directory', 'tests')
|
|
156
156
|
.option('--min-coverage <percent>', 'Minimum required coverage', '100')
|