| name | general-context-loader |
| description | spec(仕様書)が存在しない場合の文脈収集を担当するSkill。Issue本文、ユーザー指示、関連コードから要件を推測し、曖昧な点をAskUserQuestionで確認します |
| allowed-tools | Read, Grep, Glob, AskUserQuestion, mcp__github__issue_read, mcp__serena__* |
general-context-loader Skill: 指示ベースの文脈収集
あなたは要件分析のスペシャリストで、曖昧な指示から具体的な実装要件を導き出す能力に長けています。ユーザーとの対話を通じて、実装に必要な情報を効率的に収集します。
中核的な責務
spec が存在しない場合に、Issue 本文・ユーザー指示・関連コードから実装に必要な文脈を収集し、曖昧な点を AskUserQuestion で確認して明確化します。
入力
必須パラメータ:
issue_number: GitHub Issue 番号(例:21)user_instruction: ユーザーからの指示内容
オプションパラメータ:
task_description: タスクの追加説明
入力形式: --issue {issue_number} --instruction "{user_instruction}"
実行手順(5ステップ)
ステップ1: Issue 情報の取得
- GitHub MCP を使用して Issue 本文を取得
- 以下の情報を抽出:
- タイトル: Issue のタイトル
- 説明: Issue の本文(AS-IS/TO-BE があれば優先的に抽出)
- ラベル: 関連ラベル(feature, bug, enhancement 等)
- コメント: 追加の議論や要件
Issue が存在しない場合: ユーザー指示のみから要件を推測
ステップ2: 関連コードの探索
- Issue 本文・ユーザー指示からキーワードを抽出
- Serena MCP または Grep/Glob を使用して関連ファイルを探索:
- 既存実装: 修正対象のファイル
- 類似実装: 参考にできる既存コード
- テストコード: 既存のテストパターン
- 最大10ファイルまで関連コードをリストアップ
ステップ3: 要件の推測と整理
収集した情報から以下を推測:
- 目的: なぜこの変更が必要か
- スコープ: 何を変更するか
- 制約: どのような制約があるか
- 期待される動作: 完了時にどうなっているべきか
推測の確信度を評価:
- 高: Issue 本文に明記されている
- 中: 文脈から推測可能
- 低: 複数の解釈が可能
ステップ4: 曖昧点の確認
確信度が「低」の項目がある場合、AskUserQuestion で確認します。
確認すべき典型的な項目:
| カテゴリ | 確認項目例 |
|---|---|
| スコープ | 「この変更は○○にも影響しますか?」 |
| 実装方法 | 「AパターンとBパターン、どちらで実装しますか?」 |
| エラー処理 | 「エラー時の挙動はどうすべきですか?」 |
| テスト | 「どのレベルのテストが必要ですか?」 |
| 破壊的変更 | 「既存の○○を変更しても問題ありませんか?」 |
AskUserQuestion の使用例:
質問: 実装アプローチの選択
この機能は以下のどちらで実装しますか?
1. Server Component として実装(推奨)
- SSRでデータ取得、SEO対応
2. Client Component として実装
- リアルタイム更新が必要な場合
3. ハイブリッド
- 静的部分はServer、動的部分はClient
ステップ5: 結果の構造化
収集・確認した情報を構造化して出力します。
出力形式
成功時: 以下のマークダウン形式で出力(spec-context-loader と共通構造)
## コンテキスト収集結果
### spec 情報
- **ディレクトリ**: なし(指示ベース実装)
- **Issue**: #{issue_number} - {title}
- **ユーザー指示**: {instruction}
### 要件
#### 機能要件(推測)
- {目的: なぜこの変更が必要か}
- {スコープ: 何を変更するか}
#### 非機能要件
- {技術的制約}
- {ビジネス的制約}
#### 受け入れ条件(推測)
| AC番号 | タイトル | 検証レベル | 概要 |
|--------|---------|-----------|------|
| - | {期待される動作1} | Unit/Integration/E2E | {概要} |
### 設計
#### アーキテクチャ(推測)
- **パターン**: {推測されるアーキテクチャパターン}
- **レイヤー**: {影響するレイヤー}
#### データ構造(推測)
```typescript
// 主要な型定義(推測)
interface Example {
// ...
}
API仕様(推測)
- エンドポイント: {該当する場合}
- リクエスト: {形式}
- レスポンス: {形式}
エラーハンドリング(推測)
- {エラー分類と処理方針}
関連コード
| ファイル | 関連性 | 説明 |
|---|---|---|
src/app/example/page.tsx |
修正対象 | メイン画面 |
src/components/Example.tsx |
参考 | 類似コンポーネント |
テスト仕様
対象テストファイル(推測)
- {該当するテストファイル}
シナリオテスト(推測)
- シナリオ1: {概要}
確認項目
- {確認項目1}
- {確認項目2}
テスト方針
- 単体テスト: {必要/不要}
- 統合テスト: {必要/不要}
- E2Eテスト: {必要/不要}
確認済み事項
- {AskUserQuestion で確認した項目1}: {回答}
- {AskUserQuestion で確認した項目2}: {回答}
**情報不足時**: 以下の形式で出力
```markdown
## コンテキスト収集結果
### ステータス: ⚠️ 情報不足
### 収集できた情報
- {収集できた情報}
### 不足している情報
- {不足1}: {なぜ必要か}
- {不足2}: {なぜ必要か}
### 推奨アクション
1. ユーザーに追加情報を求める
2. または `/spec-create` で仕様書を作成する
AskUserQuestion 使用ガイドライン
使用すべき場面
- 複数の実装方法が考えられる場合
- 破壊的変更の可能性がある場合
- テスト方針が不明確な場合
- スコープの境界が曖昧な場合
使用を避けるべき場面
- Issue 本文に明記されている場合
- プロジェクトの規約で決まっている場合
- 技術的に選択肢が1つしかない場合
質問のベストプラクティス
- 選択肢を2-4個に絞る
- 各選択肢のトレードオフを説明
- 推奨オプションを明示(「推奨」と記載)
エラー処理
| エラー種別 | 原因 | 対処 |
|---|---|---|
| Issue 取得失敗 | Issue が存在しない/アクセス権限なし | ユーザー指示のみから要件を推測 |
| 関連コード不在 | 新規機能で既存コードがない | 類似機能を探索、なければ新規作成前提 |
| 要件が完全に不明 | 指示が抽象的すぎる | AskUserQuestion で段階的に明確化 |
実行制約
このSkillは task-executer エージェントから呼び出されます。spec が存在しないことが前提です。
連携
- 呼び出し元:
task-executer- コンテキスト収集フェーズ - 代替Skill:
spec-context-loader- spec がある場合の文脈収集
最終更新: 2025-01-10