create-einja-app 0.3.3 → 0.3.4
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/package.json +1 -1
- package/templates/default/.claude/settings.json +0 -4
- package/templates/default/.claude/skills/_einja-general-context-loader/SKILL.md +258 -0
- package/templates/default/.claude/skills/_einja-output-format/SKILL.md +211 -0
- package/templates/default/.claude/skills/_einja-project-overview/SKILL.md +29 -0
- package/templates/default/.claude/skills/_einja-spec-context-loader/SKILL.md +181 -0
- package/templates/default/.claude/skills/cli-package-specs/SKILL.md +53 -6
- package/templates/default/CLAUDE.md +18 -5
- package/templates/default/docs/plans/glistening-conjuring-cascade.md +42 -0
- package/templates/default/docs/plans/linear-gathering-hejlsberg.md +596 -0
- package/templates/default/docs/plans/todo-glistening-conjuring-cascade.md +20 -0
- package/templates/default/docs/plans/todo-unified-crafting-valiant.md +23 -0
- package/templates/default/docs/plans/unified-crafting-valiant.md +60 -0
- package/templates/default/scripts/ensure-serena.sh +26 -7
- package/templates/default/.claude/hooks/einja/validate-git-commit.sh +0 -239
- package/templates/default/packages/server-core/src/__generated__/fabbrica/index.d.ts +0 -270
- package/templates/default/packages/server-core/src/__generated__/fabbrica/index.js +0 -484
package/package.json
CHANGED
|
@@ -142,10 +142,6 @@
|
|
|
142
142
|
{
|
|
143
143
|
"type": "command",
|
|
144
144
|
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/einja/unset-volta-recursion.sh"
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
"type": "command",
|
|
148
|
-
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/einja/validate-git-commit.sh"
|
|
149
145
|
}
|
|
150
146
|
]
|
|
151
147
|
},
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: _einja-general-context-loader
|
|
3
|
+
description: "spec(仕様書)が存在しない場合の文脈収集を担当するSkill。Issue本文、ユーザー指示、関連コードから要件を推測し、曖昧な点をAskUserQuestionで確認します"
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Grep
|
|
7
|
+
- Glob
|
|
8
|
+
- AskUserQuestion
|
|
9
|
+
- mcp__github__issue_read
|
|
10
|
+
- mcp__serena__*
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# general-context-loader Skill: 指示ベースの文脈収集
|
|
14
|
+
|
|
15
|
+
あなたは要件分析のスペシャリストで、曖昧な指示から具体的な実装要件を導き出す能力に長けています。ユーザーとの対話を通じて、実装に必要な情報を効率的に収集します。
|
|
16
|
+
|
|
17
|
+
## 中核的な責務
|
|
18
|
+
|
|
19
|
+
spec が存在しない場合に、Issue 本文・ユーザー指示・関連コードから実装に必要な文脈を収集し、曖昧な点を AskUserQuestion で確認して明確化します。
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 入力
|
|
24
|
+
|
|
25
|
+
**必須パラメータ**:
|
|
26
|
+
- `issue_number`: GitHub Issue 番号(例: `21`)
|
|
27
|
+
- `user_instruction`: ユーザーからの指示内容
|
|
28
|
+
|
|
29
|
+
**オプションパラメータ**:
|
|
30
|
+
- `task_description`: タスクの追加説明
|
|
31
|
+
|
|
32
|
+
**入力形式**: `--issue {issue_number} --instruction "{user_instruction}"`
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 実行手順(5ステップ)
|
|
37
|
+
|
|
38
|
+
### ステップ1: Issue 情報の取得
|
|
39
|
+
|
|
40
|
+
1. GitHub MCP を使用して Issue 本文を取得
|
|
41
|
+
2. 以下の情報を抽出:
|
|
42
|
+
- **タイトル**: Issue のタイトル
|
|
43
|
+
- **説明**: Issue の本文(AS-IS/TO-BE があれば優先的に抽出)
|
|
44
|
+
- **ラベル**: 関連ラベル(feature, bug, enhancement 等)
|
|
45
|
+
- **コメント**: 追加の議論や要件
|
|
46
|
+
|
|
47
|
+
**Issue が存在しない場合**: ユーザー指示のみから要件を推測
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### ステップ2: 関連コードの探索
|
|
52
|
+
|
|
53
|
+
1. Issue 本文・ユーザー指示からキーワードを抽出
|
|
54
|
+
2. Serena MCP または Grep/Glob を使用して関連ファイルを探索:
|
|
55
|
+
- **既存実装**: 修正対象のファイル
|
|
56
|
+
- **類似実装**: 参考にできる既存コード
|
|
57
|
+
- **テストコード**: 既存のテストパターン
|
|
58
|
+
3. 最大10ファイルまで関連コードをリストアップ
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
### ステップ3: 要件の推測と整理
|
|
63
|
+
|
|
64
|
+
1. 収集した情報から以下を推測:
|
|
65
|
+
- **目的**: なぜこの変更が必要か
|
|
66
|
+
- **スコープ**: 何を変更するか
|
|
67
|
+
- **制約**: どのような制約があるか
|
|
68
|
+
- **期待される動作**: 完了時にどうなっているべきか
|
|
69
|
+
|
|
70
|
+
2. 推測の確信度を評価:
|
|
71
|
+
- **高**: Issue 本文に明記されている
|
|
72
|
+
- **中**: 文脈から推測可能
|
|
73
|
+
- **低**: 複数の解釈が可能
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### ステップ4: 曖昧点の確認
|
|
78
|
+
|
|
79
|
+
**確信度が「低」の項目がある場合**、AskUserQuestion で確認します。
|
|
80
|
+
|
|
81
|
+
**確認すべき典型的な項目**:
|
|
82
|
+
|
|
83
|
+
| カテゴリ | 確認項目例 |
|
|
84
|
+
|---------|----------|
|
|
85
|
+
| スコープ | 「この変更は○○にも影響しますか?」 |
|
|
86
|
+
| 実装方法 | 「AパターンとBパターン、どちらで実装しますか?」 |
|
|
87
|
+
| エラー処理 | 「エラー時の挙動はどうすべきですか?」 |
|
|
88
|
+
| テスト | 「どのレベルのテストが必要ですか?」 |
|
|
89
|
+
| 破壊的変更 | 「既存の○○を変更しても問題ありませんか?」 |
|
|
90
|
+
|
|
91
|
+
**AskUserQuestion の使用例**:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
質問: 実装アプローチの選択
|
|
95
|
+
|
|
96
|
+
この機能は以下のどちらで実装しますか?
|
|
97
|
+
|
|
98
|
+
1. Server Component として実装(推奨)
|
|
99
|
+
- SSRでデータ取得、SEO対応
|
|
100
|
+
|
|
101
|
+
2. Client Component として実装
|
|
102
|
+
- リアルタイム更新が必要な場合
|
|
103
|
+
|
|
104
|
+
3. ハイブリッド
|
|
105
|
+
- 静的部分はServer、動的部分はClient
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### ステップ5: 結果の構造化
|
|
111
|
+
|
|
112
|
+
収集・確認した情報を構造化して出力します。
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 出力形式
|
|
117
|
+
|
|
118
|
+
**成功時**: 以下のマークダウン形式で出力(spec-context-loader と共通構造)
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
## コンテキスト収集結果
|
|
122
|
+
|
|
123
|
+
### spec 情報
|
|
124
|
+
- **ディレクトリ**: なし(指示ベース実装)
|
|
125
|
+
- **Issue**: #{issue_number} - {title}
|
|
126
|
+
- **ユーザー指示**: {instruction}
|
|
127
|
+
|
|
128
|
+
### 要件
|
|
129
|
+
#### 機能要件(推測)
|
|
130
|
+
- {目的: なぜこの変更が必要か}
|
|
131
|
+
- {スコープ: 何を変更するか}
|
|
132
|
+
|
|
133
|
+
#### 非機能要件
|
|
134
|
+
- {技術的制約}
|
|
135
|
+
- {ビジネス的制約}
|
|
136
|
+
|
|
137
|
+
#### 受け入れ条件(推測)
|
|
138
|
+
| AC番号 | タイトル | 検証レベル | 概要 |
|
|
139
|
+
|--------|---------|-----------|------|
|
|
140
|
+
| - | {期待される動作1} | Unit/Integration/E2E | {概要} |
|
|
141
|
+
|
|
142
|
+
### 設計
|
|
143
|
+
#### アーキテクチャ(推測)
|
|
144
|
+
- **パターン**: {推測されるアーキテクチャパターン}
|
|
145
|
+
- **レイヤー**: {影響するレイヤー}
|
|
146
|
+
|
|
147
|
+
#### データ構造(推測)
|
|
148
|
+
```typescript
|
|
149
|
+
// 主要な型定義(推測)
|
|
150
|
+
interface Example {
|
|
151
|
+
// ...
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
#### API仕様(推測)
|
|
156
|
+
- **エンドポイント**: {該当する場合}
|
|
157
|
+
- **リクエスト**: {形式}
|
|
158
|
+
- **レスポンス**: {形式}
|
|
159
|
+
|
|
160
|
+
#### エラーハンドリング(推測)
|
|
161
|
+
- {エラー分類と処理方針}
|
|
162
|
+
|
|
163
|
+
#### 関連コード
|
|
164
|
+
| ファイル | 関連性 | 説明 |
|
|
165
|
+
|---------|-------|------|
|
|
166
|
+
| `src/app/example/page.tsx` | 修正対象 | メイン画面 |
|
|
167
|
+
| `src/components/Example.tsx` | 参考 | 類似コンポーネント |
|
|
168
|
+
|
|
169
|
+
### テスト仕様
|
|
170
|
+
#### 対象テストファイル(推測)
|
|
171
|
+
- {該当するテストファイル}
|
|
172
|
+
|
|
173
|
+
#### シナリオテスト(推測)
|
|
174
|
+
- **シナリオ1**: {概要}
|
|
175
|
+
|
|
176
|
+
#### 確認項目
|
|
177
|
+
1. {確認項目1}
|
|
178
|
+
2. {確認項目2}
|
|
179
|
+
|
|
180
|
+
#### テスト方針
|
|
181
|
+
- **単体テスト**: {必要/不要}
|
|
182
|
+
- **統合テスト**: {必要/不要}
|
|
183
|
+
- **E2Eテスト**: {必要/不要}
|
|
184
|
+
|
|
185
|
+
### 確認済み事項
|
|
186
|
+
- [x] {AskUserQuestion で確認した項目1}: {回答}
|
|
187
|
+
- [x] {AskUserQuestion で確認した項目2}: {回答}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**情報不足時**: 以下の形式で出力
|
|
191
|
+
|
|
192
|
+
```markdown
|
|
193
|
+
## コンテキスト収集結果
|
|
194
|
+
|
|
195
|
+
### ステータス: ⚠️ 情報不足
|
|
196
|
+
|
|
197
|
+
### 収集できた情報
|
|
198
|
+
- {収集できた情報}
|
|
199
|
+
|
|
200
|
+
### 不足している情報
|
|
201
|
+
- {不足1}: {なぜ必要か}
|
|
202
|
+
- {不足2}: {なぜ必要か}
|
|
203
|
+
|
|
204
|
+
### 推奨アクション
|
|
205
|
+
1. ユーザーに追加情報を求める
|
|
206
|
+
2. または `einja-issue-spec-create` Skillで仕様書を作成する
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## AskUserQuestion 使用ガイドライン
|
|
212
|
+
|
|
213
|
+
### 使用すべき場面
|
|
214
|
+
- 複数の実装方法が考えられる場合
|
|
215
|
+
- 破壊的変更の可能性がある場合
|
|
216
|
+
- テスト方針が不明確な場合
|
|
217
|
+
- スコープの境界が曖昧な場合
|
|
218
|
+
|
|
219
|
+
### 使用を避けるべき場面
|
|
220
|
+
- Issue 本文に明記されている場合
|
|
221
|
+
- プロジェクトの規約で決まっている場合
|
|
222
|
+
- 技術的に選択肢が1つしかない場合
|
|
223
|
+
|
|
224
|
+
### 質問のベストプラクティス
|
|
225
|
+
- 選択肢を2-4個に絞る
|
|
226
|
+
- 各選択肢のトレードオフを説明
|
|
227
|
+
- 推奨オプションを明示(「推奨」と記載)
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## エラー処理
|
|
232
|
+
|
|
233
|
+
| エラー種別 | 原因 | 対処 |
|
|
234
|
+
|-----------|------|------|
|
|
235
|
+
| Issue 取得失敗 | Issue が存在しない/アクセス権限なし | ユーザー指示のみから要件を推測 |
|
|
236
|
+
| 関連コード不在 | 新規機能で既存コードがない | 類似機能を探索、なければ新規作成前提 |
|
|
237
|
+
| 要件が完全に不明 | 指示が抽象的すぎる | AskUserQuestion で段階的に明確化 |
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## 実行制約
|
|
242
|
+
|
|
243
|
+
このSkillは `task-executer` エージェントから呼び出されます。spec が存在しないことが前提です。
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## 連携
|
|
248
|
+
|
|
249
|
+
- **呼び出し元**: `task-executer` - コンテキスト収集フェーズ
|
|
250
|
+
- **代替Skill**: `spec-context-loader` - spec がある場合の文脈収集
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
**最終更新**: 2025-01-10
|
|
255
|
+
|
|
256
|
+
<!-- @einja:project-private:start id="einja-general-context-loader-project" -->
|
|
257
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
258
|
+
<!-- @einja:project-private:end -->
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: _einja-output-format
|
|
3
|
+
description: "サブエージェントの統一出力形式を定義"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# サブエージェント出力形式 Skill
|
|
7
|
+
|
|
8
|
+
## 概要
|
|
9
|
+
|
|
10
|
+
このSkillは、全サブエージェントが従うべき出力形式を定義します。
|
|
11
|
+
|
|
12
|
+
## 必須ルール
|
|
13
|
+
|
|
14
|
+
1. **完全出力の原則**: 最終出力はそのまま全文をユーザーに表示
|
|
15
|
+
2. **省略・要約の禁止**: 出力を要約したり、一部のみ抜粋することは禁止
|
|
16
|
+
3. **この形式から逸脱しないこと**
|
|
17
|
+
|
|
18
|
+
## 標準出力構造
|
|
19
|
+
|
|
20
|
+
すべてのサブエージェントは以下の構造で出力すること:
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
## [絵文字] [フェーズ名]完了
|
|
24
|
+
|
|
25
|
+
### タスク: [タスクID] - [タスク名]
|
|
26
|
+
|
|
27
|
+
### 結果: [✅ SUCCESS / ❌ FAILURE / ⚠️ PARTIAL]
|
|
28
|
+
|
|
29
|
+
### サマリー
|
|
30
|
+
[主要な結果・数値]
|
|
31
|
+
|
|
32
|
+
### 詳細
|
|
33
|
+
[項目別の詳細情報]
|
|
34
|
+
|
|
35
|
+
### 次のステップ
|
|
36
|
+
[後続処理の説明]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## エージェント別テンプレート
|
|
40
|
+
|
|
41
|
+
### frontend-architect
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
## 🏗️ アーキテクチャ設計完了
|
|
45
|
+
|
|
46
|
+
### タスク: [機能名/画面名]
|
|
47
|
+
|
|
48
|
+
### 設計結果: [✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILURE]
|
|
49
|
+
|
|
50
|
+
### 設計サマリー
|
|
51
|
+
- **コンポーネント数**: N個
|
|
52
|
+
- **カスタムHooks数**: M個
|
|
53
|
+
- **新規ディレクトリ**: K個
|
|
54
|
+
|
|
55
|
+
### コンポーネント構造
|
|
56
|
+
```
|
|
57
|
+
[ディレクトリ構造図]
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 状態管理戦略
|
|
61
|
+
| 状態種別 | 管理方法 | 対象データ |
|
|
62
|
+
|---------|---------|----------|
|
|
63
|
+
|
|
64
|
+
### 技術選定
|
|
65
|
+
- **[決定1]**: [選定理由]
|
|
66
|
+
|
|
67
|
+
### 次のステップ
|
|
68
|
+
[後続処理の説明]
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### design-engineer
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
## 🎨 デザインエンジニアリング完了
|
|
75
|
+
|
|
76
|
+
### タスク: [タスク名/コンポーネント名]
|
|
77
|
+
|
|
78
|
+
### 実装結果: [✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILURE]
|
|
79
|
+
|
|
80
|
+
### 抽出したデザイントークン
|
|
81
|
+
| カテゴリ | 項目数 | 主な値 |
|
|
82
|
+
|---------|-------|-------|
|
|
83
|
+
|
|
84
|
+
### 生成/更新したファイル
|
|
85
|
+
- **新規作成**: N個
|
|
86
|
+
- **編集**: M個
|
|
87
|
+
|
|
88
|
+
### 次のステップ
|
|
89
|
+
[後続処理の説明]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### frontend-coder
|
|
93
|
+
|
|
94
|
+
```markdown
|
|
95
|
+
## 💻 フロントエンド実装完了
|
|
96
|
+
|
|
97
|
+
### タスク: [タスクID] - [タスク名]
|
|
98
|
+
|
|
99
|
+
### 実装結果: [✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILURE]
|
|
100
|
+
|
|
101
|
+
### 実装サマリー
|
|
102
|
+
- **新規作成**: N個のファイル
|
|
103
|
+
- **編集**: M個のファイル
|
|
104
|
+
|
|
105
|
+
### 主要な実装内容
|
|
106
|
+
1. [実装した主要機能]
|
|
107
|
+
|
|
108
|
+
### ファイル一覧
|
|
109
|
+
| ファイル | 説明/変更内容 |
|
|
110
|
+
|---------|--------------|
|
|
111
|
+
|
|
112
|
+
### 次のステップ
|
|
113
|
+
[後続処理の説明]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### backend-architect
|
|
117
|
+
|
|
118
|
+
```markdown
|
|
119
|
+
## 🔧 バックエンドアーキテクチャ設計完了
|
|
120
|
+
|
|
121
|
+
### タスク: [機能名/API名]
|
|
122
|
+
|
|
123
|
+
### 設計結果: [✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILURE]
|
|
124
|
+
|
|
125
|
+
### 設計サマリー
|
|
126
|
+
- **API数**: N個
|
|
127
|
+
- **Repository数**: M個
|
|
128
|
+
- **UseCase数**: K個
|
|
129
|
+
- **新規Entity数**: L個
|
|
130
|
+
- **テーブル数**: P個
|
|
131
|
+
|
|
132
|
+
### アーキテクチャ構造
|
|
133
|
+
```
|
|
134
|
+
[ディレクトリ構造図]
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 層間の依存関係
|
|
138
|
+
| 層 | 依存先 | 主なコンポーネント |
|
|
139
|
+
|---|-------|-----------------|
|
|
140
|
+
|
|
141
|
+
### デザインパターン適用
|
|
142
|
+
- **Repositoryパターン**: [適用状況]
|
|
143
|
+
- **Mapperパターン**: [適用状況]
|
|
144
|
+
- **Result型パターン**: [適用状況]
|
|
145
|
+
|
|
146
|
+
### DB設計
|
|
147
|
+
| テーブル名 | 主なカラム | インデックス |
|
|
148
|
+
|----------|----------|------------|
|
|
149
|
+
|
|
150
|
+
### API設計
|
|
151
|
+
| エンドポイント | メソッド | 説明 |
|
|
152
|
+
|--------------|--------|------|
|
|
153
|
+
|
|
154
|
+
### テスト設計方針
|
|
155
|
+
- **ユニットテスト対象**: [対象コンポーネント]
|
|
156
|
+
- **統合テスト対象**: [対象フロー]
|
|
157
|
+
|
|
158
|
+
### 技術選定
|
|
159
|
+
- **[決定1]**: [選定理由]
|
|
160
|
+
|
|
161
|
+
### 次のステップ
|
|
162
|
+
[後続処理の説明]
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### codex-agent
|
|
166
|
+
|
|
167
|
+
```markdown
|
|
168
|
+
## 🤖 Codex作業完了
|
|
169
|
+
|
|
170
|
+
### タスク: [作業内容]
|
|
171
|
+
|
|
172
|
+
### 作業結果: [✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILURE]
|
|
173
|
+
|
|
174
|
+
### 作業モード: [レビュー / 実装 / バグ修正 / リファクタリング / 調査]
|
|
175
|
+
|
|
176
|
+
### サマリー
|
|
177
|
+
[主要な結果・数値]
|
|
178
|
+
|
|
179
|
+
### 詳細
|
|
180
|
+
[Codexからの出力・分析結果]
|
|
181
|
+
|
|
182
|
+
### 次のステップ
|
|
183
|
+
[後続処理の説明]
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## 長い出力の取り扱い
|
|
187
|
+
|
|
188
|
+
出力が50行を超える場合、以下の形式で表示:
|
|
189
|
+
|
|
190
|
+
```markdown
|
|
191
|
+
### サマリー
|
|
192
|
+
[最初の10行]
|
|
193
|
+
|
|
194
|
+
### 詳細
|
|
195
|
+
<details>
|
|
196
|
+
<summary>全文を表示(N行)</summary>
|
|
197
|
+
|
|
198
|
+
[残りの出力全文]
|
|
199
|
+
|
|
200
|
+
</details>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## 失敗・エラー時
|
|
204
|
+
|
|
205
|
+
- **エラーステータス**: ❌ FAILURE / ⚠️ PARTIAL
|
|
206
|
+
- **エラー内容**: 具体的なエラーメッセージ
|
|
207
|
+
- **次のアクション**: 推奨される対処方法
|
|
208
|
+
|
|
209
|
+
<!-- @einja:project-private:start id="einja-output-format-project" -->
|
|
210
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
211
|
+
<!-- @einja:project-private:end -->
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: _einja-project-overview
|
|
3
|
+
description: "プロジェクトの全体構成・技術スタックの参照ハブ"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# プロジェクト概要 Skill
|
|
7
|
+
|
|
8
|
+
## 概要
|
|
9
|
+
|
|
10
|
+
このSkillは、プロジェクトの全体構成・技術スタックを把握したいときに参照するエントリポイントです。
|
|
11
|
+
具体的な情報は以下のドキュメントを参照してください。
|
|
12
|
+
|
|
13
|
+
## 参照ドキュメント
|
|
14
|
+
|
|
15
|
+
### ドキュメントナビゲーション
|
|
16
|
+
|
|
17
|
+
@docs/einja/steering/README.md
|
|
18
|
+
|
|
19
|
+
### プロダクトビジョン
|
|
20
|
+
|
|
21
|
+
@docs/einja/steering/product.md
|
|
22
|
+
|
|
23
|
+
### アーキテクチャ・技術スタック
|
|
24
|
+
|
|
25
|
+
@docs/einja/steering/architecture.md
|
|
26
|
+
|
|
27
|
+
<!-- @einja:project-private:start id="einja-project-overview-project" -->
|
|
28
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
29
|
+
<!-- @einja:project-private:end -->
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: _einja-spec-context-loader
|
|
3
|
+
description: "spec(仕様書)が存在する場合の文脈収集を担当するSkill。requirements.md、design.md、qa-tests/から要件・設計・テスト仕様を抽出し、構造化して返却します"
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Grep
|
|
7
|
+
- Glob
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# spec-context-loader Skill: 仕様書からの文脈収集
|
|
11
|
+
|
|
12
|
+
あなたは仕様書分析のスペシャリストで、ATDD(受け入れテスト駆動開発)とドキュメント駆動開発に精通しています。構造化された仕様書から必要な情報を効率的に抽出し、実装に必要な文脈を提供します。
|
|
13
|
+
|
|
14
|
+
## 中核的な責務
|
|
15
|
+
|
|
16
|
+
spec-create で作成された仕様書(requirements.md、design.md、qa-tests/)から、タスク実装に必要な文脈情報を抽出・構造化します。
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 入力
|
|
21
|
+
|
|
22
|
+
**必須パラメータ**:
|
|
23
|
+
- `spec_dir`: spec ディレクトリのパス(例: `/docs/specs/issues/auth/issue21-login-feature/`)
|
|
24
|
+
- `ac_ids`: 対象AC番号(例: `AC1.1, AC1.2`)
|
|
25
|
+
|
|
26
|
+
**入力形式**: 自然言語でAC情報を指定
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 実行手順(4ステップ)
|
|
31
|
+
|
|
32
|
+
### ステップ1: spec ディレクトリの検証
|
|
33
|
+
|
|
34
|
+
1. 指定された `spec_dir` の存在を確認
|
|
35
|
+
2. 以下のファイルの存在を確認:
|
|
36
|
+
- `requirements.md` または `requirements/README.md`
|
|
37
|
+
- `design.md` または `design/README.md`
|
|
38
|
+
- `qa-tests/scenarios.md`
|
|
39
|
+
3. 不足ファイルがある場合はエラーを返却
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
### ステップ2: requirements.md からの要件抽出
|
|
44
|
+
|
|
45
|
+
1. requirements.md を読み込む
|
|
46
|
+
2. 以下の情報を抽出:
|
|
47
|
+
- **ユーザーストーリー**: 該当タスクに関連するストーリー
|
|
48
|
+
- **受け入れ条件(AC)**: `AC{N}.{M}` 形式のすべての受け入れ基準
|
|
49
|
+
- **検証レベル**: 各ACの `Unit` / `Integration` / `E2E` 分類
|
|
50
|
+
- **非機能要件**: パフォーマンス、セキュリティ等の制約
|
|
51
|
+
|
|
52
|
+
**パース対象**: `**ACx.y**: [要約文]` + インデントGiven-When-Then形式の受け入れ条件(`- Given:` / `- When:` / `- Then:` / `- 検証レベル:` の箇条書き形式)
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
### ステップ3: design.md からの設計仕様抽出
|
|
57
|
+
|
|
58
|
+
1. design.md を読み込む
|
|
59
|
+
2. 以下の情報を抽出:
|
|
60
|
+
- **アーキテクチャ**: 使用するパターン、レイヤー構造
|
|
61
|
+
- **データ構造**: 型定義、インターフェース、Prismaモデル
|
|
62
|
+
- **API仕様**: エンドポイント、リクエスト/レスポンス形式
|
|
63
|
+
- **コンポーネント設計**: 画面構成、状態管理
|
|
64
|
+
- **エラーハンドリング方針**: エラー分類、処理方法
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### ステップ4: qa-tests/ からのテスト仕様抽出
|
|
69
|
+
|
|
70
|
+
1. AC番号からストーリー番号を特定し、テストファイルを参照
|
|
71
|
+
- 例: AC1.1 → Story 1 → `qa-tests/story1.md`、AC2.3 → Story 2 → `qa-tests/story2.md`
|
|
72
|
+
2. scenarios.md から該当タスクのシナリオテストを確認
|
|
73
|
+
3. 以下の情報を抽出:
|
|
74
|
+
- **テストシナリオ**: 実行すべきテストケース
|
|
75
|
+
- **確認項目**: 各シナリオの検証ポイント
|
|
76
|
+
- **実施タイミング**: 部分実行/完全実行の判定
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 出力形式
|
|
81
|
+
|
|
82
|
+
**成功時**: 以下のマークダウン形式で出力
|
|
83
|
+
|
|
84
|
+
```markdown
|
|
85
|
+
## コンテキスト収集結果
|
|
86
|
+
|
|
87
|
+
### spec 情報
|
|
88
|
+
- **ディレクトリ**: {spec_dir}
|
|
89
|
+
- **対象AC**: {ac_ids}
|
|
90
|
+
|
|
91
|
+
### 要件
|
|
92
|
+
#### 機能要件
|
|
93
|
+
- [ユーザーストーリー1の概要]
|
|
94
|
+
- [ユーザーストーリー2の概要]
|
|
95
|
+
|
|
96
|
+
#### 非機能要件
|
|
97
|
+
- [パフォーマンス要件]
|
|
98
|
+
- [セキュリティ要件]
|
|
99
|
+
|
|
100
|
+
#### 受け入れ条件
|
|
101
|
+
| AC番号 | タイトル | 検証レベル | 概要 |
|
|
102
|
+
|--------|---------|-----------|------|
|
|
103
|
+
| AC1.1 | [タイトル] | Unit | [Given-When-Then概要] |
|
|
104
|
+
| AC1.2 | [タイトル] | Integration | [Given-When-Then概要] |
|
|
105
|
+
|
|
106
|
+
### 設計
|
|
107
|
+
#### アーキテクチャ
|
|
108
|
+
- **パターン**: [使用するアーキテクチャパターン]
|
|
109
|
+
- **レイヤー**: [影響するレイヤー]
|
|
110
|
+
|
|
111
|
+
#### データ構造
|
|
112
|
+
```typescript
|
|
113
|
+
// 主要な型定義
|
|
114
|
+
interface Example {
|
|
115
|
+
// ...
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
#### API仕様
|
|
120
|
+
- **エンドポイント**: `POST /api/example`
|
|
121
|
+
- **リクエスト**: [形式]
|
|
122
|
+
- **レスポンス**: [形式]
|
|
123
|
+
|
|
124
|
+
#### エラーハンドリング
|
|
125
|
+
- [エラー分類と処理方針]
|
|
126
|
+
|
|
127
|
+
### テスト仕様
|
|
128
|
+
#### 対象テストファイル
|
|
129
|
+
- `qa-tests/story{N}.md`(該当ACセクション)
|
|
130
|
+
|
|
131
|
+
#### シナリオテスト
|
|
132
|
+
- **シナリオ1**: [概要] - 実施タイミング: [Step X-Y]
|
|
133
|
+
|
|
134
|
+
#### 確認項目
|
|
135
|
+
1. [確認項目1]
|
|
136
|
+
2. [確認項目2]
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**エラー時**: 以下の形式で出力
|
|
140
|
+
|
|
141
|
+
```markdown
|
|
142
|
+
## コンテキスト収集エラー
|
|
143
|
+
|
|
144
|
+
### ステータス: ❌ FAILURE
|
|
145
|
+
|
|
146
|
+
### エラー内容
|
|
147
|
+
- **原因**: [不足ファイル一覧 or エラー詳細]
|
|
148
|
+
- **推奨アクション**: `einja-issue-spec-create` Skill を実行して仕様書を完成させてください
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## エラー処理
|
|
154
|
+
|
|
155
|
+
| エラー種別 | 原因 | 対処 |
|
|
156
|
+
|-----------|------|------|
|
|
157
|
+
| spec ディレクトリ不在 | 指定パスが存在しない | パスを確認して再実行 |
|
|
158
|
+
| requirements.md 不在 | Phase 1 未完了 | `einja-issue-spec-create` Skill で Phase 1 を実行 |
|
|
159
|
+
| design.md 不在 | Phase 3 未完了 | `einja-issue-spec-create` Skill で Phase 3 を実行 |
|
|
160
|
+
| qa-tests/ 不在 | Phase 4 未完了 | `einja-issue-spec-create` Skill で Phase 4 を実行 |
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 実行制約
|
|
165
|
+
|
|
166
|
+
このSkillは `task-executer` エージェントから呼び出されます。spec が存在することが前提です。
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 連携
|
|
171
|
+
|
|
172
|
+
- **呼び出し元**: `task-executer` - コンテキスト収集フェーズ
|
|
173
|
+
- **代替Skill**: `general-context-loader` - spec がない場合の文脈収集
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
**最終更新**: 2025-01-10
|
|
178
|
+
|
|
179
|
+
<!-- @einja:project-private:start id="einja-spec-context-loader-project" -->
|
|
180
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
181
|
+
<!-- @einja:project-private:end -->
|