musubix2 0.2.0 → 0.3.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.
- package/.github/copilot-instructions.md +155 -0
- package/.github/skills/code-generator/SKILL.md +136 -0
- package/.github/skills/constitution-enforcer/SKILL.md +127 -0
- package/.github/skills/design-generator/SKILL.md +127 -0
- package/.github/skills/orchestrator/SKILL.md +489 -0
- package/.github/skills/requirements-analyst/SKILL.md +151 -0
- package/.github/skills/review-orchestrator/SKILL.md +156 -0
- package/.github/skills/review-orchestrator/review-orchestrator.prompt.md +45 -0
- package/.github/skills/test-engineer/SKILL.md +133 -0
- package/.github/skills/traceability-auditor/SKILL.md +109 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11950 -991
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12072 -36
- package/dist/index.js.map +1 -1
- package/package.json +9 -20
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# MUSUBIX2 — Specification Driven Development System
|
|
2
|
+
|
|
3
|
+
## プロジェクト概要
|
|
4
|
+
|
|
5
|
+
MUSUBIX2 はニューロシンボリック AI コーディングシステムの SDD(Specification Driven Development)基盤である。
|
|
6
|
+
TypeScript / Node.js 20+ / ESM のモノレポ構成で、25 パッケージを npm workspaces で管理する。
|
|
7
|
+
|
|
8
|
+
## アーキテクチャ原則
|
|
9
|
+
|
|
10
|
+
| 原則 | 説明 |
|
|
11
|
+
|------|------|
|
|
12
|
+
| **ライブラリファースト** | 各機能を独立パッケージとして設計。アプリ依存を排除 |
|
|
13
|
+
| **CLIファースト** | 全機能に Commander.js ベースの CLI インターフェースを提供 |
|
|
14
|
+
| **テストファースト** | Red→Green→Blue サイクル。Vitest カバレッジ 80% 以上 |
|
|
15
|
+
| **関心の分離** | 4層: Domain / Application / Infrastructure / Interface |
|
|
16
|
+
| **依存性逆転** | インターフェースによる抽象化。具象への直接依存を禁止 |
|
|
17
|
+
| **Git Native** | 全永続化データを JSON / YAML / Markdown 形式で保存 |
|
|
18
|
+
|
|
19
|
+
## 9条憲法(不可侵)
|
|
20
|
+
|
|
21
|
+
| 条項 | 原則 | 検証手段 |
|
|
22
|
+
|------|------|----------|
|
|
23
|
+
| Article I | ライブラリファースト | constitution-enforcer |
|
|
24
|
+
| Article II | CLI インターフェース | constitution-enforcer |
|
|
25
|
+
| Article III | テストファースト | test-engineer |
|
|
26
|
+
| Article IV | EARS 形式 | requirements-analyst |
|
|
27
|
+
| Article V | トレーサビリティ | traceability-auditor |
|
|
28
|
+
| Article VI | プロジェクトメモリ | steering/ 参照 |
|
|
29
|
+
| Article VII | デザインパターン文書化 | design-generator |
|
|
30
|
+
| Article VIII | ADR 記録 | design-generator |
|
|
31
|
+
| Article IX | 品質ゲート | test-engineer |
|
|
32
|
+
|
|
33
|
+
## SDD ワークフロー(5フェーズ)
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Phase 1: Requirements → Phase 2: Design → Phase 3: Tasks → Phase 4: Implementation → Phase 5: Complete
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- **Phase 遷移には前フェーズの承認が必須**(REQ-SDD-002a/b/c)
|
|
40
|
+
- 各 Phase で品質ゲートを通過すること(REQ-SDD-003)
|
|
41
|
+
|
|
42
|
+
## ディレクトリ構成
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
src/
|
|
46
|
+
├── packages/
|
|
47
|
+
│ ├── core/ # @nahisaho/musubix-core
|
|
48
|
+
│ ├── knowledge/ # @musubix/knowledge
|
|
49
|
+
│ ├── decisions/ # @musubix/decisions
|
|
50
|
+
│ ├── policy/ # @musubix/policy
|
|
51
|
+
│ ├── codegraph/ # @nahisaho/musubix-codegraph
|
|
52
|
+
│ ├── dfg/ # @nahisaho/musubix-dfg
|
|
53
|
+
│ ├── formal-verify/ # @nahisaho/musubix-formal-verify
|
|
54
|
+
│ ├── lean/ # @nahisaho/musubix-lean
|
|
55
|
+
│ ├── security/ # @nahisaho/musubix-security
|
|
56
|
+
│ ├── workflow-engine/ # @nahisaho/musubix-workflow-engine
|
|
57
|
+
│ ├── skill-manager/ # @nahisaho/musubix-skill-manager
|
|
58
|
+
│ ├── agent-orchestrator/ # @nahisaho/musubix-agent-orchestrator
|
|
59
|
+
│ ├── expert-delegation/ # @nahisaho/musubix-expert-delegation
|
|
60
|
+
│ ├── assistant-axis/ # @nahisaho/musubix-assistant-axis
|
|
61
|
+
│ ├── mcp-server/ # @nahisaho/musubix-mcp-server
|
|
62
|
+
│ ├── sdd-ontology/ # @nahisaho/musubix-sdd-ontology
|
|
63
|
+
│ ├── ontology-mcp/ # @nahisaho/musubix-ontology-mcp
|
|
64
|
+
│ ├── neural-search/ # @nahisaho/musubix-neural-search
|
|
65
|
+
│ ├── wake-sleep/ # @nahisaho/musubix-wake-sleep
|
|
66
|
+
│ ├── library-learner/ # @nahisaho/musubix-library-learner
|
|
67
|
+
│ ├── synthesis/ # @nahisaho/musubix-synthesis
|
|
68
|
+
│ ├── pattern-mcp/ # @nahisaho/musubix-pattern-mcp
|
|
69
|
+
│ ├── deep-research/ # @nahisaho/musubix-deep-research
|
|
70
|
+
│ ├── musubi/ # @nahisaho/musubi
|
|
71
|
+
│ └── musubix/ # musubix (umbrella)
|
|
72
|
+
├── steering/
|
|
73
|
+
│ ├── product.ja.md
|
|
74
|
+
│ ├── structure.ja.md
|
|
75
|
+
│ ├── tech.ja.md
|
|
76
|
+
│ ├── rules/constitution.md
|
|
77
|
+
│ └── project.yml
|
|
78
|
+
├── .github/
|
|
79
|
+
│ ├── copilot-instructions.md
|
|
80
|
+
│ └── skills/
|
|
81
|
+
├── docker/
|
|
82
|
+
├── virtual-projects/
|
|
83
|
+
└── testing/
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## パッケージ内部構成(4層)
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
packages/<name>/
|
|
90
|
+
├── src/
|
|
91
|
+
│ ├── domain/ # ドメインモデル、インターフェース
|
|
92
|
+
│ ├── application/ # ユースケース、サービス
|
|
93
|
+
│ ├── infrastructure/ # 外部アダプター、ファイルI/O
|
|
94
|
+
│ └── interface/
|
|
95
|
+
│ └── cli/ # Commander.js コマンド
|
|
96
|
+
├── tests/
|
|
97
|
+
├── package.json
|
|
98
|
+
└── tsconfig.json
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## コーディング規約
|
|
102
|
+
|
|
103
|
+
- **言語**: TypeScript 5.3+ / ESM (`type: "module"`)
|
|
104
|
+
- **ビルド**: `tsc -b` インクリメンタルビルド
|
|
105
|
+
- **テスト**: Vitest
|
|
106
|
+
- **リンター**: ESLint
|
|
107
|
+
- **CLI**: Commander.js, `registerXCommand(program)` パターン
|
|
108
|
+
- **エラー**: `ActionableError` + `GracefulDegradation`(CircuitBreaker, retryWithBackoff)
|
|
109
|
+
- **リポジトリ**: `IRepository` / `ISearchableRepository` / `IPaginatedRepository`
|
|
110
|
+
- **ファクトリ**: `createInMemoryRepository` 等
|
|
111
|
+
|
|
112
|
+
## EARS 要件構文
|
|
113
|
+
|
|
114
|
+
全要件は EARS(Easy Approach to Requirements Syntax)形式で記述する:
|
|
115
|
+
|
|
116
|
+
| パターン | 構文 |
|
|
117
|
+
|----------|------|
|
|
118
|
+
| UBIQUITOUS | THE システム SHALL... |
|
|
119
|
+
| EVENT-DRIVEN | WHEN \<event\>, THE システム SHALL... |
|
|
120
|
+
| STATE-DRIVEN | WHILE \<state\>, THE システム SHALL... |
|
|
121
|
+
| UNWANTED | THE システム SHALL NOT... |
|
|
122
|
+
| OPTIONAL | WHERE \<feature\>, THE システム SHALL... |
|
|
123
|
+
| COMPLEX | IF \<condition\>, THEN THE システム SHALL... |
|
|
124
|
+
|
|
125
|
+
## 仕様文書
|
|
126
|
+
|
|
127
|
+
- **要件定義書**: `references/musubix2/REQ-MUSUBIX2-001.md` (v1.5, 69 要件)
|
|
128
|
+
- **設計書**: `references/musubix2/DES-MUSUBIX2-001.md` (v1.5, 69 DES 仕様)
|
|
129
|
+
- **実装計画**: `references/musubix2/PLAN-MUSUBIX2-001.md` (77 タスク, 8 フェーズ)
|
|
130
|
+
|
|
131
|
+
## オーケストレーション
|
|
132
|
+
|
|
133
|
+
SDD ワークフローのルーティングとフェーズ管理は `skills/orchestrator/SKILL.md` を参照。
|
|
134
|
+
全スキル一覧と起動条件はそこに定義されている。
|
|
135
|
+
|
|
136
|
+
## Review Orchestration (Cross-Model Review)
|
|
137
|
+
|
|
138
|
+
SDD アーティファクトの品質保証には `review-orchestrator` スキルを使用する。
|
|
139
|
+
詳細は `skills/review-orchestrator/SKILL.md` を参照。
|
|
140
|
+
|
|
141
|
+
1. **交互レビュー**: opus-4.6 → gpt-5.4 → opus-4.6 → ... (エラー0まで)
|
|
142
|
+
2. **最終合意**: 両モデルが同時にPASSすること
|
|
143
|
+
3. **実装許可**: requirements, design, plan 全てが承認済みであること
|
|
144
|
+
|
|
145
|
+
`ReviewOrchestrator` クラス(`@musubix2/agent-orchestrator` パッケージ)が
|
|
146
|
+
レビュープロセスのオーケストレーションを担当する。
|
|
147
|
+
|
|
148
|
+
## Steering 参照ルール
|
|
149
|
+
|
|
150
|
+
全スキル実行前に `steering/` を参照すること:
|
|
151
|
+
- `product.ja.md` — プロダクトコンテキスト
|
|
152
|
+
- `structure.ja.md` — アーキテクチャパターン
|
|
153
|
+
- `tech.ja.md` — 技術スタック
|
|
154
|
+
- `rules/constitution.md` — 9条憲法
|
|
155
|
+
- `project.yml` — プロジェクト設定
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-generator
|
|
3
|
+
description: >
|
|
4
|
+
設計仕様からテンプレートベースのコード生成、ドメインスキャフォールド、
|
|
5
|
+
静的解析、ステータス遷移分析を実行する。4層アーキテクチャ準拠。
|
|
6
|
+
Use when generating code from design specs, scaffolding domain packages,
|
|
7
|
+
running static analysis, or starting SDD Phase 4 implementation.
|
|
8
|
+
license: MIT
|
|
9
|
+
version: "1.0.0"
|
|
10
|
+
triggers:
|
|
11
|
+
- コード生成
|
|
12
|
+
- スキャフォールド
|
|
13
|
+
- 静的解析
|
|
14
|
+
- Phase 4 開始
|
|
15
|
+
- codegen
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Code Generator
|
|
19
|
+
|
|
20
|
+
設計仕様から 4層アーキテクチャ準拠のコードを生成するスキル。
|
|
21
|
+
SDD ワークフロー Phase 4(Implementation)の中核。
|
|
22
|
+
|
|
23
|
+
## 前提条件
|
|
24
|
+
|
|
25
|
+
- Phase 3(Tasks)が承認済みであること
|
|
26
|
+
- `steering/` を参照済みであること
|
|
27
|
+
- 設計文書(`storage/specs/DES-*.md`)が存在すること
|
|
28
|
+
|
|
29
|
+
## ワークフロー
|
|
30
|
+
|
|
31
|
+
### 1. コード生成
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
WHEN ユーザーがコード生成を要求する:
|
|
35
|
+
1. DES 仕様から TypeScript インターフェースを抽出
|
|
36
|
+
2. CodeGenerator.generate() でテンプレートベース生成
|
|
37
|
+
3. 4層構成で出力:
|
|
38
|
+
- domain/ → インターフェース、エンティティ、値オブジェクト
|
|
39
|
+
- application/ → ユースケース、サービス
|
|
40
|
+
- infrastructure/ → アダプター、ファイル I/O
|
|
41
|
+
- interface/cli/ → Commander.js コマンド
|
|
42
|
+
4. EARS 要件 ID をコメントとしてリンク
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**CLI**: `npx musubix codegen generate <design-file>`
|
|
46
|
+
|
|
47
|
+
### 2. ドメインスキャフォールド
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
WHEN ユーザーが新規パッケージのスキャフォールドを要求する:
|
|
51
|
+
1. ScaffoldGenerator で3モードから選択:
|
|
52
|
+
- minimal: domain/ + tests/ のみ
|
|
53
|
+
- standard: 4層 + package.json + tsconfig.json
|
|
54
|
+
- full: standard + CLI + README + CHANGELOG
|
|
55
|
+
2. ディレクトリ構造を生成
|
|
56
|
+
3. package.json に workspace 参照を追加
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**CLI**: `npx musubix codegen scaffold <package-name> [--mode minimal|standard|full]`
|
|
60
|
+
|
|
61
|
+
### 3. 静的解析
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
WHEN ユーザーが静的解析を要求する:
|
|
65
|
+
1. StaticAnalyzer で複雑度・結合度を計測
|
|
66
|
+
2. QualityMetricsCalculator でメトリクスを算出
|
|
67
|
+
3. codegraph の ASTParser と連携
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**CLI**: `npx musubix codegen analyze <path>`
|
|
71
|
+
|
|
72
|
+
### 4. ステータス遷移分析
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
WHEN ユーザーがステータス遷移の分析を要求する:
|
|
76
|
+
1. StatusTransitionGenerator でドメインモデルの状態遷移を抽出
|
|
77
|
+
2. 状態遷移図(Mermaid stateDiagram)を生成
|
|
78
|
+
3. 不正遷移の検出
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**CLI**: `npx musubix codegen status <entity>`
|
|
82
|
+
|
|
83
|
+
## パッケージ構成テンプレート
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
packages/<name>/
|
|
87
|
+
├── src/
|
|
88
|
+
│ ├── domain/
|
|
89
|
+
│ │ ├── entities/
|
|
90
|
+
│ │ ├── value-objects/
|
|
91
|
+
│ │ └── interfaces/
|
|
92
|
+
│ ├── application/
|
|
93
|
+
│ │ └── services/
|
|
94
|
+
│ ├── infrastructure/
|
|
95
|
+
│ │ └── adapters/
|
|
96
|
+
│ └── interface/
|
|
97
|
+
│ └── cli/
|
|
98
|
+
│ └── commands.ts # registerXCommand(program)
|
|
99
|
+
├── tests/
|
|
100
|
+
│ ├── domain/
|
|
101
|
+
│ ├── application/
|
|
102
|
+
│ └── integration/
|
|
103
|
+
├── package.json
|
|
104
|
+
├── tsconfig.json
|
|
105
|
+
└── README.md
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## CLI コマンド登録パターン
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
import { Command } from 'commander';
|
|
112
|
+
|
|
113
|
+
export function registerXCommand(program: Command): void {
|
|
114
|
+
const cmd = program.command('x');
|
|
115
|
+
cmd.command('subcommand')
|
|
116
|
+
.description('...')
|
|
117
|
+
.option('--flag <value>', '...')
|
|
118
|
+
.action(async (options) => {
|
|
119
|
+
// implementation
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 品質ゲート
|
|
125
|
+
|
|
126
|
+
- [ ] 生成コードが `tsc --noEmit` でエラーなし
|
|
127
|
+
- [ ] 4層アーキテクチャに準拠(domain が infrastructure に依存しない)
|
|
128
|
+
- [ ] CLI コマンドが `registerXCommand` パターンに従う
|
|
129
|
+
- [ ] EARS 要件 ID がコード内コメントにリンク
|
|
130
|
+
- [ ] package.json の依存が workspace プロトコルを使用
|
|
131
|
+
|
|
132
|
+
## Gotchas
|
|
133
|
+
|
|
134
|
+
1. **ESM 必須**: `type: "module"` を package.json に設定。`import` 文に `.js` 拡張子を付けること(TypeScript でもビルド後のパスを指定)。
|
|
135
|
+
2. **依存性逆転の徹底**: `domain/` 内で `infrastructure/` の具象クラスを import してはならない。必ずインターフェースを経由。
|
|
136
|
+
3. **ActionableError の使用**: 標準 Error ではなく `ActionableError` を使用し、ユーザーへの修正提案を含める。
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: constitution-enforcer
|
|
3
|
+
description: >
|
|
4
|
+
MUSUBIX2 の9条憲法(CONST-001〜009)への準拠を検証する。
|
|
5
|
+
PolicyEngine による自動チェック、NonNegotiablesEngine による違反ブロック、
|
|
6
|
+
BalanceRuleEngine による 90/10 ルール適用を提供。
|
|
7
|
+
Use when validating constitution compliance, checking policy violations,
|
|
8
|
+
running governance audits, or blocking non-compliant changes.
|
|
9
|
+
license: MIT
|
|
10
|
+
version: "1.0.0"
|
|
11
|
+
triggers:
|
|
12
|
+
- 憲法チェック
|
|
13
|
+
- ポリシー検証
|
|
14
|
+
- constitution
|
|
15
|
+
- ガバナンス
|
|
16
|
+
- 品質ゲート
|
|
17
|
+
- policy
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Constitution Enforcer
|
|
21
|
+
|
|
22
|
+
MUSUBIX2 の9条憲法(CONST-001〜009)への準拠を検証するスキル。
|
|
23
|
+
全 Article の不可侵性を保証し、違反を即時ブロックする。
|
|
24
|
+
|
|
25
|
+
## 前提条件
|
|
26
|
+
|
|
27
|
+
- `steering/rules/constitution.md` が存在すること
|
|
28
|
+
- `steering/project.yml` が存在すること
|
|
29
|
+
|
|
30
|
+
## 9条憲法
|
|
31
|
+
|
|
32
|
+
| 条項 | ポリシーID | 原則 | 検証内容 |
|
|
33
|
+
|------|-----------|------|----------|
|
|
34
|
+
| Article I | CONST-001 | ライブラリファースト | パッケージが独立して利用可能か |
|
|
35
|
+
| Article II | CONST-002 | CLI インターフェース | 全機能に CLI が提供されているか |
|
|
36
|
+
| Article III | CONST-003 | テストファースト | テストが先に書かれているか |
|
|
37
|
+
| Article IV | CONST-004 | EARS 形式 | 全要件が EARS 構文に準拠しているか |
|
|
38
|
+
| Article V | CONST-005 | トレーサビリティ | REQ↔DES↔Code↔Test の 100% 追跡 |
|
|
39
|
+
| Article VI | CONST-006 | プロジェクトメモリ | steering/ が参照されているか |
|
|
40
|
+
| Article VII | CONST-007 | デザインパターン文書化 | パターン使用時に文書化されているか |
|
|
41
|
+
| Article VIII | CONST-008 | ADR 記録 | 重要な設計決定に ADR があるか |
|
|
42
|
+
| Article IX | CONST-009 | 品質ゲート | Phase 遷移時にゲートを通過しているか |
|
|
43
|
+
|
|
44
|
+
## ワークフロー
|
|
45
|
+
|
|
46
|
+
### 1. 全条項チェック
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
WHEN ユーザーがポリシー検証を要求する:
|
|
50
|
+
1. PolicyEngine で全9条を順次検証
|
|
51
|
+
2. NonNegotiablesEngine で違反をブロック
|
|
52
|
+
3. 各条項の PASS/FAIL と詳細理由を出力
|
|
53
|
+
4. 違反がある場合、修正提案を生成
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**CLI**: `npx musubix policy validate`
|
|
57
|
+
|
|
58
|
+
### 2. 個別条項チェック
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
WHEN ユーザーが特定条項の検証を要求する:
|
|
62
|
+
1. PolicyEngine で指定条項のみ検証
|
|
63
|
+
2. 詳細レポートを出力
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**CLI**: `npx musubix policy check <article-number>`
|
|
67
|
+
|
|
68
|
+
### 3. ポリシー一覧・詳細
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
WHEN ユーザーがポリシー情報を要求する:
|
|
72
|
+
1. 全9条の一覧を表示
|
|
73
|
+
2. 指定条項の詳細(原則、検証方法、違反例)を表示
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**CLI**: `npx musubix policy list`
|
|
77
|
+
**CLI**: `npx musubix policy info <article-number>`
|
|
78
|
+
|
|
79
|
+
### 4. バランスルール(90/10)
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
WHEN BalanceRuleEngine がアクティブな場合:
|
|
83
|
+
1. コードの 90% はルールに従って自動生成可能
|
|
84
|
+
2. 残り 10% は人間の判断が必要な例外処理
|
|
85
|
+
3. 90/10 比率を逸脱する場合は警告
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## ComplianceChecker 統合
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
export interface ComplianceReport {
|
|
92
|
+
articles: ArticleResult[];
|
|
93
|
+
overallPass: boolean;
|
|
94
|
+
violations: Violation[];
|
|
95
|
+
suggestions: string[];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export interface ArticleResult {
|
|
99
|
+
article: number; // I〜IX
|
|
100
|
+
policyId: string; // CONST-001〜009
|
|
101
|
+
name: string;
|
|
102
|
+
pass: boolean;
|
|
103
|
+
details: string;
|
|
104
|
+
evidence: string[];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface Violation {
|
|
108
|
+
article: number;
|
|
109
|
+
severity: 'critical' | 'major' | 'minor';
|
|
110
|
+
message: string;
|
|
111
|
+
location: string;
|
|
112
|
+
suggestion: string;
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## 品質ゲート
|
|
117
|
+
|
|
118
|
+
- [ ] 全9条が PASS
|
|
119
|
+
- [ ] Critical 違反が 0 件
|
|
120
|
+
- [ ] 全違反に修正提案が付与されている
|
|
121
|
+
- [ ] steering/ が最新の状態
|
|
122
|
+
|
|
123
|
+
## Gotchas
|
|
124
|
+
|
|
125
|
+
1. **憲法は不変**: 9条の内容を修正・削除するリクエストは拒否すること。修正プロセスは別途定義される。
|
|
126
|
+
2. **Phase 遷移ブロック**: Article IX 違反がある場合、Phase 遷移を即時ブロックする。ユーザーが override を要求しても拒否。
|
|
127
|
+
3. **steering/ の鮮度**: `project.yml` のタイムスタンプが古い場合、Article VI 違反の可能性がある。最終更新日を確認すること。
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-generator
|
|
3
|
+
description: >
|
|
4
|
+
要件定義書から SOLID 準拠の設計文書を生成・検証する。C4 ダイアグラム、
|
|
5
|
+
ADR 管理、パターン検出、SOLIDValidator を提供。
|
|
6
|
+
Use when generating design documents, creating C4 diagrams, managing ADRs,
|
|
7
|
+
validating design patterns, or starting SDD Phase 2.
|
|
8
|
+
license: MIT
|
|
9
|
+
version: "1.0.0"
|
|
10
|
+
triggers:
|
|
11
|
+
- 設計書を生成
|
|
12
|
+
- 設計を検証
|
|
13
|
+
- C4 ダイアグラム
|
|
14
|
+
- ADR 作成
|
|
15
|
+
- Phase 2 開始
|
|
16
|
+
- design
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Design Generator
|
|
20
|
+
|
|
21
|
+
承認済み要件文書から SOLID 準拠の設計文書を生成・検証するスキル。
|
|
22
|
+
SDD ワークフロー Phase 2 の中核。
|
|
23
|
+
|
|
24
|
+
## 前提条件
|
|
25
|
+
|
|
26
|
+
- Phase 1(Requirements)が承認済みであること
|
|
27
|
+
- `steering/` を参照済みであること
|
|
28
|
+
- 要件文書(`storage/specs/REQ-*.md`)が存在すること
|
|
29
|
+
|
|
30
|
+
## ワークフロー
|
|
31
|
+
|
|
32
|
+
### 1. 設計文書生成
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
WHEN ユーザーが設計文書の生成を要求する:
|
|
36
|
+
1. 要件文書を読み込み(ParsedRequirement[])
|
|
37
|
+
2. DesignGenerator.generate() で設計文書を生成
|
|
38
|
+
3. SOLIDValidator で SRP/OCP/LSP/ISP/DIP 準拠を検証
|
|
39
|
+
4. 各 DES にトレーサビリティリンクを付与
|
|
40
|
+
5. ユーザーレビュー ⏸️
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**CLI**: `npx musubix design generate <req-file>`
|
|
44
|
+
|
|
45
|
+
### 2. C4 ダイアグラム生成
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
WHEN ユーザーが C4 ダイアグラムの生成を要求する:
|
|
49
|
+
1. C4Element と C4Relationship を抽出
|
|
50
|
+
2. Context / Container / Component レベルの Mermaid 図を生成
|
|
51
|
+
3. 設計文書に埋め込み
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**CLI**: `npx musubix design c4 <design-file>`
|
|
55
|
+
|
|
56
|
+
### 3. ADR 管理
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
WHEN ユーザーが ADR の作成・管理を要求する:
|
|
60
|
+
1. ADRManager.create() で新規 ADR 作成
|
|
61
|
+
2. ステータスライフサイクル: proposed → accepted → deprecated → superseded
|
|
62
|
+
3. ADRManager.search() で全文検索
|
|
63
|
+
4. ADRManager.index() でインデクシング
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**CLI**: `npx musubix decisions create|list|get|accept|deprecate|search|index`
|
|
67
|
+
|
|
68
|
+
### 4. 設計検証
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
WHEN ユーザーが設計文書の検証を要求する:
|
|
72
|
+
1. PatternDetector でデザインパターンを検出
|
|
73
|
+
2. SOLID 原則への準拠を検証
|
|
74
|
+
3. 要件との対応漏れを検出
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**CLI**: `npx musubix design validate <design-file>`
|
|
78
|
+
|
|
79
|
+
## 設計文書フォーマット
|
|
80
|
+
|
|
81
|
+
各 DES 仕様は以下の構成:
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
### DES-XXX-NNN: タイトル
|
|
85
|
+
|
|
86
|
+
**トレーサビリティ**: REQ-XXX-NNN
|
|
87
|
+
**パッケージ**: `package-name`
|
|
88
|
+
|
|
89
|
+
**設計概要**:
|
|
90
|
+
(自然言語の説明)
|
|
91
|
+
|
|
92
|
+
(TypeScript インターフェース / Mermaid 図)
|
|
93
|
+
|
|
94
|
+
**CLI契約**: `npx musubix ...`
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## ADR フォーマット
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
# ADR-NNN: タイトル
|
|
101
|
+
|
|
102
|
+
**ステータス**: proposed | accepted | deprecated | superseded
|
|
103
|
+
**日付**: YYYY-MM-DD
|
|
104
|
+
|
|
105
|
+
## Context
|
|
106
|
+
(決定の背景)
|
|
107
|
+
|
|
108
|
+
## Decision
|
|
109
|
+
(決定内容)
|
|
110
|
+
|
|
111
|
+
## Consequences
|
|
112
|
+
(影響と結果)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## 品質ゲート
|
|
116
|
+
|
|
117
|
+
- [ ] 全 DES が少なくとも1つの REQ にトレース可能
|
|
118
|
+
- [ ] TypeScript インターフェースが定義されている
|
|
119
|
+
- [ ] CLI 契約が明記されている
|
|
120
|
+
- [ ] SOLID 原則への違反がない
|
|
121
|
+
- [ ] 重要な設計決定に ADR が作成されている
|
|
122
|
+
|
|
123
|
+
## Gotchas
|
|
124
|
+
|
|
125
|
+
1. **DES と REQ の N:M 関係**: 1つの DES が複数の REQ を参照する場合がある。逆も同様。全方向のリンクを維持すること。
|
|
126
|
+
2. **Mermaid 記法の制限**: classDiagram で `?` nullable 表記を使う場合、TypeScript 側の `| undefined` と一致させること。
|
|
127
|
+
3. **ADR のステータス管理**: `accept` と `deprecate` は状態遷移。直接 `superseded` にはできない(必ず `deprecated` を経由)。
|