yodogawa 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/.windsurf/templates/documentation-rules.md +143 -0
  2. package/.windsurf/templates/project/01-requirements/01-system-overview.md +49 -0
  3. package/.windsurf/templates/project/01-requirements/02-features-implemented.md +73 -0
  4. package/.windsurf/templates/project/01-requirements/03-features-planned.md +75 -0
  5. package/.windsurf/templates/project/01-requirements/04-non-functional-requirements.md +115 -0
  6. package/.windsurf/templates/project/01-requirements/05-user-stories.md +124 -0
  7. package/.windsurf/templates/project/02-behavior/01-scenarios.md +406 -0
  8. package/.windsurf/templates/project/03-domain/01-domain-model.md +338 -0
  9. package/.windsurf/templates/project/03-domain/02-ubiquitous-language.md +153 -0
  10. package/.windsurf/templates/project/04-design/01-tech-stack.md +360 -0
  11. package/.windsurf/templates/project/04-design/02-repository-structure.md +390 -0
  12. package/.windsurf/templates/project/04-design/03-screen-design.md +586 -0
  13. package/.windsurf/templates/project/04-design/04-data-model.md +211 -0
  14. package/.windsurf/templates/project/04-design/05-api-spec.md +221 -0
  15. package/.windsurf/templates/project/04-design/06-architecture.md +183 -0
  16. package/.windsurf/templates/project/04-design/07-infrastructure.md +180 -0
  17. package/.windsurf/templates/tasks/task-template/a-definition.md +143 -0
  18. package/.windsurf/templates/tasks/task-template/b-research.md +185 -0
  19. package/.windsurf/templates/tasks/task-template/c-implementation.md +197 -0
  20. package/.windsurf/workflows/a-001-SetupDocStructure.md +165 -0
  21. package/.windsurf/workflows/a-002-InitializeProject.md +229 -0
  22. package/.windsurf/workflows/a-003-CreateScenarios.md +130 -0
  23. package/.windsurf/workflows/a-004-DefineDomainModel.md +133 -0
  24. package/.windsurf/workflows/a-005-CreateDomainDiagram.md +114 -0
  25. package/.windsurf/workflows/a-006-ReviewRequirementsDomain.md +132 -0
  26. package/.windsurf/workflows/a-007-DefineTechStack.md +121 -0
  27. package/.windsurf/workflows/a-008-DefineRepositoryStructure.md +118 -0
  28. package/.windsurf/workflows/a-009-DefineScreenDesign.md +121 -0
  29. package/.windsurf/workflows/a-010-DefineDataModel.md +125 -0
  30. package/.windsurf/workflows/a-011-DefineAPISpec.md +123 -0
  31. package/.windsurf/workflows/a-012-DefineArchitecture.md +119 -0
  32. package/.windsurf/workflows/a-013-DefineInfrastructure.md +120 -0
  33. package/.windsurf/workflows/a-014-ReviewDesign.md +122 -0
  34. package/.windsurf/workflows/b-001-CreateTaskDirectory.md +71 -0
  35. package/.windsurf/workflows/b-002-CreateTaskDefinition.md +165 -0
  36. package/.windsurf/workflows/b-003-CreateTaskResearch.md +412 -0
  37. package/.windsurf/workflows/b-004-CreateTaskImplementation.md +97 -0
  38. package/.windsurf/workflows/b-005-ReviewTask.md +312 -0
  39. package/.windsurf/workflows/c-001-ImplementTask.md +493 -0
  40. package/.windsurf/workflows/c-002-UpdateDocumentation.md +797 -0
  41. package/.windsurf/workflows/x-Accessibility-Check.md +469 -0
  42. package/.windsurf/workflows/x-Bundle-Optimize.md +386 -0
  43. package/.windsurf/workflows/x-CI-FixFailure.md +636 -0
  44. package/.windsurf/workflows/x-CI-Setup.md +641 -0
  45. package/.windsurf/workflows/x-Code-Refactor.md +71 -0
  46. package/.windsurf/workflows/x-Code-ResearchAndReview.md +78 -0
  47. package/.windsurf/workflows/x-Component-Create.md +359 -0
  48. package/.windsurf/workflows/x-Context-CatchUp.md +63 -0
  49. package/.windsurf/workflows/x-Database-Seed.md +300 -0
  50. package/.windsurf/workflows/x-Dependencies-Update.md +315 -0
  51. package/.windsurf/workflows/x-DevEnvironment-Setup.md +437 -0
  52. package/.windsurf/workflows/x-Logging-Add.md +682 -0
  53. package/.windsurf/workflows/x-Migration-Create.md +354 -0
  54. package/.windsurf/workflows/x-Problem-RootCauseAnalysis.md +65 -0
  55. package/.windsurf/workflows/x-Repository-Push.md +375 -0
  56. package/.windsurf/workflows/x-Repository-PushToGithub.md +72 -0
  57. package/.windsurf/workflows/x-Requirements-Clarify.md +61 -0
  58. package/.windsurf/workflows/z-CreateWorkflow.md +77 -0
  59. package/README.md +280 -0
  60. package/bin/cli.js +74 -0
  61. package/package.json +28 -0
