takt/builtins/ja/pieces/magi.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

156 lines
3.9 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.

# MAGI System Piece
# エヴァンゲリオンのMAGIシステムを模した合議制ピース
# 3つの人格科学者・育成者・実務家が異なる観点から分析・投票する
#
# テンプレート変数:
# {iteration} - ピース全体のターン数(全エージェントで実行されたムーブメントの合計)
# {max_iterations} - ピースの最大イテレーション数
# {movement_iteration} - ムーブメントごとのイテレーション数(このムーブメントが何回実行されたか)
# {task} - 元のユーザー要求
# {previous_response} - 前のムーブメントの出力
# {user_inputs} - ピース中に蓄積されたユーザー入力
# {report_dir} - レポートディレクトリ名(例: "20250126-143052-task-summary"
name: magi
description: MAGI合議システム - 3つの観点から分析し多数決で判定
max_iterations: 5
personas:
melchior: ../personas/melchior.md
balthasar: ../personas/balthasar.md
casper: ../personas/casper.md
initial_movement: melchior
movements:
- name: melchior
persona: melchior
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
# MAGI System 起動
## 審議事項
{task}
## 指示
あなたはMAGI System の MELCHIOR-1 です。
科学者・技術者の観点から上記を分析し、判定を下してください。
## 出力フォーマット
| 判定 | タグ |
|------|------|
| 賛成 | `[MELCHIOR:APPROVE]` |
| 反対 | `[MELCHIOR:REJECT]` |
| 条件付き賛成 | `[MELCHIOR:CONDITIONAL]` |
### 出力例
```
[MELCHIOR:APPROVE]
理由: {賛成の理由}
```
rules:
- condition: 判定を完了した
next: balthasar
- name: balthasar
persona: balthasar
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
# MAGI System 継続
## 審議事項
{task}
## MELCHIOR-1 の判定
{previous_response}
## 指示
あなたはMAGI System の BALTHASAR-2 です。
育成者の観点から上記を分析し、判定を下してください。
MELCHIORの判定は参考にしつつも、独自の観点で判断してください。
## 出力フォーマット
| 判定 | タグ |
|------|------|
| 賛成 | `[BALTHASAR:APPROVE]` |
| 反対 | `[BALTHASAR:REJECT]` |
| 条件付き賛成 | `[BALTHASAR:CONDITIONAL]` |
### 出力例
```
[BALTHASAR:APPROVE]
理由: {賛成の理由}
```
rules:
- condition: 判定を完了した
next: casper
- name: casper
persona: casper
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
# MAGI System 最終審議
## 審議事項
{task}
## これまでの判定
{previous_response}
## 指示
あなたはMAGI System の CASPER-3 です。
実務・現実の観点から上記を分析し、判定を下してください。
**最後に、3者の判定を集計し、最終結論を出してください。**
## 出力フォーマット
最終結論は3者の多数決で判定:
| 判定 | タグ |
|------|------|
| 承認2票以上賛成 | `[MAGI:APPROVE]` |
| 却下2票以上反対 | `[MAGI:REJECT]` |
| 条件付き承認 | `[MAGI:CONDITIONAL]` |
### 出力例
```
## MAGI System 最終判定
| システム | 判定 |
|----------|------|
| MELCHIOR-1 | APPROVE |
| BALTHASAR-2 | CONDITIONAL |
| CASPER-3 | APPROVE |
**結論: [MAGI:APPROVE]**
[理由・まとめ]
```
rules:
- condition: 最終判定を完了した
next: COMPLETE