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.
Files changed (55) hide show
  1. package/README.ja.md +3 -3
  2. package/README.md +3 -3
  3. package/bin/musubi-dashboard.js +23 -14
  4. package/bin/musubi-design.js +3 -3
  5. package/bin/musubi-gaps.js +9 -9
  6. package/bin/musubi-init.js +14 -1310
  7. package/bin/musubi-requirements.js +1 -1
  8. package/bin/musubi-tasks.js +5 -5
  9. package/bin/musubi-trace.js +23 -23
  10. package/bin/musubi-upgrade.js +400 -0
  11. package/bin/musubi.js +16 -1
  12. package/package.json +4 -3
  13. package/src/analyzers/gap-detector.js +3 -3
  14. package/src/analyzers/traceability.js +17 -17
  15. package/src/cli/dashboard-cli.js +54 -60
  16. package/src/cli/init-generators.js +464 -0
  17. package/src/cli/init-helpers.js +884 -0
  18. package/src/constitutional/checker.js +67 -65
  19. package/src/constitutional/ci-reporter.js +58 -49
  20. package/src/constitutional/index.js +2 -2
  21. package/src/constitutional/phase-minus-one.js +24 -27
  22. package/src/constitutional/steering-sync.js +29 -40
  23. package/src/dashboard/index.js +2 -2
  24. package/src/dashboard/sprint-planner.js +17 -19
  25. package/src/dashboard/sprint-reporter.js +47 -38
  26. package/src/dashboard/transition-recorder.js +12 -18
  27. package/src/dashboard/workflow-dashboard.js +28 -39
  28. package/src/enterprise/error-recovery.js +109 -49
  29. package/src/enterprise/experiment-report.js +63 -37
  30. package/src/enterprise/index.js +5 -5
  31. package/src/enterprise/rollback-manager.js +28 -29
  32. package/src/enterprise/tech-article.js +41 -35
  33. package/src/generators/design.js +3 -3
  34. package/src/generators/requirements.js +5 -3
  35. package/src/generators/tasks.js +2 -2
  36. package/src/integrations/platforms.js +1 -1
  37. package/src/templates/agents/claude-code/CLAUDE.md +1 -1
  38. package/src/templates/agents/claude-code/skills/design-reviewer/SKILL.md +132 -113
  39. package/src/templates/agents/claude-code/skills/requirements-reviewer/SKILL.md +85 -56
  40. package/src/templates/agents/codex/AGENTS.md +2 -2
  41. package/src/templates/agents/cursor/AGENTS.md +2 -2
  42. package/src/templates/agents/gemini-cli/GEMINI.md +2 -2
  43. package/src/templates/agents/github-copilot/AGENTS.md +2 -2
  44. package/src/templates/agents/github-copilot/commands/sdd-requirements.prompt.md +23 -4
  45. package/src/templates/agents/qwen-code/QWEN.md +2 -2
  46. package/src/templates/agents/shared/AGENTS.md +1 -1
  47. package/src/templates/agents/windsurf/AGENTS.md +2 -2
  48. package/src/templates/skills/browser-agent.md +1 -1
  49. package/src/traceability/extractor.js +22 -21
  50. package/src/traceability/gap-detector.js +19 -17
  51. package/src/traceability/index.js +2 -2
  52. package/src/traceability/matrix-storage.js +20 -22
  53. package/src/validators/constitution.js +5 -2
  54. package/src/validators/critic-system.js +6 -6
  55. package/src/validators/traceability-validator.js +3 -3
package/README.ja.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  **究極の仕様駆動開発ツール**
6
6
 
7
- [![CI](https://github.com/nahisaho/musubi/actions/workflows/ci.yml/badge.svg)](https://github.com/nahisaho/musubi/actions/workflows/ci.yml)
7
+ [![CI](https://github.com/nahisaho/MUSUBI/actions/workflows/ci.yml/badge.svg)](https://github.com/nahisaho/MUSUBI/actions/workflows/ci.yml)
8
8
  [![npm version](https://badge.fury.io/js/musubi-sdd.svg)](https://www.npmjs.com/package/musubi-sdd)
9
9
  [![npm downloads](https://img.shields.io/npm/dm/musubi-sdd.svg)](https://www.npmjs.com/package/musubi-sdd)
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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/your-org/musubi.git
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
- [![GitHub stars](https://img.shields.io/github/stars/nahisaho/musubi?style=social)](https://github.com/nahisaho/musubi)
1166
+ [![GitHub stars](https://img.shields.io/github/stars/nahisaho/musubi?style=social)](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
- [![CI](https://github.com/nahisaho/musubi/actions/workflows/ci.yml/badge.svg)](https://github.com/nahisaho/musubi/actions/workflows/ci.yml)
7
+ [![CI](https://github.com/nahisaho/MUSUBI/actions/workflows/ci.yml/badge.svg)](https://github.com/nahisaho/MUSUBI/actions/workflows/ci.yml)
8
8
  [![npm version](https://badge.fury.io/js/musubi-sdd.svg)](https://www.npmjs.com/package/musubi-sdd)
9
9
  [![npm downloads](https://img.shields.io/npm/dm/musubi-sdd.svg)](https://www.npmjs.com/package/musubi-sdd)
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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/musubi.git
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
- [![GitHub stars](https://img.shields.io/github/stars/nahisaho/musubi?style=social)](https://github.com/nahisaho/musubi)
1479
+ [![GitHub stars](https://img.shields.io/github/stars/nahisaho/musubi?style=social)](https://github.com/nahisaho/MUSUBI)
1480
1480
 
1481
1481
  Made with ❤️ for the AI Coding Community
1482
1482
 
@@ -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 feature = args[2] || args[1];
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(`Points: ${sprint.metrics.completedPoints || 0}/${sprint.metrics.totalPoints || 0}`);
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 = severity === 'critical' ? '🔴' : severity === 'high' ? '🟠' : severity === 'medium' ? '🟡' : '🟢';
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
- 'completed': '✅',
294
+ completed: '✅',
286
295
  'in-progress': '🔄',
287
- 'blocked': '🚫',
288
- 'pending': '⬜',
289
- 'not-started': '⬜'
296
+ blocked: '🚫',
297
+ pending: '⬜',
298
+ 'not-started': '⬜',
290
299
  };
291
300
  return icons[status] || '⬜';
292
301
  }
@@ -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', 'docs/design')
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 file path')
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 || 'Not specified'}`));
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
  }
@@ -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', 'docs/requirements')
23
- .option('--design <dir>', 'Design directory', 'docs/design')
24
- .option('--tasks <dir>', 'Tasks directory', 'docs/tasks')
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', 'docs/requirements')
74
- .option('--design <dir>', 'Design directory', 'docs/design')
75
- .option('--tasks <dir>', 'Tasks directory', 'docs/tasks')
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', 'docs/requirements')
152
- .option('--design <dir>', 'Design directory', 'docs/design')
153
- .option('--tasks <dir>', 'Tasks directory', 'docs/tasks')
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')