@@ -0,0 +1,78 @@
1
+ ---
2
+ description: 公式ドキュメントと公認サンプルを調査してから実装を検証するリサーチ駆動型コードレビューワークフロー
3
+ auto_execution_mode: 1
4
+ ---
5
+
6
+ # Code-ResearchAndReview (x-Code-ResearchAndReview)
7
+
8
+ ## 目的
9
+
10
+ - 変更対象のライブラリやフレームワークについて公式情報・公認サンプルを収集し、正しい実装手順を明確化する。
11
+ - 既存コードと変更内容をリサーチ結果と照合し、欠落・誤り・ベストプラクティス逸脱を検出する。
12
+ - 必要な修正案と検証手順を提示し、信頼性の高いコードレビュー結果を提供する。
13
+
14
+ ## 前提
15
+
16
+ - 対象リポジトリの最新ブランチを取得済みで、差分確認ツール(`git diff` 等)が利用できる。
17
+ - 公式ドキュメント/ベンダーブログ/公認サンプルリポジトリへアクセスでき、ライセンス上の制約がない。
18
+ - `fetch` MCP や `search_web` MCP、必要に応じて `sequential-thinking` MCP が許可されている。
19
+ - DeepWiki MCP や Context7 MCP を利用する場合は、組織のナレッジベースとの連携ポリシーを確認しておく。
20
+ - 静的解析ツールやテストスイート(`run_command` 経由)が実行できる環境が整っている。
21
+ - 機密コードを外部に送信できない場合は、外部リサーチ時にコンテキストを要約するなど情報保護ポリシーを遵守する。
22
+
23
+ ## 手順
24
+
25
+ 1. **変更差分と要求の把握**
26
+
27
+ - 依頼メッセージ・仕様書・チケットを確認し、期待挙動と制約を要約する。
28
+ - `git diff` やレビュー UI で変更ファイルと重要な関数/コンポーネントを特定する。
29
+
30
+ 2. **リサーチ計画の立案**
31
+
32
+ - 変更で利用する主要ライブラリ・API・設計パターンを列挙し、リサーチ優先度(必須/確認/参考)を決める。
33
+ - 公式ドキュメント、リリースノート、公認サンプルリポジトリ、信頼できるベストプラクティス記事を候補として洗い出す。
34
+
35
+ 3. **情報収集(一次ソース優先)**
36
+
37
+ - `fetch` や `search_web` MCP で公式ドキュメントを取得し、該当 API/コンポーネントの推奨実装・制約・注意点をメモする。
38
+ - DeepWiki MCP や Context7 MCP で社内Wikiや関連知識ベースを照会し、既存実績や組織独自のベストプラクティスを確認する。
39
+ - ベンダーやメンテナが公開しているサンプルリポジトリを確認し、同様のユースケースのコード断片を収集する。
40
+ - 必要に応じて `sequential-thinking` MCP で観点を再整理し、調査漏れがないかチェックする。
41
+
42
+ 4. **ベストプラクティスチェックリストの作成**
43
+
44
+ - 収集した知見から「必須要件」「推奨パターン」「避けるべきアンチパターン」を箇条書きで整理する。
45
+ - バージョン依存や互換性注意事項がある場合はバージョン番号とともに記録する。
46
+
47
+ 5. **実装の照合**
48
+
49
+ - 変更コードと既存コードをチェックリストと比較し、未遵守項目や差分を洗い出す。
50
+ - 公式サンプルとの差分がある場合は理由を推測し、必要なら開発者へ確認すべき論点としてメモする。
51
+ - スタティックリソース(型定義、設定ファイル)も対象に含め、依存関係や設定値がベストプラクティス通りか確認する。
52
+
53
+ 6. **実行検証**
54
+
55
+ - `run_command` で静的解析(Ruff、ESLint 等)やテスト(`npm test`、`pytest` など)を実行し、リサーチ結果と矛盾する警告・失敗がないか確認する。
56
+ - Web UI や API の挙動を確認する必要があれば Playwright MCP や Chrome DevTools MCP で再現テスト・ログ取得を行う。
57
+
58
+ 7. **レビュー結果の整理**
59
+
60
+ - リサーチに基づく遵守状況、検出した問題、推奨修正案、追加で確認すべき質問事項をまとめる。
61
+ - 修正提案には参照元(公式ドキュメント URL、サンプルファイルパス等)を添付し、根拠を明確にする。
62
+
63
+ 8. **フォローアップと共有**
64
+
65
+ - レビューコメントやレポート形式に落とし込み、開発者へ共有する。
66
+ - 未解決の質問や追加検証が必要な項目を TODO として記録し、回答期限とオーナーを設定する。
67
+
68
+ ## 完了条件
69
+
70
+ - 公式情報に基づくチェックリストと比較結果が整理され、根拠付きでレビューコメントを提示できている。
71
+ - 必要な修正案・テスト結果・未解決事項が明文化され、関係者と共有済みである。
72
+ - リサーチで得た参考リンクやサンプルが記録され、再利用可能な知見として残っている。
73
+
74
+ ## エスカレーション
75
+
76
+ - 公式情報が見つからず実装方針を確定できない場合は、ライブラリメンテナ/プロダクトオーナーへ確認を依頼する。
77
+ - ライセンスやセキュリティ上の懸念がある実装が見つかった場合は、セキュリティチームや法務担当へ速やかに報告する。
78
+ - 大規模な設計変更が必要と判断した場合は、アーキテクトやリードエンジニアとレビュー会議を設定する。
@@ -0,0 +1,359 @@
1
+ ---
2
+ description: UIコンポーネントをボイラープレート、型定義、ストーリー、テストと共に生成するワークフロー
3
+ auto_execution_mode: 1
4
+ ---
5
+
6
+ # Component-Create (x-Component-Create)
7
+
8
+ ## 目的
9
+
10
+ - UI コンポーネントを素早く作成し、開発効率を向上させる。
11
+ - Props/型定義、ストーリー/プレビュー、テストファイルを一括で生成する。
12
+ - プロジェクトの命名規則とディレクトリ構造に従ったコンポーネントを作成する。
13
+ - 設計パターン(Atomic Design, Feature-Sliced Design等)に対応する。
14
+
15
+ ## 前提
16
+
17
+ - UI フレームワークがセットアップされている(React, Vue, Svelte, Solid等)。
18
+ - 型システムが使用されている(TypeScript推奨)。
19
+ - コンポーネントストーリー/プレビューツールがセットアップされている(Storybook, Histoire等、オプション)。
20
+ - テストフレームワークがセットアップされている(Jest, Vitest, Testing Library等、オプション)。
21
+ - プロジェクトの命名規則とディレクトリ構造が決まっている。
22
+
23
+ ## 手順
24
+
25
+ ### 1. コンポーネント設計の決定
26
+
27
+ **コンポーネントの種類**:
28
+ - **プレゼンテーショナル**: UI表示のみ、ロジックなし
29
+ - **コンテナ**: データ取得やステート管理を含む
30
+ - **レイアウト**: ページ構造を定義
31
+ - **ユーティリティ**: 再利用可能な小さなコンポーネント
32
+
33
+ **設計パターン**:
34
+ - **Atomic Design**: Atoms → Molecules → Organisms → Templates → Pages
35
+ - **Feature-Sliced Design**: features/{feature}/ui/
36
+ - **Flat Structure**: components/
37
+ - **Domain-Driven**: domains/{domain}/components/
38
+
39
+ **命名規則**:
40
+ - PascalCase(例: `UserCard`, `NavigationBar`)
41
+ - 明確で説明的な名前
42
+ - 単数形または複数形を適切に使い分け
43
+
44
+ ### 2. ディレクトリ構造の決定
45
+
46
+ **一般的なパターン**:
47
+
48
+ **単一ファイル**:
49
+ ```
50
+ src/components/Button.tsx
51
+ ```
52
+
53
+ **コロケーション**(推奨):
54
+ ```
55
+ src/components/Button/
56
+ ├── Button.tsx # メインコンポーネント
57
+ ├── Button.module.css # スタイル
58
+ ├── Button.stories.tsx # ストーリー/プレビュー
59
+ ├── Button.test.tsx # テスト
60
+ └── index.ts # エクスポート
61
+ ```
62
+
63
+ **複雑なコンポーネント**:
64
+ ```
65
+ src/components/UserCard/
66
+ ├── UserCard.tsx
67
+ ├── UserCard.module.css
68
+ ├── UserCard.stories.tsx
69
+ ├── UserCard.test.tsx
70
+ ├── components/ # サブコンポーネント
71
+ │ ├── Avatar.tsx
72
+ │ └── UserInfo.tsx
73
+ ├── hooks/ # カスタムフック
74
+ │ └── useUserData.ts
75
+ └── index.ts
76
+ ```
77
+
78
+ ### 3. コンポーネントファイルの作成
79
+
80
+ **基本構造**:
81
+
82
+ 1. **インポート**: 必要な依存関係
83
+ 2. **型定義**: Props の interface/type
84
+ 3. **コンポーネント本体**: JSX/テンプレート
85
+ 4. **エクスポート**: デフォルトまたは名前付き
86
+
87
+ **Props 設計のチェックリスト**:
88
+ - [ ] 必須プロパティと任意プロパティを明確に区別
89
+ - [ ] デフォルト値を適切に設定
90
+ - [ ] 型定義にドキュメントコメントを追加
91
+ - [ ] イベントハンドラの命名を統一(onClick, onSubmit等)
92
+ - [ ] children または slot の使用を検討
93
+ - [ ] as/component prop でポリモーフィズムを実現(必要に応じて)
94
+
95
+ **アクセシビリティチェックリスト**:
96
+ - [ ] セマンティックHTML要素を使用(button, nav, main等)
97
+ - [ ] ARIA属性を適切に設定
98
+ - [ ] キーボードナビゲーションをサポート
99
+ - [ ] フォーカス管理を実装
100
+ - [ ] スクリーンリーダー対応のラベルを追加
101
+
102
+ ### 4. スタイリングの実装
103
+
104
+ **スタイリング手法の選択**:
105
+ - **CSS Modules**: スコープ付きCSS、設定不要
106
+ - **CSS-in-JS**: styled-components, Emotion, Vanilla Extract
107
+ - **Utility-First**: Tailwind CSS, UnoCSS
108
+ - **CSS Preprocessor**: Sass, Less
109
+ - **CSS Framework**: Bootstrap, Chakra UI, Material UI
110
+
111
+ **レスポンシブデザイン**:
112
+ - モバイルファースト設計
113
+ - ブレークポイントの定義
114
+ - フレキシブルレイアウト(Flexbox, Grid)
115
+
116
+ ### 5. ストーリー/プレビューの作成
117
+
118
+ **目的**:
119
+ - コンポーネントの全バリエーションを可視化
120
+ - 開発中の動作確認
121
+ - デザインレビュー
122
+ - ドキュメント生成
123
+
124
+ **作成すべきストーリー**:
125
+ - **デフォルト**: 基本的な使用例
126
+ - **バリエーション**: すべての props の組み合わせ
127
+ - **状態**: loading, error, empty等
128
+ - **エッジケース**: 長いテキスト、空データ等
129
+
130
+ **ストーリーの構造**:
131
+ ```typescript
132
+ // 例: Storybook形式
133
+ export default {
134
+ title: 'Components/Button',
135
+ component: Button,
136
+ parameters: { layout: 'centered' },
137
+ argTypes: {
138
+ variant: { control: 'select', options: ['primary', 'secondary'] },
139
+ size: { control: 'select', options: ['small', 'medium', 'large'] },
140
+ },
141
+ };
142
+
143
+ export const Primary = {
144
+ args: { label: 'Button', variant: 'primary' },
145
+ };
146
+
147
+ export const Secondary = {
148
+ args: { label: 'Button', variant: 'secondary' },
149
+ };
150
+ ```
151
+
152
+ ### 6. テストの作成
153
+
154
+ **テスト戦略**:
155
+ - **ユニットテスト**: コンポーネントの動作を検証
156
+ - **スナップショットテスト**: UI の変更を検出
157
+ - **インタラクションテスト**: ユーザー操作をシミュレート
158
+ - **アクセシビリティテスト**: a11y 準拠を確認
159
+
160
+ **テストケースの例**:
161
+ ```typescript
162
+ describe('Button', () => {
163
+ // レンダリングテスト
164
+ it('renders with label', () => {
165
+ render(<Button label="Click me" />);
166
+ expect(screen.getByText('Click me')).toBeInTheDocument();
167
+ });
168
+
169
+ // インタラクションテスト
170
+ it('calls onClick when clicked', () => {
171
+ const handleClick = jest.fn();
172
+ render(<Button label="Click me" onClick={handleClick} />);
173
+ fireEvent.click(screen.getByText('Click me'));
174
+ expect(handleClick).toHaveBeenCalledTimes(1);
175
+ });
176
+
177
+ // 状態テスト
178
+ it('does not call onClick when disabled', () => {
179
+ const handleClick = jest.fn();
180
+ render(<Button label="Click me" onClick={handleClick} disabled />);
181
+ fireEvent.click(screen.getByText('Click me'));
182
+ expect(handleClick).not.toHaveBeenCalled();
183
+ });
184
+
185
+ // バリエーションテスト
186
+ it('applies variant class', () => {
187
+ const { rerender } = render(<Button label="Button" variant="primary" />);
188
+ expect(screen.getByText('Button')).toHaveClass('primary');
189
+ });
190
+
191
+ // アクセシビリティテスト
192
+ it('has no accessibility violations', async () => {
193
+ const { container } = render(<Button label="Click me" />);
194
+ const results = await axe(container);
195
+ expect(results).toHaveNoViolations();
196
+ });
197
+ });
198
+ ```
199
+
200
+ ### 7. Index ファイルの作成
201
+
202
+ **エクスポートパターン**:
203
+ ```typescript
204
+ // Named export(推奨)
205
+ export { Button } from './Button';
206
+ export type { ButtonProps } from './Button';
207
+
208
+ // Re-export with types
209
+ export { Button, type ButtonProps } from './Button';
210
+
211
+ // Default export
212
+ export { default } from './Button';
213
+ ```
214
+
215
+ ### 8. ドキュメント化
216
+
217
+ **JSDocコメントの追加**:
218
+ ```typescript
219
+ /**
220
+ * ボタンコンポーネント
221
+ *
222
+ * @example
223
+ * ```tsx
224
+ * <Button label="Click me" variant="primary" onClick={handleClick} />
225
+ * ```
226
+ */
227
+ export interface ButtonProps {
228
+ /** ボタンのラベル */
229
+ label: string;
230
+ /** ボタンのバリエーション @default 'primary' */
231
+ variant?: 'primary' | 'secondary' | 'danger';
232
+ /** クリックイベントハンドラ */
233
+ onClick?: () => void;
234
+ }
235
+ ```
236
+
237
+ **README または Storybook Docs**:
238
+ - 使用例
239
+ - Props の説明
240
+ - アクセシビリティガイドライン
241
+ - カスタマイズ方法
242
+
243
+ ### 9. 動作確認
244
+
245
+ **確認項目**:
246
+ - [ ] コンポーネントが正しくレンダリングされる
247
+ - [ ] すべての props が機能する
248
+ - [ ] イベントハンドラが正しく動作する
249
+ - [ ] スタイルが適用されている
250
+ - [ ] レスポンシブデザインが機能する
251
+ - [ ] アクセシビリティ要件を満たしている
252
+ - [ ] テストがすべて通る
253
+
254
+ **ストーリー/プレビューツールでの確認**:
255
+ ```bash
256
+ # Storybook
257
+ npm run storybook
258
+
259
+ # Histoire (Vite)
260
+ npm run story:dev
261
+ ```
262
+
263
+ **テストの実行**:
264
+ ```bash
265
+ npm test Button
266
+ # または
267
+ npm test -- Button.test.tsx
268
+ ```
269
+
270
+ ### 10. Git コミット
271
+
272
+ ```bash
273
+ git add src/components/Button/
274
+
275
+ git commit -m "feat: add Button component
276
+
277
+ - Add Button component with variants (primary, secondary, danger)
278
+ - Add size options (small, medium, large)
279
+ - Add component stories/preview
280
+ - Add unit tests with testing library
281
+ - Support accessibility features (ARIA, keyboard navigation)
282
+
283
+ 🤖 Generated with [Claude Code](https://claude.com/claude-code)
284
+
285
+ Co-Authored-By: Claude <noreply@anthropic.com>"
286
+ ```
287
+
288
+ ## 完了条件
289
+
290
+ - コンポーネントファイルが作成されている
291
+ - Props 型定義が記述されている
292
+ - スタイルが実装されている
293
+ - ストーリー/プレビューが作成されている(使用している場合)
294
+ - テストファイルが作成され、テストが通る
295
+ - Index ファイルでエクスポートされている
296
+ - アクセシビリティ要件を満たしている
297
+ - ドキュメントが記述されている
298
+
299
+ ## エスカレーション
300
+
301
+ - **命名規則の不一致**:
302
+ - プロジェクトの命名規則を確認
303
+ - チーム内で合意を取る
304
+ - ESLint ルールで強制
305
+
306
+ - **ディレクトリ構造の不一致**:
307
+ - プロジェクトのアーキテクチャパターンを確認
308
+ - 既存コンポーネントと整合性を取る
309
+
310
+ - **テストが失敗する**:
311
+ - import パスを確認
312
+ - テストライブラリのバージョンを確認
313
+ - Mock が必要な依存関係を確認
314
+
315
+ - **ストーリー/プレビューが表示されない**:
316
+ - 設定ファイルを確認
317
+ - import パスを確認
318
+ - エクスポートを確認
319
+
320
+ ## ベストプラクティス
321
+
322
+ - **Props の型定義**: すべての Props に型と説明を追加
323
+ - **デフォルト値**: Props にデフォルト値を設定
324
+ - **アクセシビリティ**: ARIA 属性を適切に設定
325
+ - **テストカバレッジ**: Props のすべてのバリエーションをテスト
326
+ - **ストーリー/プレビュー**: すべてのバリエーションを可視化
327
+ - **再利用性**: 汎用的で再利用可能なコンポーネントを設計
328
+ - **ドキュメント**: JSDoc コメントで使用方法を記載
329
+ - **命名**: 説明的で一貫性のある命名
330
+ - **分離**: プレゼンテーショナルとコンテナを分離
331
+ - **パフォーマンス**: メモ化を適切に使用
332
+
333
+ ## 参考: 技術スタック別のパターン
334
+
335
+ **UI フレームワーク**:
336
+ - React, Preact
337
+ - Vue 3, Nuxt 3
338
+ - Svelte, SvelteKit
339
+ - Solid.js, Qwik
340
+ - Angular, Lit
341
+
342
+ **スタイリング**:
343
+ - CSS Modules
344
+ - styled-components, Emotion
345
+ - Tailwind CSS, UnoCSS
346
+ - Vanilla Extract, Panda CSS
347
+ - Sass, Less, PostCSS
348
+
349
+ **ストーリー/プレビュー**:
350
+ - Storybook
351
+ - Histoire (Vite)
352
+ - Ladle
353
+ - Component Story Format (CSF)
354
+
355
+ **テスティング**:
356
+ - Jest, Vitest
357
+ - React Testing Library, Vue Testing Library
358
+ - Playwright, Cypress
359
+ - jest-axe (アクセシビリティ)
@@ -0,0 +1,63 @@
1
+ ---
2
+ description: 仕様と既存実装を照らし合わせてギャップ・リスク・依存関係を把握し、実行可能な分析結果をまとめるワークフロー
3
+ auto_execution_mode: 1
4
+ ---
5
+
6
+ # Context-CatchUp (x-Context-CatchUp)
7
+
8
+ ## 目的
9
+
10
+ - 最新の仕様・要求・ユーザーストーリーを整理し、現行実装とのギャップを可視化する。
11
+ - 依存関係・リスク・制約を分析し、計画段階で必要な前提条件やブロッカーを特定する。
12
+ - 具体的な改善提案やフォローアップタスクを提示し、次フェーズ(設計・実装・計画)の意思決定を支援する。
13
+
14
+ ## 前提
15
+
16
+ - 対象プロジェクトの仕様書、ユーザーストーリー、テクニカルドキュメント、コードリポジトリへアクセスできること。
17
+ - リポジトリの README やガイドライン、関連するワークフローが最新化されていること。
18
+ - 分析結果を共有するチャンネル(Issue, PR, Wiki 等)とレビュー担当者が明確であること。
19
+ - 機密情報を扱う場合は、アクセス権限や情報共有の範囲について組織ポリシーを遵守する。
20
+
21
+ ## 手順
22
+
23
+ 1. **コンテキスト同期**
24
+ - 依頼内容、最近の仕様変更、関連 Issue/PR、設計ドキュメントを収集し、背景と目的を要約する。
25
+ - `run_command` や Repo Index MCP を使って関連ファイル・モジュールの一覧を取得し、分析対象のスコープを確定する。
26
+
27
+ 2. **仕様・要求キュレーション**
28
+ - ユーザーストーリー、ユースケース、機能要件・非機能要件を整理し、優先度や依存関係を明記する。
29
+ - 明文化されていない前提(対象ユーザー、データフロー、法的制約など)がないかチェックし、暫定仮定として記録する。
30
+
31
+ 3. **現行実装レビュー**
32
+ - 対象領域のコード構造、データモデル、テストカバレッジを確認し、仕様との整合性を評価する。
33
+ - `run_command` で静的解析(Ruff / ESLint 等)やテストを実行し、品質指標・警告・脆弱性を収集する。
34
+ - UI/UX の確認が必要な場合は Playwright MCP または Chrome DevTools MCP で現状の挙動を記録する。
35
+
36
+ 4. **ギャップ&リスク分析**
37
+ - 仕様 vs 実装の差分、曖昧な仕様、技術的負債、依存サービスの制約をリスト化する。
38
+ - 影響度(High/Medium/Low)と発生確率、回避策・緩和策を併記し、対応優先度を整理する。
39
+
40
+ 5. **データ・イベント・UX 観点の整理**
41
+ - 入出力データ、API 契約、イベントハンドリング、UI フローなど観点別に確認し、抜け漏れを洗い出す。
42
+ - ドメインイベントや KPI 計測の要否を評価し、必要な計測項目や監視設定を提案する。
43
+
44
+ 6. **改善提案とフォローアップ計画**
45
+ - 明らかになった課題に対して、推奨アクション(仕様補強、リファクタリング、追加テストなど)を記述する。
46
+ - 未解決の質問や意思決定事項をまとめ、回答期限とオーナーを設定する。
47
+ - 後続フェーズのために `/speckit.plan` や `/speckit.tasks` に渡すべき入力(前提・制約・リスク)を整理する。
48
+
49
+ 7. **サマリー共有**
50
+ - 背景・分析結果・推奨策・未決事項を 1 ページ程度にまとめ、合意形成用のドキュメントとして共有する。
51
+ - 合意が必要なポイントはチェックリスト化し、レビュー/承認手順を明確にする。
52
+
53
+ ## 完了条件
54
+
55
+ - 仕様と実装の差分、リスク、未解決事項が整理され、優先度とオーナーが設定されている。
56
+ - 改善提案とフォローアップタスクが明文化され、次フェーズで利用可能な状態になっている。
57
+ - 分析サマリーが関係者に共有され、承認フローや回答期限が確立されている。
58
+
59
+ ## エスカレーション
60
+
61
+ - 重大な仕様ギャップやリスクが発覚し、スケジュール影響が大きい場合はプロダクトオーナー/マネージャーへ即時報告する。
62
+ - セキュリティ・法務・プライバシー要件が不明瞭な場合は、専門チームへ照会し自己判断で進めない。
63
+ - コミュニケーションが停滞して分析が進行しないときは、チームリードへ状況共有し、回答者の再アサインや意思決定会議を依頼する。