takt/builtins/ja/STYLE_GUIDE.md
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

68 lines
2.5 KiB
Markdown
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.

# スタイルガイド
プロンプトアーキテクチャの各レイヤーごとにスタイルガイドを用意している。
| レイヤー | ガイド | 配置先 |
|---------|--------|--------|
| ペルソナ | [PERSONA_STYLE_GUIDE.md](PERSONA_STYLE_GUIDE.md) | system prompt`{{agentDefinition}}` |
| スタンス | [STANCE_STYLE_GUIDE.md](STANCE_STYLE_GUIDE.md) | user messageinstruction 内) |
| インストラクション | [INSTRUCTION_STYLE_GUIDE.md](INSTRUCTION_STYLE_GUIDE.md) | Phase 1 メッセージ(`{{instructions}}` |
| レポートフォーマット | [REPORT_STYLE_GUIDE.md](REPORT_STYLE_GUIDE.md) | `report.format` |
## テンプレート
`templates/` にテンプレートファイルを用意している。新規作成時はコピーまたは参照して使う。
```
templates/
├── personas/ # ペルソナテンプレート
│ ├── simple.md # ドメイン知識なし
│ ├── expert.md # ドメイン知識あり
│ └── character.md # キャラクター型
├── stances/ # スタンステンプレート
│ └── stance.md
├── instructions/ # インストラクションテンプレート
│ ├── plan.md
│ ├── architect.md
│ ├── implement.md
│ ├── review.md
│ ├── ai-review-standalone.md
│ ├── ai-fix.md
│ ├── fix.md
│ ├── arbitrate.md
│ └── supervise.md
└── reports/ # レポートフォーマットテンプレート
├── plan.md
├── architecture-design.md
├── review.md
├── security-review.md
├── validation.md
└── summary.md
```
## 3層プロンプトアーキテクチャ
```
System Prompt:
[TAKT コンテキスト]
[ペルソナ] ← エージェントの identity・専門知識
User Message (Phase 1):
[実行コンテキスト]
[Piece Context]
[User Request]
[Previous Response]
[Instructions] ← ムーブメント固有の手順
└── [スタンス] ← 共有行動規範instruction 内に含まれる)
```
## 分離の判断フロー
```
この内容は…
├── 特定のエージェントだけが必要 → ペルソナ
├── 複数のエージェントが共有 → スタンス
├── ムーブメント固有の手順 → インストラクション
└── エージェント出力の構造定義 → レポートフォーマット
```