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
@@ -43,23 +43,23 @@ describe('AuthService', () => {
43
43
  const authService = new AuthService(mockUserRepo);
44
44
  const email = 'test@example.com';
45
45
  const password = 'validPassword123';
46
-
46
+
47
47
  // Act
48
48
  const result = await authService.login(email, password);
49
-
49
+
50
50
  // Assert
51
51
  expect(result.success).toBe(true);
52
52
  expect(result.user.email).toBe(email);
53
53
  });
54
-
54
+
55
55
  it('should throw error when credentials are invalid', async () => {
56
56
  // Arrange
57
57
  const authService = new AuthService(mockUserRepo);
58
-
58
+
59
59
  // Act & Assert
60
- await expect(
61
- authService.login('test@example.com', 'wrongPassword')
62
- ).rejects.toThrow('Invalid credentials');
60
+ await expect(authService.login('test@example.com', 'wrongPassword')).rejects.toThrow(
61
+ 'Invalid credentials'
62
+ );
63
63
  });
64
64
  });
65
65
  });
@@ -78,17 +78,17 @@ describe('AuthService', () => {
78
78
 
79
79
  export class AuthService {
80
80
  constructor(private userRepository: UserRepository) {}
81
-
81
+
82
82
  async login(email: string, password: string): Promise<AuthResult> {
83
83
  const user = await this.userRepository.findByEmail(email);
84
-
84
+
85
85
  if (!user || !this.verifyPassword(password, user.passwordHash)) {
86
86
  throw new Error('Invalid credentials');
87
87
  }
88
-
88
+
89
89
  return { success: true, user };
90
90
  }
91
-
91
+
92
92
  private verifyPassword(password: string, hash: string): boolean {
93
93
  // Minimal implementation - just enough to pass test
94
94
  return bcrypt.compareSync(password, hash);
@@ -113,16 +113,16 @@ export class AuthService {
113
113
  private passwordService: PasswordService, // Extract dependency
114
114
  private logger: Logger // Add observability
115
115
  ) {}
116
-
116
+
117
117
  async login(email: string, password: string): Promise<AuthResult> {
118
118
  const user = await this.findUserOrFail(email);
119
119
  await this.validatePasswordOrFail(password, user);
120
-
120
+
121
121
  this.logger.info('User logged in', { userId: user.id });
122
-
122
+
123
123
  return { success: true, user };
124
124
  }
125
-
125
+
126
126
  private async findUserOrFail(email: string): Promise<User> {
127
127
  const user = await this.userRepository.findByEmail(email);
128
128
  if (!user) {
@@ -130,7 +130,7 @@ export class AuthService {
130
130
  }
131
131
  return user;
132
132
  }
133
-
133
+
134
134
  private async validatePasswordOrFail(password: string, user: User): Promise<void> {
135
135
  const isValid = await this.passwordService.verify(password, user.passwordHash);
136
136
  if (!isValid) {
@@ -199,7 +199,7 @@ describe('POST /api/auth/login', () => {
199
199
  const response = await request(app)
200
200
  .post('/api/auth/login')
201
201
  .send({ email: 'user@test.com', password: 'password123' });
202
-
202
+
203
203
  expect(response.status).toBe(200);
204
204
  expect(response.body.token).toBeDefined();
205
205
  });
@@ -211,7 +211,7 @@ describe('POST /api/auth/login', () => {
211
211
  const response = await request(app)
212
212
  .post('/api/auth/login')
213
213
  .send({ email: 'user@test.com', password: 'wrong' });
214
-
214
+
215
215
  expect(response.status).toBe(401);
216
216
  });
217
217
  });
@@ -244,32 +244,32 @@ describe('[ClassName]', () => {
244
244
  // Setup
245
245
  let sut: ClassName; // System Under Test
246
246
  let mockDependency: jest.Mocked<Dependency>;
247
-
247
+
248
248
  beforeEach(() => {
249
249
  mockDependency = {
250
250
  method: jest.fn(),
251
251
  };
252
252
  sut = new ClassName(mockDependency);
253
253
  });
254
-
254
+
255
255
  describe('[methodName]', () => {
256
256
  it('should [expected behavior] when [condition]', () => {
257
257
  // Arrange
258
258
  const input = 'test input';
259
259
  mockDependency.method.mockReturnValue('mocked result');
260
-
260
+
261
261
  // Act
262
262
  const result = sut.methodName(input);
263
-
263
+
264
264
  // Assert
265
265
  expect(result).toBe('expected result');
266
266
  expect(mockDependency.method).toHaveBeenCalledWith(input);
267
267
  });
268
-
268
+
269
269
  it('should throw [ErrorType] when [error condition]', () => {
270
270
  // Arrange
271
271
  const invalidInput = null;
272
-
272
+
273
273
  // Act & Assert
274
274
  expect(() => sut.methodName(invalidInput)).toThrow(ErrorType);
275
275
  });
@@ -284,36 +284,36 @@ describe('[API Endpoint]', () => {
284
284
  // Setup
285
285
  let app: Express;
286
286
  let db: TestDatabase;
287
-
287
+
288
288
  beforeAll(async () => {
289
289
  db = await TestDatabase.create();
290
290
  app = createApp({ database: db });
291
291
  });
292
-
292
+
293
293
  afterAll(async () => {
294
294
  await db.close();
295
295
  });
296
-
296
+
297
297
  beforeEach(async () => {
298
298
  await db.clear();
299
299
  await db.seed();
300
300
  });
301
-
301
+
302
302
  describe('[HTTP Method] [Path]', () => {
303
303
  it('should return [status] when [condition]', async () => {
304
304
  // Arrange
305
305
  const payload = { key: 'value' };
306
-
306
+
307
307
  // Act
308
308
  const response = await request(app)
309
309
  .post('/api/resource')
310
310
  .set('Authorization', `Bearer ${token}`)
311
311
  .send(payload);
312
-
312
+
313
313
  // Assert
314
314
  expect(response.status).toBe(201);
315
315
  expect(response.body.id).toBeDefined();
316
-
316
+
317
317
  // Verify side effects
318
318
  const record = await db.find('resources', response.body.id);
319
319
  expect(record).toBeDefined();
@@ -327,24 +327,28 @@ describe('[API Endpoint]', () => {
327
327
  ## Common Test-First Mistakes
328
328
 
329
329
  ### Mistake 1: Writing Test and Code Together
330
+
330
331
  ```
331
332
  ❌ Creating test and implementation in same commit
332
333
  ✅ Always commit test first, then implementation
333
334
  ```
334
335
 
335
336
  ### Mistake 2: Testing Implementation Details
337
+
336
338
  ```
337
339
  ❌ expect(service.internalCache.size).toBe(1);
338
340
  ✅ expect(service.getData()).toEqual(expectedData);
339
341
  ```
340
342
 
341
343
  ### Mistake 3: Skipping Integration Tests
344
+
342
345
  ```
343
346
  ❌ Only unit tests with mocks
344
347
  ✅ Integration tests first, then unit tests for gaps
345
348
  ```
346
349
 
347
350
  ### Mistake 4: Writing Too Many Tests at Once
351
+
348
352
  ```
349
353
  ❌ Writing 10 tests before any implementation
350
354
  ✅ One test at a time: RED → GREEN → REFACTOR
@@ -355,16 +359,19 @@ describe('[API Endpoint]', () => {
355
359
  ## Test-First Checklist
356
360
 
357
361
  Before implementation:
362
+
358
363
  - [ ] Test file created before source file
359
364
  - [ ] Test describes expected behavior
360
365
  - [ ] Test is failing (RED)
361
366
 
362
367
  During implementation:
368
+
363
369
  - [ ] Minimal code written to pass test
364
370
  - [ ] Test is passing (GREEN)
365
371
  - [ ] No code without corresponding test
366
372
 
367
373
  After implementation:
374
+
368
375
  - [ ] Code refactored for quality
369
376
  - [ ] Tests still passing
370
377
  - [ ] Test committed before source in git history
@@ -63,6 +63,7 @@ musubi-remember clear
63
63
  ```
64
64
 
65
65
  **ユースケース**:
66
+
66
67
  - セッション終了時の学習抽出・保存
67
68
  - チームメンバー間のナレッジ共有
68
69
  - プロジェクト間のベストプラクティス移植
@@ -11,6 +11,7 @@ This document defines the rules for automatically detecting when steering files
11
11
  ### 1. New Dependencies Added
12
12
 
13
13
  **Detection**:
14
+
14
15
  ```bash
15
16
  # package.json changes (Node.js)
16
17
  git diff --name-only | grep -E "(package\.json|package-lock\.json)"
@@ -25,8 +26,10 @@ git diff --name-only | grep -E "go\.(mod|sum)"
25
26
  **Action**: Update `steering/tech.md` with new dependencies
26
27
 
27
28
  **Example**:
29
+
28
30
  ```markdown
29
31
  # Add to tech.md Dependencies section
32
+
30
33
  - **New**: express@4.18.0 (Web framework)
31
34
  - **New**: jest@29.0.0 (Testing framework)
32
35
  ```
@@ -36,6 +39,7 @@ git diff --name-only | grep -E "go\.(mod|sum)"
36
39
  ### 2. New Directory Structure Created
37
40
 
38
41
  **Detection**:
42
+
39
43
  ```bash
40
44
  # New directories created
41
45
  git diff --name-only --diff-filter=A | grep "/" | cut -d'/' -f1 | sort -u
@@ -44,6 +48,7 @@ git diff --name-only --diff-filter=A | grep "/" | cut -d'/' -f1 | sort -u
44
48
  **Action**: Update `steering/structure.md` with new directories
45
49
 
46
50
  **Patterns to Watch**:
51
+
47
52
  - `src/` - Source code organization
48
53
  - `lib/` - Library modules (Constitutional Article I)
49
54
  - `tests/` - Test organization
@@ -55,6 +60,7 @@ git diff --name-only --diff-filter=A | grep "/" | cut -d'/' -f1 | sort -u
55
60
  ### 3. Architecture Pattern Changes
56
61
 
57
62
  **Detection**:
63
+
58
64
  ```bash
59
65
  # Major architectural changes
60
66
  git diff --name-only | grep -E "(src/.*index\.(ts|js|py)|main\.(ts|js|py))"
@@ -66,9 +72,12 @@ find src -type d -maxdepth 2 -newer .git/COMMIT_EDITMSG
66
72
  **Action**: Update `steering/structure.md` with pattern changes
67
73
 
68
74
  **Example**:
75
+
69
76
  ```markdown
70
77
  # Update Architecture Patterns section
78
+
71
79
  ## Detected Pattern: Microservices
80
+
72
81
  - services/auth/
73
82
  - services/user/
74
83
  - services/order/
@@ -79,6 +88,7 @@ find src -type d -maxdepth 2 -newer .git/COMMIT_EDITMSG
79
88
  ### 4. Technology Stack Updates
80
89
 
81
90
  **Detection**:
91
+
82
92
  ```bash
83
93
  # Framework version updates
84
94
  git diff package.json | grep -E '"(react|vue|angular|express|fastapi)"'
@@ -94,6 +104,7 @@ git diff --name-only | grep -E "(webpack|vite|rollup|esbuild)\.config\."
94
104
  ### 5. New Feature Implementation
95
105
 
96
106
  **Detection**:
107
+
97
108
  ```bash
98
109
  # New feature directories
99
110
  git diff --name-only --diff-filter=A | grep "storage/features/"
@@ -146,9 +157,12 @@ git diff --name-only --diff-filter=A | grep "requirements\.md"
146
157
  **Trigger**: New ADR created in `storage/features/*/design.md`
147
158
 
148
159
  **Action**:
160
+
149
161
  ```markdown
150
162
  # Append to architecture_decisions.md
163
+
151
164
  ## ADR-XXX: [Decision Title]
165
+
152
166
  - **Date**: YYYY-MM-DD
153
167
  - **Status**: Accepted
154
168
  - **Context**: [Extracted from ADR]
@@ -160,9 +174,12 @@ git diff --name-only --diff-filter=A | grep "requirements\.md"
160
174
  **Trigger**: New CI/CD config or build scripts added
161
175
 
162
176
  **Action**:
177
+
163
178
  ```markdown
164
179
  # Update development_workflow.md
180
+
165
181
  ## Build Process
182
+
166
183
  - npm run build (detected from package.json)
167
184
  - npm test (detected from package.json)
168
185
  ```
@@ -172,9 +189,12 @@ git diff --name-only --diff-filter=A | grep "requirements\.md"
172
189
  **Trigger**: New business logic files or domain models
173
190
 
174
191
  **Action**:
192
+
175
193
  ```markdown
176
194
  # Update domain_knowledge.md
195
+
177
196
  ## Core Concepts
197
+
178
198
  - User: Represents system users (src/models/user.ts)
179
199
  - Order: Purchase transaction (src/models/order.ts)
180
200
  ```
@@ -184,9 +204,12 @@ git diff --name-only --diff-filter=A | grep "requirements\.md"
184
204
  **Trigger**: New CLI commands or scripts added
185
205
 
186
206
  **Action**:
207
+
187
208
  ```markdown
188
209
  # Update suggested_commands.md
210
+
189
211
  ## Development Commands
212
+
190
213
  - `npm run dev` - Start development server
191
214
  - `npm run test:watch` - Run tests in watch mode
192
215
  ```
@@ -196,9 +219,12 @@ git diff --name-only --diff-filter=A | grep "requirements\.md"
196
219
  **Trigger**: Post-mortem or retrospective files created
197
220
 
198
221
  **Action**:
222
+
199
223
  ```markdown
200
224
  # Append to lessons_learned.md
225
+
201
226
  ## [Date]: [Lesson Title]
227
+
202
228
  - **Context**: [What happened]
203
229
  - **Insight**: [What we learned]
204
230
  - **Action**: [What we changed]
@@ -231,17 +257,21 @@ diff <(grep "Feature" steering/product.md) <(ls storage/features/)
231
257
  ## Detected Issues
232
258
 
233
259
  ### tech.md
260
+
234
261
  - ⚠️ Missing: express@4.18.0 (added in package.json)
235
262
  - ⚠️ Outdated: react@17.0.0 → react@18.2.0
236
263
 
237
264
  ### structure.md
265
+
238
266
  - ⚠️ Missing directory: src/services/payment/
239
267
  - ⚠️ Removed directory: src/legacy/ (no longer exists)
240
268
 
241
269
  ### product.md
270
+
242
271
  - ⚠️ Missing feature: payment-integration (in storage/features/)
243
272
 
244
273
  ## Recommendations
274
+
245
275
  1. Run steering skill to update all files
246
276
  2. Review changes before committing
247
277
  ```
@@ -253,6 +283,7 @@ diff <(grep "Feature" steering/product.md) <(ls storage/features/)
253
283
  ### Git Hooks Integration
254
284
 
255
285
  **pre-commit hook**:
286
+
256
287
  ```bash
257
288
  #!/bin/bash
258
289
  # Check if steering files need update
@@ -34,24 +34,29 @@ We will...
34
34
  ## Consequences
35
35
 
36
36
  ### Positive
37
+
37
38
  - [Benefit 1]
38
39
  - [Benefit 2]
39
40
 
40
41
  ### Negative
42
+
41
43
  - [Tradeoff 1]
42
44
  - [Tradeoff 2]
43
45
 
44
46
  ### Neutral
47
+
45
48
  - [Neither positive nor negative consequence]
46
49
 
47
50
  ## Alternatives Considered
48
51
 
49
52
  ### Alternative 1: [Name]
53
+
50
54
  - **Pros**: [Benefits]
51
55
  - **Cons**: [Drawbacks]
52
56
  - **Reason for rejection**: [Why not chosen]
53
57
 
54
58
  ### Alternative 2: [Name]
59
+
55
60
  - **Pros**: [Benefits]
56
61
  - **Cons**: [Drawbacks]
57
62
  - **Reason for rejection**: [Why not chosen]
@@ -81,6 +86,7 @@ Accepted
81
86
  ## Context
82
87
 
83
88
  We need to choose a primary database for our e-commerce platform. The system needs to:
89
+
84
90
  - Handle complex relational data (users, orders, products)
85
91
  - Support ACID transactions for payment processing
86
92
  - Scale to 10,000+ concurrent users
@@ -93,6 +99,7 @@ Our team has experience with both PostgreSQL and MySQL. The project has 12 month
93
99
  We will use **PostgreSQL 16** as our primary database.
94
100
 
95
101
  Specific configuration:
102
+
96
103
  - Managed PostgreSQL on AWS RDS
97
104
  - Primary-replica setup for read scaling
98
105
  - pg_trgm extension for full-text search
@@ -101,6 +108,7 @@ Specific configuration:
101
108
  ## Consequences
102
109
 
103
110
  ### Positive
111
+
104
112
  - Rich feature set (JSON, full-text search, extensions)
105
113
  - Strong ACID compliance for financial transactions
106
114
  - Excellent open-source community support
@@ -108,27 +116,32 @@ Specific configuration:
108
116
  - Cost-effective (open source)
109
117
 
110
118
  ### Negative
119
+
111
120
  - More complex configuration than MySQL
112
121
  - Requires dedicated DBA knowledge for optimization
113
122
  - Memory-intensive for complex queries
114
123
 
115
124
  ### Neutral
125
+
116
126
  - Similar performance to MySQL for our use case
117
127
  - Learning curve for advanced features (CTEs, window functions)
118
128
 
119
129
  ## Alternatives Considered
120
130
 
121
131
  ### Alternative 1: MySQL 8.0
132
+
122
133
  - **Pros**: Simpler setup, lower memory footprint, wide hosting support
123
134
  - **Cons**: Weaker JSON support, limited extensions
124
135
  - **Reason for rejection**: PostgreSQL's richer feature set better suits complex e-commerce queries
125
136
 
126
137
  ### Alternative 2: MongoDB
138
+
127
139
  - **Pros**: Flexible schema, horizontal scaling, JSON-native
128
140
  - **Cons**: Weak transactions, eventual consistency concerns for payments
129
141
  - **Reason for rejection**: ACID transactions required for financial operations
130
142
 
131
143
  ### Alternative 3: CockroachDB
144
+
132
145
  - **Pros**: Distributed, PostgreSQL-compatible, auto-scaling
133
146
  - **Cons**: Higher cost, newer technology, fewer DBAs available
134
147
  - **Reason for rejection**: Overkill for initial scale, can migrate later if needed
@@ -145,30 +158,35 @@ Specific configuration:
145
158
  ## ADR Categories
146
159
 
147
160
  ### Technology Selection
161
+
148
162
  - Database choice
149
163
  - Framework selection
150
164
  - Cloud provider
151
165
  - Third-party services
152
166
 
153
167
  ### Architecture Patterns
168
+
154
169
  - Microservices vs. Monolith
155
170
  - Event-driven architecture
156
171
  - API design (REST vs. GraphQL)
157
172
  - Caching strategy
158
173
 
159
174
  ### Development Practices
175
+
160
176
  - Testing strategy
161
177
  - CI/CD approach
162
178
  - Code organization
163
179
  - Dependency management
164
180
 
165
181
  ### Security
182
+
166
183
  - Authentication method
167
184
  - Authorization model
168
185
  - Data encryption
169
186
  - Secret management
170
187
 
171
188
  ### Performance
189
+
172
190
  - Scaling strategy
173
191
  - Caching layers
174
192
  - Database optimization
@@ -274,17 +292,17 @@ docs/
274
292
 
275
293
  ## Active ADRs
276
294
 
277
- | ADR | Title | Date | Status |
278
- |-----|-------|------|--------|
295
+ | ADR | Title | Date | Status |
296
+ | ------------------------------ | ---------------------------------- | ---------- | -------- |
279
297
  | [ADR-001](ADR-001-database.md) | Use PostgreSQL as Primary Database | 2025-01-15 | Accepted |
280
- | [ADR-002](ADR-002-caching.md) | Use Redis for Caching | 2025-01-16 | Accepted |
281
- | [ADR-003](ADR-003-auth.md) | Use JWT for Authentication | 2025-01-17 | Accepted |
298
+ | [ADR-002](ADR-002-caching.md) | Use Redis for Caching | 2025-01-16 | Accepted |
299
+ | [ADR-003](ADR-003-auth.md) | Use JWT for Authentication | 2025-01-17 | Accepted |
282
300
 
283
301
  ## Superseded ADRs
284
302
 
285
- | ADR | Title | Superseded By |
286
- |-----|-------|---------------|
287
- | [ADR-004](ADR-004-old-api.md) | REST API v1 Design | ADR-010 |
303
+ | ADR | Title | Superseded By |
304
+ | ----------------------------- | ------------------ | ------------- |
305
+ | [ADR-004](ADR-004-old-api.md) | REST API v1 Design | ADR-010 |
288
306
 
289
307
  ## How to Propose a New ADR
290
308