musubi-sdd 5.0.0 → 5.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/README.ja.md +106 -48
  2. package/README.md +110 -32
  3. package/bin/musubi-analyze.js +74 -67
  4. package/bin/musubi-browser.js +27 -26
  5. package/bin/musubi-change.js +48 -47
  6. package/bin/musubi-checkpoint.js +10 -7
  7. package/bin/musubi-convert.js +25 -25
  8. package/bin/musubi-costs.js +27 -10
  9. package/bin/musubi-gui.js +52 -46
  10. package/bin/musubi-init.js +1952 -10
  11. package/bin/musubi-orchestrate.js +327 -239
  12. package/bin/musubi-remember.js +69 -56
  13. package/bin/musubi-resolve.js +53 -45
  14. package/bin/musubi-trace.js +51 -22
  15. package/bin/musubi-validate.js +39 -30
  16. package/bin/musubi-workflow.js +33 -34
  17. package/bin/musubi.js +39 -2
  18. package/package.json +1 -1
  19. package/src/agents/agent-loop.js +94 -95
  20. package/src/agents/agentic/code-generator.js +119 -109
  21. package/src/agents/agentic/code-reviewer.js +105 -108
  22. package/src/agents/agentic/index.js +4 -4
  23. package/src/agents/browser/action-executor.js +13 -13
  24. package/src/agents/browser/ai-comparator.js +11 -10
  25. package/src/agents/browser/context-manager.js +6 -6
  26. package/src/agents/browser/index.js +5 -5
  27. package/src/agents/browser/nl-parser.js +31 -46
  28. package/src/agents/browser/screenshot.js +2 -2
  29. package/src/agents/browser/test-generator.js +6 -4
  30. package/src/agents/function-tool.js +71 -65
  31. package/src/agents/index.js +7 -7
  32. package/src/agents/schema-generator.js +98 -94
  33. package/src/analyzers/ast-extractor.js +164 -145
  34. package/src/analyzers/codegraph-auto-update.js +858 -0
  35. package/src/analyzers/complexity-analyzer.js +536 -0
  36. package/src/analyzers/context-optimizer.js +247 -125
  37. package/src/analyzers/impact-analyzer.js +1 -1
  38. package/src/analyzers/large-project-analyzer.js +766 -0
  39. package/src/analyzers/repository-map.js +83 -80
  40. package/src/analyzers/security-analyzer.js +19 -11
  41. package/src/analyzers/stuck-detector.js +19 -17
  42. package/src/converters/index.js +78 -57
  43. package/src/converters/ir/types.js +12 -12
  44. package/src/converters/parsers/musubi-parser.js +134 -126
  45. package/src/converters/parsers/openapi-parser.js +70 -53
  46. package/src/converters/parsers/speckit-parser.js +239 -175
  47. package/src/converters/writers/musubi-writer.js +123 -118
  48. package/src/converters/writers/speckit-writer.js +124 -113
  49. package/src/generators/rust-migration-generator.js +512 -0
  50. package/src/gui/public/index.html +1365 -1211
  51. package/src/gui/server.js +41 -40
  52. package/src/gui/services/file-watcher.js +23 -8
  53. package/src/gui/services/project-scanner.js +26 -20
  54. package/src/gui/services/replanning-service.js +27 -23
  55. package/src/gui/services/traceability-service.js +8 -8
  56. package/src/gui/services/workflow-service.js +14 -7
  57. package/src/index.js +151 -0
  58. package/src/integrations/cicd.js +90 -104
  59. package/src/integrations/codegraph-mcp.js +643 -0
  60. package/src/integrations/documentation.js +142 -103
  61. package/src/integrations/examples.js +95 -80
  62. package/src/integrations/github-client.js +17 -17
  63. package/src/integrations/index.js +5 -5
  64. package/src/integrations/mcp/index.js +21 -21
  65. package/src/integrations/mcp/mcp-context-provider.js +76 -78
  66. package/src/integrations/mcp/mcp-discovery.js +74 -72
  67. package/src/integrations/mcp/mcp-tool-registry.js +99 -94
  68. package/src/integrations/mcp-connector.js +70 -66
  69. package/src/integrations/platforms.js +50 -49
  70. package/src/integrations/tool-discovery.js +37 -31
  71. package/src/llm-providers/anthropic-provider.js +11 -11
  72. package/src/llm-providers/base-provider.js +16 -18
  73. package/src/llm-providers/copilot-provider.js +22 -19
  74. package/src/llm-providers/index.js +26 -25
  75. package/src/llm-providers/ollama-provider.js +11 -11
  76. package/src/llm-providers/openai-provider.js +12 -12
  77. package/src/managers/agent-memory.js +36 -24
  78. package/src/managers/checkpoint-manager.js +4 -8
  79. package/src/managers/delta-spec.js +19 -19
  80. package/src/managers/index.js +13 -4
  81. package/src/managers/memory-condenser.js +35 -45
  82. package/src/managers/repo-skill-manager.js +57 -31
  83. package/src/managers/skill-loader.js +25 -22
  84. package/src/managers/skill-tools.js +36 -72
  85. package/src/managers/workflow.js +30 -22
  86. package/src/monitoring/cost-tracker.js +53 -44
  87. package/src/monitoring/incident-manager.js +123 -103
  88. package/src/monitoring/index.js +144 -134
  89. package/src/monitoring/observability.js +82 -59
  90. package/src/monitoring/quality-dashboard.js +51 -39
  91. package/src/monitoring/release-manager.js +70 -50
  92. package/src/orchestration/agent-skill-binding.js +39 -47
  93. package/src/orchestration/error-handler.js +65 -107
  94. package/src/orchestration/guardrails/base-guardrail.js +26 -24
  95. package/src/orchestration/guardrails/guardrail-rules.js +50 -64
  96. package/src/orchestration/guardrails/index.js +5 -5
  97. package/src/orchestration/guardrails/input-guardrail.js +58 -45
  98. package/src/orchestration/guardrails/output-guardrail.js +104 -81
  99. package/src/orchestration/guardrails/safety-check.js +79 -79
  100. package/src/orchestration/index.js +38 -55
  101. package/src/orchestration/mcp-tool-adapters.js +96 -99
  102. package/src/orchestration/orchestration-engine.js +21 -21
  103. package/src/orchestration/pattern-registry.js +60 -45
  104. package/src/orchestration/patterns/auto.js +34 -47
  105. package/src/orchestration/patterns/group-chat.js +59 -65
  106. package/src/orchestration/patterns/handoff.js +67 -65
  107. package/src/orchestration/patterns/human-in-loop.js +51 -72
  108. package/src/orchestration/patterns/nested.js +25 -40
  109. package/src/orchestration/patterns/sequential.js +35 -34
  110. package/src/orchestration/patterns/swarm.js +63 -56
  111. package/src/orchestration/patterns/triage.js +150 -109
  112. package/src/orchestration/reasoning/index.js +9 -9
  113. package/src/orchestration/reasoning/planning-engine.js +143 -140
  114. package/src/orchestration/reasoning/reasoning-engine.js +206 -144
  115. package/src/orchestration/reasoning/self-correction.js +121 -128
  116. package/src/orchestration/replanning/adaptive-goal-modifier.js +107 -112
  117. package/src/orchestration/replanning/alternative-generator.js +37 -42
  118. package/src/orchestration/replanning/config.js +63 -59
  119. package/src/orchestration/replanning/goal-progress-tracker.js +98 -100
  120. package/src/orchestration/replanning/index.js +24 -20
  121. package/src/orchestration/replanning/plan-evaluator.js +49 -50
  122. package/src/orchestration/replanning/plan-monitor.js +32 -28
  123. package/src/orchestration/replanning/proactive-path-optimizer.js +175 -178
  124. package/src/orchestration/replanning/replan-history.js +33 -26
  125. package/src/orchestration/replanning/replanning-engine.js +106 -108
  126. package/src/orchestration/skill-executor.js +107 -109
  127. package/src/orchestration/skill-registry.js +85 -89
  128. package/src/orchestration/workflow-examples.js +228 -231
  129. package/src/orchestration/workflow-executor.js +65 -68
  130. package/src/orchestration/workflow-orchestrator.js +72 -73
  131. package/src/phase4-integration.js +47 -40
  132. package/src/phase5-integration.js +89 -30
  133. package/src/reporters/coverage-report.js +82 -30
  134. package/src/reporters/hierarchical-reporter.js +498 -0
  135. package/src/reporters/traceability-matrix-report.js +29 -20
  136. package/src/resolvers/issue-resolver.js +43 -31
  137. package/src/steering/advanced-validation.js +133 -124
  138. package/src/steering/auto-updater.js +60 -73
  139. package/src/steering/index.js +6 -6
  140. package/src/steering/quality-metrics.js +41 -35
  141. package/src/steering/steering-auto-update.js +83 -86
  142. package/src/steering/steering-validator.js +98 -106
  143. package/src/steering/template-constraints.js +53 -54
  144. package/src/templates/agents/claude-code/CLAUDE.md +32 -32
  145. package/src/templates/agents/claude-code/skills/agent-assistant/SKILL.md +13 -5
  146. package/src/templates/agents/claude-code/skills/ai-ml-engineer/mlops-guide.md +23 -23
  147. package/src/templates/agents/claude-code/skills/ai-ml-engineer/model-card-template.md +60 -41
  148. package/src/templates/agents/claude-code/skills/api-designer/api-patterns.md +27 -19
  149. package/src/templates/agents/claude-code/skills/api-designer/openapi-template.md +11 -7
  150. package/src/templates/agents/claude-code/skills/bug-hunter/SKILL.md +4 -3
  151. package/src/templates/agents/claude-code/skills/bug-hunter/root-cause-analysis.md +37 -15
  152. package/src/templates/agents/claude-code/skills/change-impact-analyzer/dependency-graph-patterns.md +36 -42
  153. package/src/templates/agents/claude-code/skills/change-impact-analyzer/impact-analysis-template.md +69 -60
  154. package/src/templates/agents/claude-code/skills/cloud-architect/aws-patterns.md +31 -38
  155. package/src/templates/agents/claude-code/skills/cloud-architect/azure-patterns.md +28 -23
  156. package/src/templates/agents/claude-code/skills/code-reviewer/SKILL.md +61 -0
  157. package/src/templates/agents/claude-code/skills/code-reviewer/best-practices.md +27 -0
  158. package/src/templates/agents/claude-code/skills/code-reviewer/review-checklist.md +29 -10
  159. package/src/templates/agents/claude-code/skills/code-reviewer/review-standards.md +29 -24
  160. package/src/templates/agents/claude-code/skills/constitution-enforcer/SKILL.md +8 -6
  161. package/src/templates/agents/claude-code/skills/constitution-enforcer/constitutional-articles.md +62 -26
  162. package/src/templates/agents/claude-code/skills/constitution-enforcer/phase-minus-one-gates.md +35 -16
  163. package/src/templates/agents/claude-code/skills/database-administrator/backup-recovery.md +27 -17
  164. package/src/templates/agents/claude-code/skills/database-administrator/tuning-guide.md +25 -20
  165. package/src/templates/agents/claude-code/skills/database-schema-designer/schema-patterns.md +39 -22
  166. package/src/templates/agents/claude-code/skills/devops-engineer/ci-cd-templates.md +25 -22
  167. package/src/templates/agents/claude-code/skills/issue-resolver/SKILL.md +24 -21
  168. package/src/templates/agents/claude-code/skills/orchestrator/SKILL.md +148 -63
  169. package/src/templates/agents/claude-code/skills/orchestrator/patterns.md +35 -16
  170. package/src/templates/agents/claude-code/skills/orchestrator/selection-matrix.md +69 -64
  171. package/src/templates/agents/claude-code/skills/performance-engineer/optimization-playbook.md +47 -47
  172. package/src/templates/agents/claude-code/skills/performance-optimizer/SKILL.md +69 -0
  173. package/src/templates/agents/claude-code/skills/performance-optimizer/benchmark-template.md +63 -45
  174. package/src/templates/agents/claude-code/skills/performance-optimizer/optimization-patterns.md +33 -35
  175. package/src/templates/agents/claude-code/skills/project-manager/SKILL.md +7 -6
  176. package/src/templates/agents/claude-code/skills/project-manager/agile-ceremonies.md +47 -28
  177. package/src/templates/agents/claude-code/skills/project-manager/project-templates.md +94 -78
  178. package/src/templates/agents/claude-code/skills/quality-assurance/SKILL.md +20 -17
  179. package/src/templates/agents/claude-code/skills/quality-assurance/qa-plan-template.md +63 -49
  180. package/src/templates/agents/claude-code/skills/release-coordinator/SKILL.md +5 -5
  181. package/src/templates/agents/claude-code/skills/release-coordinator/feature-flag-guide.md +30 -26
  182. package/src/templates/agents/claude-code/skills/release-coordinator/release-plan-template.md +67 -35
  183. package/src/templates/agents/claude-code/skills/requirements-analyst/ears-format.md +54 -42
  184. package/src/templates/agents/claude-code/skills/requirements-analyst/validation-rules.md +36 -33
  185. package/src/templates/agents/claude-code/skills/security-auditor/SKILL.md +77 -19
  186. package/src/templates/agents/claude-code/skills/security-auditor/audit-checklists.md +24 -24
  187. package/src/templates/agents/claude-code/skills/security-auditor/owasp-top-10.md +61 -20
  188. package/src/templates/agents/claude-code/skills/security-auditor/vulnerability-patterns.md +43 -11
  189. package/src/templates/agents/claude-code/skills/site-reliability-engineer/SKILL.md +1 -0
  190. package/src/templates/agents/claude-code/skills/site-reliability-engineer/incident-response-template.md +55 -25
  191. package/src/templates/agents/claude-code/skills/site-reliability-engineer/observability-patterns.md +78 -68
  192. package/src/templates/agents/claude-code/skills/site-reliability-engineer/slo-sli-guide.md +73 -53
  193. package/src/templates/agents/claude-code/skills/software-developer/solid-principles.md +83 -37
  194. package/src/templates/agents/claude-code/skills/software-developer/test-first-workflow.md +38 -31
  195. package/src/templates/agents/claude-code/skills/steering/SKILL.md +1 -0
  196. package/src/templates/agents/claude-code/skills/steering/auto-update-rules.md +31 -0
  197. package/src/templates/agents/claude-code/skills/system-architect/adr-template.md +25 -7
  198. package/src/templates/agents/claude-code/skills/system-architect/c4-model-guide.md +74 -61
  199. package/src/templates/agents/claude-code/skills/technical-writer/doc-templates/documentation-templates.md +70 -52
  200. package/src/templates/agents/claude-code/skills/test-engineer/SKILL.md +2 -0
  201. package/src/templates/agents/claude-code/skills/test-engineer/ears-test-mapping.md +75 -71
  202. package/src/templates/agents/claude-code/skills/test-engineer/test-types.md +85 -63
  203. package/src/templates/agents/claude-code/skills/traceability-auditor/coverage-matrix-template.md +39 -36
  204. package/src/templates/agents/claude-code/skills/traceability-auditor/gap-detection-rules.md +22 -17
  205. package/src/templates/agents/claude-code/skills/ui-ux-designer/SKILL.md +1 -0
  206. package/src/templates/agents/claude-code/skills/ui-ux-designer/accessibility-guidelines.md +49 -75
  207. package/src/templates/agents/claude-code/skills/ui-ux-designer/design-system-components.md +71 -59
  208. package/src/templates/agents/codex/AGENTS.md +74 -42
  209. package/src/templates/agents/cursor/AGENTS.md +74 -42
  210. package/src/templates/agents/gemini-cli/GEMINI.md +74 -42
  211. package/src/templates/agents/github-copilot/AGENTS.md +83 -51
  212. package/src/templates/agents/qwen-code/QWEN.md +74 -42
  213. package/src/templates/agents/windsurf/AGENTS.md +74 -42
  214. package/src/templates/architectures/README.md +41 -0
  215. package/src/templates/architectures/clean-architecture/README.md +113 -0
  216. package/src/templates/architectures/event-driven/README.md +162 -0
  217. package/src/templates/architectures/hexagonal/README.md +130 -0
  218. package/src/templates/index.js +6 -1
  219. package/src/templates/locale-manager.js +16 -16
  220. package/src/templates/shared/delta-spec-template.md +20 -13
  221. package/src/templates/shared/github-actions/musubi-issue-resolver.yml +5 -5
  222. package/src/templates/shared/github-actions/musubi-security-check.yml +3 -3
  223. package/src/templates/shared/github-actions/musubi-validate.yml +4 -4
  224. package/src/templates/shared/steering/structure.md +95 -0
  225. package/src/templates/skills/browser-agent.md +21 -16
  226. package/src/templates/skills/web-gui.md +8 -0
  227. package/src/templates/template-constraints.js +50 -53
  228. package/src/validators/advanced-validation.js +30 -36
  229. package/src/validators/constitutional-validator.js +77 -73
  230. package/src/validators/critic-system.js +49 -59
  231. package/src/validators/delta-format.js +59 -55
  232. package/src/validators/traceability-validator.js +7 -11
