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

263 lines
8.2 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.

# レビュー専用ピース
# コードやPRをレビューするだけで編集は行わない
# ローカル: コンソール出力のみ。PR指定時: PRにインラインコメントサマリを投稿
#
# フロー:
# plan -> reviewers (parallel: arch-review + security-review + ai-review) -> supervise
# -> pr-comment -> COMPLETE (PRコメント要求時)
# -> COMPLETE (ローカル: コンソール出力のみ)
# -> ABORT (rejected)
#
# 全ムーブメント edit: falseファイル変更なし
#
# テンプレート変数:
# {iteration} - ピース全体のターン数
# {max_iterations} - 最大イテレーション数
# {movement_iteration} - ムーブメントごとのイテレーション数
# {task} - 元のユーザー要求
# {previous_response} - 前のムーブメントの出力
# {user_inputs} - 蓄積されたユーザー入力
# {report_dir} - レポートディレクトリ名
name: review-only
description: レビュー専用ピース - コードをレビューするだけで編集は行わない
max_iterations: 10
stances:
review: ../stances/review.md
personas:
planner: ../personas/planner.md
architecture-reviewer: ../personas/architecture-reviewer.md
security-reviewer: ../personas/security-reviewer.md
ai-antipattern-reviewer: ../personas/ai-antipattern-reviewer.md
supervisor: ../personas/supervisor.md
pr-commenter: ../personas/pr-commenter.md
instructions:
review-arch: ../instructions/review-arch.md
review-security: ../instructions/review-security.md
review-ai: ../instructions/review-ai.md
report_formats:
architecture-review: ../report-formats/architecture-review.md
security-review: ../report-formats/security-review.md
ai-review: ../report-formats/ai-review.md
review-summary: ../report-formats/review-summary.md
initial_movement: plan
movements:
- name: plan
edit: false
persona: planner
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: レビュー対象が明確
next: reviewers
- condition: ユーザーが質問をしている(レビュータスクではない)
next: COMPLETE
- condition: 要件が不明確、情報不足
next: ABORT
appendix: |
確認事項:
- {質問1}
- {質問2}
instruction_template: |
## Previous Response (superviseからの差し戻し時)
{previous_response}
レビュー依頼を分析し、レビュー方針を立ててください。
**これはレビュー専用ピースです。** コード編集は行いません。
以下に集中してください:
1. レビュー対象のファイル/モジュールを特定
2. レビューの重点領域を決定アーキテクチャ、セキュリティ、AIパターン等
3. 依頼に記載された特定の懸念事項を整理
**PR番号が記載されている場合**(例: "PR #42")、レビュアーが
PRの変更ファイルに集中できるよう計画に含めてください。
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
stance: review
report:
name: 01-architect-review.md
format: architecture-review
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-arch
- name: security-review
edit: false
persona: security-reviewer
stance: review
report:
name: 02-security-review.md
format: security-review
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-security
- name: ai-review
edit: false
persona: ai-antipattern-reviewer
stance: review
report:
name: 03-ai-review.md
format: ai-review
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-ai
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: supervise
- name: supervise
edit: false
persona: supervisor
stance: review
report:
- Review Summary: 04-review-summary.md
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved, PR comment requested
next: pr-comment
- condition: approved
next: COMPLETE
- condition: rejected
next: ABORT
instruction_template: |
## レビュー結果
{previous_response}
**これはレビュー専用ピースです。** テスト実行やビルドは行わないでください。
レビュー結果を統合し、最終サマリーを作成する役割です。
**やること:**
1. Report Directory内の全レビューレポートを読む
2. アーキテクチャ・セキュリティ・AIレビューの結果を統合
3. 統合レビューサマリーと総合判定を作成
4. ルーティング判断:
- タスクにPRへのコメント投稿が含まれている場合
(例: "PRにコメントして"、"PRにレビュー結果を投稿"
→ `pr-comment` ムーブメントへcondition: "approved, PR comment requested"
- ローカルレビューのみ → COMPLETEcondition: "approved"
- 重大な問題が見つかった場合 → ABORTcondition: "rejected"
**Review Summaryレポートフォーマット:**
```markdown
# レビューサマリー
## 総合判定: APPROVE / REJECT
## サマリー
{2-3文で全レビュー結果を統合}
## レビュー結果
| レビュー | 結果 | 主要な発見 |
|---------|------|-----------|
| アーキテクチャ | APPROVE/REJECT | {概要} |
| セキュリティ | APPROVE/REJECT | {概要} |
| AIアンチパターン | APPROVE/REJECT | {概要} |
## 要注意の問題
| # | 重大度 | ソース | 場所 | 問題 |
|---|--------|--------|------|------|
| 1 | High | セキュリティ | `file:line` | 説明 |
## 改善提案
- {全レビューからの統合提案}
```
- name: pr-comment
edit: false
persona: pr-commenter
allowed_tools:
- Read
- Glob
- Grep
- Bash
rules:
- condition: コメント投稿完了
next: COMPLETE
- condition: コメント投稿失敗
next: COMPLETE
instruction_template: |
## レビューサマリー
{previous_response}
レビュー結果をPRにコメントとして投稿してください。
**手順:**
1. タスク説明からPR番号を抽出
2. Report Directory内の全レビューレポートを読む:
- `01-architect-review.md`(アーキテクチャレビュー)
- `02-security-review.md`(セキュリティレビュー)
- `03-ai-review.md`AIアンチパターンレビュー
- `04-review-summary.md`(統合サマリー)
3. 重要度でフィルタリングし、Critical/High/Mediumの指摘をインラインコメントとして投稿
4. 以下のフォーマットでサマリーコメントを投稿:
```
## 自動レビューサマリー
{04-review-summary.mdからの総合判定とサマリー}
### レビュー結果
| レビュー | 結果 |
|---------|------|
| アーキテクチャ | {結果} |
| セキュリティ | {結果} |
| AIアンチパターン | {結果} |
### 主要な発見
{重要な指摘のリスト}
### 改善提案
{統合された提案}
---
*[takt](https://github.com/toruticas/takt) review-only ピースで生成*
```