takt/resources/skill/SKILL.md

106 lines
4.0 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.

---
name: takt-engine
description: TAKT ピースエンジンのリファレンス。/takt コマンドから使用される。ピースYAML定義に従ったマルチエージェントオーケストレーション。
---
# TAKT Piece Engine
ピースYAMLファイルを読み込み、定義されたワークフロー状態遷移マシンに従って複数のAIエージェントをオーケストレーションするエンジン。
## 設計原則
- **Skill = 純粋なエンジンロジックのみ**
- ピースYAML、エージェント .md は全て **ファイル参照** で実行時に Read する
- Skill 内にピース定義・エージェント定義を一切埋め込まない
- このスキルが持つのは「YAMLの読み方」「状態遷移の回し方」「ルール評価の仕方」だけ
## ピース解決
### ピースYAMLの検索
引数の第1トークンからピースYAMLファイルを特定する。
1. ファイルパス判定: `.yaml` / `.yml` で終わる、または `/` を含む → Read で直接読む
2. ピース名検索(以下の順で Glob/Read を試行):
- `~/.takt/pieces/{name}.yaml` (ユーザーカスタム、優先)
- `~/.claude/skills/takt/pieces/{name}.yaml` Skill同梱ビルトイン
3. 見つからない場合: 上記2ディレクトリを Glob (`*.yaml`) で列挙し、AskUserQuestion で選択させる
### エージェント .md の解決
ピースYAML内の `agent:` フィールドは、**ピースYAMLファイルのディレクトリからの相対パス**。
例: ピースが `~/.claude/skills/takt/pieces/default.yaml` にあり、`agent: ../agents/default/coder.md` の場合
→ 絶対パスは `~/.claude/skills/takt/agents/default/coder.md`
解決手順:
1. ピースYAMLのディレクトリパスを取得
2. 各 movement の `agent:` の相対パスを絶対パスに変換
3. Read tool で .md ファイルの内容を読み込む
4. 読み込んだ内容をエージェントのシステムプロンプトとして使用する
**全てのエージェント .md を事前に読み込む**(状態遷移ループ開始前に)。
## 実行フロー
### ステップ 1: ピースYAMLの読み込みと解析
1. ピース解決でYAMLファイルパスを特定し、Read で読み込む
2. YAML内容を解析して以下を抽出する→ references/yaml-schema.md 参照):
- `name`: ピース名
- `max_iterations`: 最大イテレーション数
- `initial_movement`: 開始 movement 名
- `movements`: 全 movement 定義の配列
### ステップ 2: エージェントの事前読み込み
全 movementparallel のサブステップ含む)から `agent:` パスを収集し、重複を除いて Read で読み込む。
### ステップ 3: 状態遷移ループ
**詳細は references/engine.md を参照。**
```
iteration = 0
current_movement = initial_movement
previous_response = ""
LOOP:
iteration++
if iteration > max_iterations → 強制終了ABORT
movement = movements[current_movement] を取得
if movement が parallel:
→ 並列実行engine.md の「Parallel Movement の実行」参照)
else:
→ 通常実行engine.md の「通常 Movement の実行」参照)
agent_output を取得
rule 評価engine.md の「Rule 評価」参照)
→ matched_rule を決定
next = matched_rule.next
if next == "COMPLETE" → 成功終了、ユーザーに結果を報告
if next == "ABORT" → 失敗終了、ユーザーにエラーを報告
previous_response = agent_output
current_movement = next
→ LOOP に戻る
```
### ステップ 4: 完了報告
- COMPLETE: 最後の agent 出力のサマリーをユーザーに表示
- ABORT: 失敗理由をユーザーに表示
- max_iterations 到達: 強制終了を通知
## 詳細リファレンス
| ファイル | 内容 |
|---------|------|
| `references/engine.md` | Movement 実行、プロンプト構築、Rule 評価の詳細ロジック |
| `references/yaml-schema.md` | ピースYAMLの構造定義とフィールド説明 |