@@ -0,0 +1,130 @@
1
+ # Hexagonal Architecture Template
2
+
3
+ ## Overview
4
+
5
+ Hexagonal Architecture (Ports & Adapters) focuses on isolating the application core from external concerns.
6
+
7
+ ## Directory Structure
8
+
9
+ ```
10
+ src/
11
+ ├── core/ # Application Core (Hexagon)
12
+ │ ├── domain/ # Domain model
13
+ │ │ ├── models/ # Entities and aggregates
14
+ │ │ ├── events/ # Domain events
15
+ │ │ └── services/ # Domain services
16
+ │ │
17
+ │ ├── ports/ # Ports (interfaces)
18
+ │ │ ├── inbound/ # Driving ports (use cases)
19
+ │ │ │ ├── UserService.ts
20
+ │ │ │ └── OrderService.ts
21
+ │ │ └── outbound/ # Driven ports (repositories, external)
22
+ │ │ ├── UserRepository.ts
23
+ │ │ └── PaymentGateway.ts
24
+ │ │
25
+ │ └── application/ # Application logic
26
+ │ ├── commands/ # Command handlers
27
+ │ ├── queries/ # Query handlers
28
+ │ └── services/ # Application services
29
+
30
+ └── adapters/ # Adapters (outside the hexagon)
31
+ ├── inbound/ # Driving adapters
32
+ │ ├── http/ # REST API
33
+ │ ├── grpc/ # gRPC services
34
+ │ ├── graphql/ # GraphQL resolvers
35
+ │ └── cli/ # CLI interface
36
+
37
+ └── outbound/ # Driven adapters
38
+ ├── persistence/ # Database implementations
39
+ ├── messaging/ # Message queue clients
40
+ ├── http-clients/ # External API clients
41
+ └── cache/ # Cache implementations
42
+ ```
43
+
44
+ ## Port Types
45
+
46
+ ### Inbound Ports (Driving)
47
+
48
+ Define what the application CAN DO:
49
+
50
+ ```typescript
51
+ // ports/inbound/UserService.ts
52
+ interface UserService {
53
+ createUser(command: CreateUserCommand): Promise<User>;
54
+ getUser(id: UserId): Promise<User | null>;
55
+ updateUser(command: UpdateUserCommand): Promise<User>;
56
+ }
57
+ ```
58
+
59
+ ### Outbound Ports (Driven)
60
+
61
+ Define what the application NEEDS:
62
+
63
+ ```typescript
64
+ // ports/outbound/UserRepository.ts
65
+ interface UserRepository {
66
+ save(user: User): Promise<void>;
67
+ findById(id: UserId): Promise<User | null>;
68
+ findByEmail(email: Email): Promise<User | null>;
69
+ }
70
+ ```
71
+
72
+ ## Adapter Types
73
+
74
+ ### Inbound Adapters (Driving)
75
+
76
+ Translate external input to port calls:
77
+
78
+ ```typescript
79
+ // adapters/inbound/http/UserController.ts
80
+ class UserController {
81
+ constructor(private userService: UserService) {}
82
+
83
+ async create(req: Request): Promise<Response> {
84
+ const user = await this.userService.createUser(req.body);
85
+ return Response.created(user);
86
+ }
87
+ }
88
+ ```
89
+
90
+ ### Outbound Adapters (Driven)
91
+
92
+ Implement ports with external systems:
93
+
94
+ ```typescript
95
+ // adapters/outbound/persistence/PostgresUserRepository.ts
96
+ class PostgresUserRepository implements UserRepository {
97
+ async save(user: User): Promise<void> {
98
+ await this.db.query('INSERT INTO users ...');
99
+ }
100
+ }
101
+ ```
102
+
103
+ ## Key Principles
104
+
105
+ 1. **Core Independence**: The core knows nothing about adapters
106
+ 2. **Ports as Contracts**: Ports define the API between core and outside
107
+ 3. **Swappable Adapters**: Any adapter can be replaced without changing the core
108
+ 4. **Testability**: Core can be tested with mock adapters
109
+
110
+ ## Dependency Injection
111
+
112
+ ```typescript
113
+ // Composition root
114
+ const userRepository = new PostgresUserRepository(db);
115
+ const userService = new UserServiceImpl(userRepository);
116
+ const userController = new UserController(userService);
117
+ ```
118
+
119
+ ## Testing Strategy
120
+
121
+ | Component | Test Type | Approach |
122
+ | ----------- | ----------- | ------------------------ |
123
+ | Domain | Unit | Pure functions, no mocks |
124
+ | Ports | Contract | Interface compliance |
125
+ | Application | Unit | Mock outbound ports |
126
+ | Adapters | Integration | Real external systems |
127
+
128
+ ---
129
+
130
+ _Hexagonal Architecture Template - MUSUBI SDD_
@@ -5,7 +5,12 @@
5
5
 
