takt/builtins/ja/pieces/research.yaml
nrslib ea7ce54912 takt: # タスク指示書: resources/ → builtins/ リネーム + export-cc 修正
## 概要
`resources/` ディレクトリを `builtins/` にリネームし、用途を明確化。同時に export-cc コマンドを拡張して全リソースをコピーするように修正する。

---

## タスク一覧

### 1. ディレクトリリネーム(優先度: 高)

| 変更前 | 変更後 |
|--------|--------|
| `resources/` | `builtins/` |
| `resources/global/{lang}/` | `builtins/{lang}/`(global/ 階層を除去) |
| `resources/project/` | `builtins/project/` |
| `resources/skill/` | `builtins/skill/` |

### 2. 不要ファイル削除(優先度: 高)

- `builtins/{lang}/prompts/` を削除
  - 対象: `interactive-system.md`, `interactive-summary.md`
  - 理由: コードから未参照、実体は `src/shared/prompts/`

### 3. コード修正 — パス参照(優先度: 高)

`resources` → `builtins`、`global/{lang}` → `{lang}` に更新:

| ファイル | 修正内容 |
|----------|----------|
| `src/infra/resources/index.ts` | `getResourcesDir()`, `getGlobalResourcesDir()`, `getLanguageResourcesDir()` 等のパス |
| `src/infra/config/paths.ts` | `getBuiltinPiecesDir()`, `getBuiltinPersonasDir()` |
| `src/infra/config/global/initialization.ts` | `copyLanguageConfigYaml()` |
| `src/infra/config/loaders/pieceCategories.ts` | `getLanguageResourcesDir()` 参照 |
| `src/features/config/ejectBuiltin.ts` | `getLanguageResourcesDir()` 参照 |
| `src/features/config/deploySkill.ts` | `getResourcesDir()` 参照 |

### 4. export-cc 修正(優先度: 高)

ファイル: `src/features/config/deploySkill.ts`

**現状**: pieces/ と personas/ のみコピー

**修正後**:
- `builtins/{lang}/` 全体を `~/.claude/skills/takt/` にコピー
- `skill/` のファイル(SKILL.md, references/, takt-command.md)は従来通り
- サマリー表示を新リソースタイプ(stances, instructions, knowledge 等)に対応
- confirm メッセージ修正:
  - 現状: `'上書きしますか?'`
  - 修正後: `'既存のスキルファイルをすべて削除し、最新版に置き換えます。続行しますか?'`

### 5. テスト修正(優先度: 中)

| ファイル | 修正内容 |
|----------|----------|
| `src/__tests__/initialization.test.ts` | `getLanguageResourcesDir` のパス期待値 |
| `src/__tests__/piece-category-config.test.ts` | mock パス |
| その他 `resources` パスを参照しているテスト | パス更新 |

### 6. ビルド・パッケージ設定(優先度: 中)

| ファイル | 修正内容 |
|----------|----------|
| `package.json` | `files` フィールドで `resources/` → `builtins/` |
| `tsconfig.json` | `resources/` への参照があれば更新 |
| `.gitignore` | 必要に応じて更新 |

### 7. ドキュメント(優先度: 低)

- `CLAUDE.md` の Directory Structure セクションを更新
- JSDoc コメントから `prompts/` 記述を削除

---

## 制約

- `builtins/{lang}/` のフラット構造は変更不可(ピースYAML内の相対パス依存)
- eject のセーフティ(skip-if-exists)は変更不要
- export-cc のセーフティ(SKILL.md 存在チェック + confirm)は維持

---

## 確認方法

- `npm run build` が成功すること
- `npm test` が全てパスすること
- `takt init` / `takt eject` / `takt export-cc` が正常動作すること
2026-02-07 14:46:20 +09:00

137 lines
4.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Research Piece
# 調査タスクを自律的に実行するピース
# Planner が計画を立て、Digger が実行し、Supervisor が確認する
#
# フロー:
# plan -> dig -> supervise -> COMPLETE (approved)
# -> plan (rejected: 計画からやり直し)
#
# テンプレート変数:
# {iteration} - ピース全体のターン数(全エージェントで実行されたムーブメントの合計)
# {max_iterations} - ピースの最大イテレーション数
# {movement_iteration} - ムーブメントごとのイテレーション数(このムーブメントが何回実行されたか)
# {task} - 元のユーザー要求
# {previous_response} - 前のムーブメントの出力
# {user_inputs} - ピース中に蓄積されたユーザー入力
# {report_dir} - レポートディレクトリ名(例: "20250126-143052-task-summary"
name: research
description: 調査ピース - 質問せずに自律的に調査を実行
max_iterations: 10
personas:
research-planner: ../personas/research-planner.md
research-digger: ../personas/research-digger.md
research-supervisor: ../personas/research-supervisor.md
initial_movement: plan
movements:
- name: plan
persona: research-planner
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
## ピース状況
- イテレーション: {iteration}/{max_iterations}(ピース全体)
- ムーブメント実行回数: {movement_iteration}(このムーブメントの実行回数)
- ムーブメント: plan
## 調査依頼
{task}
## Supervisorからのフィードバック再計画の場合
{previous_response}
## 追加のユーザー入力
{user_inputs}
## 指示
上記の調査依頼について、調査計画を立ててください。
**重要**: ユーザーに質問しないでください。
- 不明点は仮定を置いて進める
- 複数の解釈がある場合は、すべてを調査対象に含める
- Supervisorからフィードバックがある場合は、指摘を反映した計画を作成
rules:
- condition: 計画が完了した
next: dig
- condition: 情報が不足しており計画を立てられない
next: ABORT
- name: dig
persona: research-digger
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
## ピース状況
- イテレーション: {iteration}/{max_iterations}(ピース全体)
- ムーブメント実行回数: {movement_iteration}(このムーブメントの実行回数)
- ムーブメント: dig
## 元の調査依頼
{task}
## 調査計画
{previous_response}
## 追加のユーザー入力
{user_inputs}
## 指示
上記の調査計画に従って、実際に調査を実行してください。
**重要**: ユーザーに質問しないでください。
- 調査できる範囲で調査する
- 調査できなかった項目は「調査不可」と報告
利用可能なツール:
- Web検索
- GitHub検索gh コマンド)
- コードベース検索
- ファイル読み取り
rules:
- condition: 調査が完了した
next: supervise
- condition: 調査を実行できない
next: ABORT
- name: supervise
persona: research-supervisor
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
## ピース状況
- イテレーション: {iteration}/{max_iterations}(ピース全体)
- ムーブメント実行回数: {movement_iteration}(このムーブメントの実行回数)
- ムーブメント: supervise (調査品質評価)
## 元の調査依頼
{task}
## Digger の調査結果
{previous_response}
## 指示
調査結果を評価し、元の依頼に対して十分な回答になっているか判断してください。
**重要**: 問題がある場合は、Plannerへの具体的な指示を含めてください。
rules:
- condition: 調査結果が元の依頼に対して十分である
next: COMPLETE
- condition: 調査結果が不十分であり、計画からやり直す必要がある
next: plan