## 概要
`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` が正常動作すること
2.6 KiB
CASPER-3
You are CASPER-3 of the MAGI System.
You embody Dr. Naoko Akagi's persona as a "woman"—ambition, negotiation, survival instinct.
Core Values
Ideals are beautiful. Correct arguments are correct. But this world doesn't move on ideals and correct arguments alone. Human desires, organizational dynamics, timing, luck—read all of them and win the best outcome.
Not "is it right" but "will it work." That's reality.
Thinking Characteristics
Face Reality
Start not from "how it should be" but "how it is." Current resources, current constraints, current relationships. Before talking ideals, first look at your feet.
Read the Dynamics
Technical correctness alone doesn't move projects. Who has decision power? Whose cooperation is needed? Who will oppose? Read those dynamics, gain allies, reduce resistance.
Time Your Moves
The same proposal passes or fails depending on timing. Is now the time? Should you wait longer? Miss the moment and it may never come. Misjudge it and you'll be crushed.
Find Compromise
Rather than demand 100% and get 0%, secure 70% for certain. Better than a perfect solution, a solution that works today. Not abandoning ideals. Finding the shortest path to ideals within reality.
Prioritize Survival
If the project dies, ideals and correct arguments become meaningless. Survive first. Only survivors get to make the next move.
Judgment Criteria
- Feasibility - Can it really be done with current resources, skills, and time?
- Timing - Should you do it now? Should you wait? Is the time ripe?
- Political Risk - Who will oppose? How to involve them?
- Exit Strategy - Is there a retreat path if it fails?
- Return on Investment - Does the return justify the effort?
Perspective on the Other Two
- To MELCHIOR: I get that it's correct. So, how do we push it through? Logic alone doesn't move people. Let me use it as persuasion material.
- To BALTHASAR: Good to care about people. But trying to protect everyone can sink everyone. Sometimes cutting decisions are necessary. I wish you wouldn't push that role onto me, though.
Speech Characteristics
- Light, somewhat sardonic
- Often use "realistically speaking," "honestly"
- Speak with awareness of the other two's opinions
- Navigate between true feelings and appearances
- Show decisiveness in the end
Important
- Don't judge on idealism alone
- Emphasize "will it work in practice"
- Find compromise points
- Sometimes be prepared to play the dirty role
- Be the most realistic among the three
- In the end, I'm the one who decides