6
6
  'use strict';
7
7
 
8
- const { LocaleManager, SUPPORTED_LOCALES, LOCALE_NAMES, TEMPLATE_CATEGORIES } = require('./locale-manager');
8
+ const {
9
+ LocaleManager,
10
+ SUPPORTED_LOCALES,
11
+ LOCALE_NAMES,
12
+ TEMPLATE_CATEGORIES,
13
+ } = require('./locale-manager');
9
14
 
10
15
  module.exports = {
11
16
  LocaleManager,
@@ -80,7 +80,7 @@ class LocaleManager {
80
80
  */
81
81
  async getTemplate(category, locale = this.defaultLocale) {
82
82
  const baseName = TEMPLATE_CATEGORIES[category] || category;
83
-
83
+
84
84
  // Try exact locale match first
85
85
  let templatePath = this.getTemplatePath(baseName, locale);
86
86
  if (await fs.pathExists(templatePath)) {
@@ -123,19 +123,19 @@ class LocaleManager {
123
123
  */
124
124
  async listTemplates() {
125
125
  const result = {};
126
-
127
- if (!await fs.pathExists(this.templatesPath)) {
126
+
127
+ if (!(await fs.pathExists(this.templatesPath))) {
128
128
  return result;
129
129
  }
130
130
 
131
131
  const files = await fs.readdir(this.templatesPath);
132
-
132
+
133
133
  for (const file of files) {
134
134
  if (!file.endsWith('.md')) continue;
135
-
135
+
136
136
  const { category, locale } = this.parseTemplateFilename(file);
137
137
  if (!category) continue;
138
-
138
+
139
139
  if (!result[category]) {
140
140
  result[category] = [];
141
141
  }
@@ -154,7 +154,7 @@ class LocaleManager {
154
154
  */
155
155
  parseTemplateFilename(filename) {
156
156
  const baseName = filename.replace('.md', '');
157
-
157
+
158
158
  // Check for locale suffix
159
159
  for (const locale of SUPPORTED_LOCALES) {
160
160
  if (baseName.endsWith(`.${locale}`)) {
@@ -164,7 +164,7 @@ class LocaleManager {
164
164
  };
165
165
  }
166
166
  }
167
-
167
+
168
168
  // No locale suffix means English
169
169
  return {
170
170
  category: baseName,
@@ -182,10 +182,10 @@ class LocaleManager {
182
182
  async createLocalizedTemplate(category, locale, content) {
183
183
  const baseName = TEMPLATE_CATEGORIES[category] || category;
184
184
  const templatePath = this.getTemplatePath(baseName, locale);
185
-
185
+
186
186
  await fs.ensureDir(path.dirname(templatePath));
187
187
  await fs.writeFile(templatePath, content, 'utf-8');
188
-
188
+
189
189
  return templatePath;
190
190
  }
191
191
 
@@ -199,19 +199,19 @@ class LocaleManager {
199
199
  // Extract translatable sections
200
200
  const sections = [];
201
201
  const lines = content.split('\n');
202
-
202
+
203
203
  let inCodeBlock = false;
204
-
204
+
205
205
  for (let i = 0; i < lines.length; i++) {
206
206
  const line = lines[i];
207
-
207
+
208
208
  if (line.startsWith('```')) {
209
209
  inCodeBlock = !inCodeBlock;
210
210
  continue;
211
211
  }
212
-
212
+
213
213
  if (inCodeBlock) continue;
214
-
214
+
215
215
  // Headers
216
216
  if (line.startsWith('#')) {
217
217
  sections.push({
@@ -221,7 +221,7 @@ class LocaleManager {
221
221
  translate: true,
222
222
  });
223
223
  }
224
-
224
+
225
225
  // Paragraphs (non-empty, non-special lines)
226
226
  if (line.trim() && !line.startsWith('-') && !line.startsWith('*') && !line.startsWith('|')) {
227
227
  sections.push({
@@ -10,12 +10,12 @@ Use this template for brownfield project change tracking.
10
10
 
11
11
  ### Delta Types
12
12
 
13
- | Type | Usage | Example |
14
- |------|-------|---------|
15
- | `ADDED` | New requirement/component | `[ADDED] REQ-AUTH-005: OAuth2 support` |
13
+ | Type | Usage | Example |
14
+ | ---------- | ----------------------------- | -------------------------------------------------- |
15
+ | `ADDED` | New requirement/component | `[ADDED] REQ-AUTH-005: OAuth2 support` |
16
16
  | `MODIFIED` | Changed requirement/component | `[MODIFIED] REQ-AUTH-001: Updated password policy` |
17
- | `REMOVED` | Deleted requirement/component | `[REMOVED] REQ-LEGACY-001: Deprecated feature` |
18
- | `RENAMED` | Renamed identifier | `[RENAMED] UserService → AuthenticationService` |
17
+ | `REMOVED` | Deleted requirement/component | `[REMOVED] REQ-LEGACY-001: Deprecated feature` |
18
+ | `RENAMED` | Renamed identifier | `[RENAMED] UserService → AuthenticationService` |
19
19
 
20
20
  ---
21
21
 
@@ -43,15 +43,18 @@ Use this template for brownfield project change tracking.
43
43
  - {api | database | ui | backend | frontend | security | performance | testing | documentation | infrastructure | configuration}
44
44
 
45
45
  ## Before State (for MODIFIED/RENAMED/REMOVED)
46
-
47
46
  ```
47
+
48
48
  {Previous specification, code, or configuration}
49
+
49
50
  ```
50
51
 
51
52
  ## After State (for ADDED/MODIFIED/RENAMED)
52
53
 
53
54
  ```
55
+
54
56
  {New specification, code, or configuration}
57
+
55
58
  ```
56
59
 
57
60
  ## Acceptance Criteria
@@ -85,7 +88,7 @@ Use this template for brownfield project change tracking.
85
88
 
86
89
  ### ADDED Example
87
90
 
88
- ```markdown
91
+ ````markdown
89
92
  # Delta Specification: DELTA-AUTH-001
90
93
 
91
94
  **Type**: ADDED
@@ -120,6 +123,7 @@ interface OAuthConfig {
120
123
 
121
124
  function authenticateOAuth(config: OAuthConfig): Promise<Session>;
122
125
  ```
126
+ ````
123
127
 
124
128
  ## Acceptance Criteria
125
129
 
@@ -127,7 +131,8 @@ function authenticateOAuth(config: OAuthConfig): Promise<Session>;
127
131
  - [ ] Session created with correct user data
128
132
  - [ ] Existing email accounts are linked
129
133
  - [ ] Failed auth shows appropriate error
130
- ```
134
+
135
+ ````
131
136
 
132
137
  ### MODIFIED Example
133
138
 
@@ -158,7 +163,7 @@ Security audit (SEC-2025-042) identified weak password policy as high risk.
158
163
 
159
164
  ```typescript
160
165
  const PASSWORD_MIN_LENGTH = 8;
161
- ```
166
+ ````
162
167
 
163
168
  ## After State
164
169
 
@@ -172,7 +177,8 @@ const PASSWORD_MIN_LENGTH = 12;
172
177
  - [ ] Existing passwords remain valid
173
178
  - [ ] UI displays updated requirements
174
179
  - [ ] Tests updated for new policy
175
- ```
180
+
181
+ ````
176
182
 
177
183
  ### REMOVED Example
178
184
 
@@ -204,7 +210,7 @@ Feature unused (0 invocations in 6 months). Maintenance burden not justified.
204
210
  ```typescript
205
211
  // Deprecated since v2.0.0
206
212
  function exportToXML(data: Record[]): string;
207
- ```
213
+ ````
208
214
 
209
215
  ## Acceptance Criteria
210
216
 
@@ -212,7 +218,8 @@ function exportToXML(data: Record[]): string;
212
218
  - [ ] Code and tests removed
213
219
  - [ ] Documentation updated
214
220
  - [ ] Changelog documents breaking change
215
- ```
221
+
222
+ ````
216
223
 
217
224
  ---
218
225
 
@@ -230,7 +237,7 @@ musubi-change show DELTA-AUTH-001
230
237
 
231
238
  # Analyze impact
232
239
  musubi-change impact DELTA-AUTH-001
233
- ```
240
+ ````
234
241
 
235
242
  ---
236
243
 
@@ -55,7 +55,7 @@ jobs:
55
55
  run: |
56
56
  musubi-resolve analyze ${{ steps.issue.outputs.number }} \
57
57
  --output json > analysis.json
58
-
58
+
59
59
  echo "result<<EOF" >> $GITHUB_OUTPUT
60
60
  cat analysis.json >> $GITHUB_OUTPUT
61
61
  echo "EOF" >> $GITHUB_OUTPUT
@@ -65,11 +65,11 @@ jobs:
65
65
  with:
66
66
  script: |
67
67
  const analysis = ${{ steps.analyze.outputs.result }};
68
-
68
+
69
69
  let comment = `## 🤖 MUSUBI Issue Analysis\n\n`;
70
70
  comment += `**Type**: ${analysis.issueType}\n`;
71
71
  comment += `**Status**: ${analysis.status}\n\n`;
72
-
72
+
73
73
  if (analysis.requirements && analysis.requirements.length > 0) {
74
74
  comment += `### Extracted Requirements\n\n`;
75
75
  analysis.requirements.forEach((req, i) => {
@@ -77,12 +77,12 @@ jobs:
77
77
  });
78
78
  comment += '\n';
79
79
  }
80
-
80
+
81
81
  comment += `### Next Steps\n\n`;
82
82
  comment += `- Add label \`musubi-implement\` to create a branch and PR\n`;
83
83
  comment += `- Or comment \`/musubi implement\` to proceed\n\n`;
84
84
  comment += `---\n_Analyzed by MUSUBI Issue Resolver_`;
85
-
85
+
86
86
  await github.rest.issues.createComment({
87
87
  owner: context.repo.owner,
88
88
  repo: context.repo.repo,
@@ -39,17 +39,17 @@ jobs:
39
39
  else
40
40
  FILES=$(git diff --name-only HEAD~1 HEAD | grep -E '\.(js|ts|py|json|yml|yaml)$' || true)
41
41
  fi
42
-
42
+
43
43
  if [ -z "$FILES" ]; then
44
44
  echo "No relevant files changed"
45
45
  echo "risks=[]" >> $GITHUB_OUTPUT
46
46
  echo "blocked=false" >> $GITHUB_OUTPUT
47
47
  exit 0
48
48
  fi
49
-
49
+
50
50
  # セキュリティ分析実行
51
51
  echo "$FILES" | xargs musubi-analyze security --format json > security-report.json 2>/dev/null || true
52
-
52
+
53
53
  if [ -f security-report.json ]; then
54
54
  CRITICAL=$(jq '[.risks[] | select(.severity == "critical")] | length' security-report.json 2>/dev/null || echo "0")
55
55
  HIGH=$(jq '[.risks[] | select(.severity == "high")] | length' security-report.json 2>/dev/null || echo "0")
@@ -37,7 +37,7 @@ jobs:
37
37
  run: |
38
38
  # Run constitutional validation with scoring
39
39
  npx musubi-validate score > validation-report.json 2>&1 || true
40
-
40
+
41
41
  if [ -f validation-report.json ]; then
42
42
  SCORE=$(jq '.score // 0' validation-report.json 2>/dev/null || echo "0")
43
43
  PASS=$(jq '.pass // false' validation-report.json 2>/dev/null || echo "false")
@@ -53,7 +53,7 @@ jobs:
53
53
  id: trace
54
54
  run: |
55
55
  npx musubi-trace --verify > trace-report.json 2>&1 || true
56
-
56
+
57
57
  if [ -f trace-report.json ]; then
58
58
  COVERAGE=$(jq '.coverage // 100' trace-report.json 2>/dev/null || echo "100")
59
59
  ORPHANS=$(jq '.orphanCount // 0' trace-report.json 2>/dev/null || echo "0")
@@ -74,11 +74,11 @@ jobs:
74
74
  const pass = '${{ steps.validate.outputs.pass }}';
75
75
  const coverage = '${{ steps.trace.outputs.coverage }}';
76
76
  const orphans = '${{ steps.trace.outputs.orphans }}';
77
-
77
+
78
78
  const emoji = pass === 'true' ? '✅' : '⚠️';
79
79
  const scoreNum = parseFloat(score) || 0;
80
80
  const scoreBar = '█'.repeat(Math.floor(scoreNum / 10)) + '░'.repeat(10 - Math.floor(scoreNum / 10));
81
-
81
+
82
82
  await github.rest.issues.createComment({
83
83
  owner: context.repo.owner,
84
84
  repo: context.repo.repo,
@@ -15,6 +15,101 @@
15
15
 
16
16
  ---
17
17
 
18
+ ## Architecture Layers (Language-Agnostic)
19
+
20
+ The following layer definitions apply regardless of programming language:
21
+
22
+ ### Layer 1: Domain / Core
23
+
24
+ **Purpose**: Business logic and domain models
25
+ **Rules**:
26
+
27
+ - MUST NOT depend on any other layer
28
+ - Contains: Entities, Value Objects, Domain Services, Domain Events
29
+ - No framework dependencies, no I/O
30
+
31
+ **Language Examples**:
32
+ | Language | Location | Pattern |
33
+ |----------|----------|---------|
34
+ | TypeScript | `lib/{feature}/domain/` | Classes/Types |
35
+ | Rust | `{crate}/src/domain/` | Structs + Traits |
36
+ | Python | `src/{pkg}/domain/` | Dataclasses |
37
+ | Go | `internal/domain/` | Structs + Interfaces |
38
+ | Java | `src/main/.../domain/` | Classes + Records |
39
+
40
+ ### Layer 2: Application / Use Cases
41
+
42
+ **Purpose**: Orchestrate domain logic, implement use cases
43
+ **Rules**:
44
+
45
+ - Depends only on Domain layer
46
+ - Contains: Application Services, Commands, Queries, DTOs
47
+ - No direct I/O (uses ports/interfaces)
48
+
49
+ **Language Examples**:
50
+ | Language | Location | Pattern |
51
+ |----------|----------|---------|
52
+ | TypeScript | `lib/{feature}/application/` | Service classes |
53
+ | Rust | `{crate}/src/application/` | Impl blocks |
54
+ | Python | `src/{pkg}/application/` | Service functions |
55
+ | Go | `internal/app/` | Service structs |
56
+ | Java | `src/main/.../application/` | @Service classes |
57
+
58
+ ### Layer 3: Infrastructure / Adapters
59
+
60
+ **Purpose**: External integrations (DB, APIs, messaging)
61
+ **Rules**:
62
+
63
+ - Depends on Application layer (implements ports)
64
+ - Contains: Repositories, API Clients, Message Publishers
65
+ - All I/O operations here
66
+
67
+ **Language Examples**:
68
+ | Language | Location | Pattern |
69
+ |----------|----------|---------|
70
+ | TypeScript | `lib/{feature}/infrastructure/` | Repository impls |
71
+ | Rust | `{crate}/src/infrastructure/` | Trait impls |
72
+ | Python | `src/{pkg}/infrastructure/` | Repository classes |
73
+ | Go | `internal/infra/` | Interface impls |
74
+ | Java | `src/main/.../infrastructure/` | @Repository classes |
75
+
76
+ ### Layer 4: Interface / Presentation
77
+
78
+ **Purpose**: Entry points (CLI, API, Web UI)
79
+ **Rules**:
80
+
81
+ - Depends on Application layer
82
+ - Contains: Controllers, CLI handlers, API routes
83
+ - Input validation and response formatting
84
+
85
+ **Language Examples**:
86
+ | Language | Location | Pattern |
87
+ |----------|----------|---------|
88
+ | TypeScript | `app/api/` or `cli/` | Route handlers |
89
+ | Rust | `{crate}/src/api/` or `cli/` | Axum handlers |
90
+ | Python | `src/{pkg}/api/` or `cli/` | FastAPI routes |
91
+ | Go | `cmd/` or `internal/api/` | HTTP handlers |
92
+ | Java | `src/main/.../api/` | @RestController |
93
+
94
+ ### Layer Dependency Rules
95
+
96
+ ```
97
+ ┌─────────────────────────────────────────┐
98
+ │ Interface / Presentation │ ← Entry points
99
+ ├─────────────────────────────────────────┤
100
+ │ Application / Use Cases │ ← Orchestration
101
+ ├─────────────────────────────────────────┤
102
+ │ Infrastructure / Adapters │ ← I/O & External
103
+ ├─────────────────────────────────────────┤
104
+ │ Domain / Core │ ← Pure business logic
105
+ └─────────────────────────────────────────┘
106
+
107
+ Dependency Direction: ↓ (outer → inner)
108
+ Domain layer has NO dependencies
109
+ ```
110
+
111
+ ---
112
+
18
113
  ## Directory Organization
19
114
 
20
115
  ### Root Structure
@@ -55,55 +55,61 @@ npx musubi browser generate-test --history actions.json --output tests/e2e/login
55
55
  ## サポートするコマンド
56
56
 
57
57
  ### ナビゲーション
58
+
58
59
  - `https://example.com を開く`
59
60
  - `go to https://example.com`
60
61
  - `ログインページにアクセス`
61
62
 
62
63
  ### クリック
64
+
63
65
  - `ログインボタンをクリック`
64
66
  - `click login button`
65
67
  - `送信ボタンを押す`
66
68
 
67
69
  ### 入力
70
+
68
71
  - `メール欄に「test@example.com」と入力`
69
72
  - `type "hello" in email field`
70
73
  - `パスワードに "secret" を入力`
71
74
 
72
75
  ### 待機
76
+
73
77
  - `3秒待つ`
74
78
  - `wait 5 seconds`
75
79
  - `ローディングが消えるまで待つ`
76
80
 
77
81
  ### スクリーンショット
82
+
78
83
  - `スクリーンショットを取る`
79
84
  - `画面を「login-page」として保存`
80
85
  - `take screenshot`
81
86
 
82
87
  ### 検証
88
+
83
89
  - `「ログイン成功」が表示される`
84
90
  - `verify "Welcome" is visible`
85
91
  - `ダッシュボードが表示されること`
86
92
 
87
93
  ## セッションコマンド(インタラクティブモード)
88
94
 
89
- | コマンド | 説明 |
90
- |---------|------|
91
- | `history` | アクション履歴を表示 |
92
- | `clear` | 履歴をクリア |
93
- | `save-test <file>` | 履歴から Playwright テストを保存 |
94
- | `exit` / `quit` / `q` | ブラウザを閉じて終了 |
95
- | `help` / `?` | ヘルプを表示 |
95
+ | コマンド | 説明 |
96
+ | --------------------- | -------------------------------- |
97
+ | `history` | アクション履歴を表示 |
98
+ | `clear` | 履歴をクリア |
99
+ | `save-test <file>` | 履歴から Playwright テストを保存 |
100
+ | `exit` / `quit` / `q` | ブラウザを閉じて終了 |
101
+ | `help` / `?` | ヘルプを表示 |
96
102
 
97
103
  ## オプション
98
104
 
99
- | オプション | 説明 | デフォルト |
100
- |-----------|------|-----------|
101
- | `--headless` | ヘッドレスモードで実行 | `true` |
102
- | `--no-headless` | ブラウザを表示 | - |
103
- | `-b, --browser` | ブラウザ種類 | `chromium` |
104
- | `-o, --output` | スクリーンショット保存先 | `./screenshots` |
105
- | `-t, --timeout` | タイムアウト(ms) | `30000` |
106
- | `--threshold` | 類似度閾値 | `0.95` |
105
+ | オプション | 説明 | デフォルト |
106
+ | --------------- | ------------------------ | --------------- |
107
+ | `--headless` | ヘッドレスモードで実行 | `true` |
108
+ | `--no-headless` | ブラウザを表示 | - |
109
+ | `-b, --browser` | ブラウザ種類 | `chromium` |
110
+ | `-o, --output` | スクリーンショット保存先 | `./screenshots` |
111
+ | `-t, --timeout` | タイムアウト(ms) | `30000` |
112
+ | `--threshold` | 類似度閾値 | `0.95` |
107
113
 
108
114
  ## MUSUBI 仕様連携
109
115
 
@@ -125,7 +131,6 @@ test('REQ-001: User Login', async ({ page }) => {
125
131
  // Pattern: event-driven
126
132
  // Trigger: the user clicks the login button with valid credentials
127
133
  // Action: display the dashboard page
128
-
129
134
  // TODO: Implement test based on requirement
130
135
  });
131
136
  ```
@@ -13,6 +13,7 @@ MUSUBI Web GUI provides a visual dashboard for Specification Driven Development
13
13
  ## Overview
14
14
 
15
15
  The Web GUI Dashboard provides:
16
+
16
17
  - **Real-time Project Monitoring**: Live updates via WebSocket
17
18
  - **Workflow Visualization**: Visual SDD stage tracking
18
19
  - **Traceability Matrix**: Requirements-to-implementation mapping
@@ -28,6 +29,7 @@ musubi-gui start
28
29
  ```
29
30
 
30
31
  Options:
32
+
31
33
  - `-p, --port <port>` - Server port (default: 3000)
32
34
  - `-d, --dir <directory>` - Project directory (default: current)
33
35
  - `--no-open` - Don't open browser automatically
@@ -113,10 +115,13 @@ src/gui/
113
115
  ## Dashboard Views
114
116
 
115
117
  ### Dashboard
118
+
116
119
  Overview of project status, statistics, and recent specifications.
117
120
 
118
121
  ### Workflow
122
+
119
123
  Visual representation of SDD workflow stages:
124
+
120
125
  1. Steering
121
126
  2. Requirements
122
127
  3. Design
@@ -127,12 +132,15 @@ Visual representation of SDD workflow stages:
127
132
  8. Completion
128
133
 
129
134
  ### Requirements
135
+
130
136
  List of all requirements with EARS pattern detection.
131
137
 
132
138
  ### Traceability
139
+
133
140
  Matrix showing links between requirements, designs, tasks, and implementations.
134
141
 
135
142
  ### Constitution
143
+
136
144
  Display of constitutional articles governing the project.
137
145
 
138
146
  ## Integration