[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D00NH19F10CR7NHGSFVTQD":3,"skill-same:01M6D00NH19F10CR7NHGSFVTQD":65},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":40,"updatedAt":41,"install":42,"resources":54},"01M6D00NH19F10CR7NHGSFVTQD","takt",null,"TAKT ワークフローエンジン。Agent Team を使ったマルチエージェントオーケストレーション。ワークフロー YAML（steps \u002F initial_step）に従ってマルチエージェントを実行する。","j5ik2o\u002Fai-tools","j5ik2o","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F461711?v=4","01M6CR6HZJM242J0HDRJT5GY6J","Junichi Kato","01M6CZP6PXKYDDNX5A7PZ3P4DY",28,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fj5ik2o\u002Fai-tools\u002Fblob\u002Fmain\u002Fplugins\u002Ftakt\u002Fskills\u002Fj5ik2o-takt-facet-builder\u002Freferences\u002Ftakt\u002Fbuiltins\u002Fskill\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26],"yaml","team","agent team","2026-11-10 10:12:30",false,"---\nname: takt\ndescription: TAKT ワークフローエンジン。Agent Team を使ったマルチエージェントオーケストレーション。ワークフロー YAML（steps \u002F initial_step）に従ってマルチエージェントを実行する。\nuser-invocable: true\n---\n\n# TAKT Workflow Engine\n\n## 引数の解析\n\n$ARGUMENTS を以下のように解析する:\n\n```\n\u002Ftakt {workflow} [permission] {task...}\n```\n\n- **第1トークン**: ワークフロー名または YAML ファイルパス（必須）\n- **第2トークン**: 権限モード（任意）。以下のキーワードの場合は権限モードとして解釈する:\n  - `--permit-full` — 全権限付与（mode: \"bypassPermissions\"）\n  - `--permit-edit` — 編集許可（mode: \"acceptEdits\"）\n  - 上記以外 → タスク内容の一部として扱う\n- **残りのトークン**: タスク内容（省略時は AskUserQuestion でユーザーに入力を求める）\n- **権限モード省略時のデフォルト**: `\"default\"`（権限確認あり）\n\n例:\n- `\u002Ftakt coding FizzBuzzを作って` → coding ワークフロー、default 権限\n- `\u002Ftakt coding --permit-full FizzBuzzを作って` → coding ワークフロー、bypassPermissions\n- `\u002Ftakt \u002Fpath\u002Fto\u002Fcustom.yaml 実装して` → カスタムYAML、default 権限\n\n## 事前準備: リファレンスの読み込み\n\n手順を開始する前に、以下の2ファイルを **Read tool で読み込む**:\n\n1. `~\u002F.claude\u002Fskills\u002Ftakt\u002Freferences\u002Fengine.md` - プロンプト構築、レポート管理、ループ検出の詳細\n2. `~\u002F.claude\u002Fskills\u002Ftakt\u002Freferences\u002Fyaml-schema.md` - ワークフロー YAML の構造定義\n\n## あなたの役割: Team Lead\n\nあなたは **Team Lead（オーケストレーター）** である。\nワークフロー YAML に定義された状態遷移に従って Agent Team を率いる。\n\n### 禁止事項\n\n- **自分で作業するな** — コーディング、レビュー、設計、テスト等は全てチームメイトに委任する\n- **タスクを自分で分析して1つの Task にまとめるな** — step を1つずつ順番に実行せよ\n- **step をスキップするな** — 必ず `initial_step` から開始し、Rule 評価で決まった次の step に進む\n- **\"yolo\" をワークフロー名と誤解するな** — \"yolo\" は YOLO（You Only Live Once）の俗語で「無謀・適当・いい加減」という意味。「yolo ではレビューして」= 「適当にやらずにちゃんとレビューして」という意味であり、ワークフロー作成の指示ではない\n\n### あなたの仕事は4つだけ\n\n1. ワークフロー YAML を読んで遷移を理解する\n2. 各 step のプロンプトを構築する（references\u002Fengine.md 参照）\n3. **Task tool** でチームメイトを起動して作業を委任する\n4. チームメイトの出力から Rule 評価を行い、次の step を決定する\n\n**重要**: ユーザーが明示的に指示するまで git commit を実行してはならない。実装完了 ≠ コミット許可。\n\n### ツールの使い分け（重要）\n\n| やること | 使うツール | 説明 |\n|---------|-----------|------|\n| チーム作成 | **TeamCreate** tool | 最初に1回だけ呼ぶ |\n| チーム解散 | **TeamDelete** tool | 最後に1回だけ呼ぶ |\n| チームメイト起動 | **Task** tool (team_name 付き) | step ごとに呼ぶ。**結果は同期的に返る** |\n\n**TeamCreate \u002F TeamDelete でチームメイトを個別に起動することはできない。** チームメイトの起動は必ず Task tool を使う。\n**Task tool は同期的に結果を返す。** TaskOutput やポーリングは不要。呼べば結果が返ってくる。\n\n## 手順（この順序で厳密に実行せよ）\n\n### 手順 1: ワークフロー解決と読み込み\n\n引数の第1トークンからワークフロー YAML ファイルを特定して Read で読む。\n\n**第1トークンがない場合（ワークフロー名未指定）:**\n→ ユーザーに「ワークフロー名を指定してください。例: `\u002Ftakt coding タスク内容`」と伝えて終了する。\n\n**ワークフロー YAML の検索順序:**\n1. `.yaml` \u002F `.yml` で終わる、または `\u002F` を含む → ファイルパスとして直接 Read\n2. 名前解決:\n   - `~\u002F.takt\u002Fworkflows\u002F{name}.yaml` （ユーザーカスタム、優先）\n   - `~\u002F.claude\u002Fskills\u002Ftakt\u002Fworkflows\u002F{name}.yaml` （Skill 同梱ビルトイン）\n3. 見つからない場合: 上記ディレクトリを Glob で列挙し、AskUserQuestion で選択させる\n\nYAML から以下を抽出する（→ references\u002Fyaml-schema.md 参照）:\n- `name`, `max_steps`, `initial_step`, `steps` 配列\n- `workflow_config`（ワークフロー全体の provider \u002F runtime 等）\n- セクションマップ: `personas`, `policies`, `instructions`, `output_contracts`, `knowledge`\n\n### 手順 2: セクションリソースの事前読み込み\n\nワークフロー YAML のセクションマップ（`personas:`, `policies:`, `instructions:`, `output_contracts:`, `knowledge:`）から全ファイルパスを収集する。\nパスは **ワークフロー YAML ファイルのディレクトリからの相対パス** で解決する。\n\n例: ワークフローが `~\u002F.claude\u002Fskills\u002Ftakt\u002Fworkflows\u002Fdefault.yaml` にあり、`personas:` に `coder: ..\u002Ffacets\u002Fpersonas\u002Fcoder.md` がある場合\n→ 絶対パスは `~\u002F.claude\u002Fskills\u002Ftakt\u002Ffacets\u002Fpersonas\u002Fcoder.md`\n\n重複を除いて Read で全て読み込む。読み込んだ内容はチームメイトへのプロンプト構築に使う。\n\n### 手順 3: Agent Team 作成\n\n**今すぐ** TeamCreate tool を呼べ:\n\n```\nTeamCreate tool を呼ぶ:\n  team_name: \"takt\"\n  description: \"TAKT {workflow_name} ワークフロー\"\n```\n\n### 手順 4: 初期化\n\n`initial_step`（なければ `steps` の先頭）の名前を確認し、`steps` から該当する step 定義を取得する。\n**以下の変数を初期化する:**\n- `iteration = 1`\n- `current_step = 上記 initial の step 定義`\n- `previous_response = \"\"`\n- `permission_mode = コマンドで解析された権限モード（\"bypassPermissions\" \u002F \"acceptEdits\" \u002F \"default\"）`\n- `step_history = []`（遷移履歴。Loop Monitor 用）\n\n**実行ディレクトリ**: いずれかの step に `report` フィールドがある場合、`.takt\u002Fruns\u002F{YYYYMMDD-HHmmss}-{slug}\u002F` を作成し、以下を配置する。\n- `reports\u002F`（レポート出力）\n- `context\u002Fknowledge\u002F`（Knowledge スナップショット）\n- `context\u002Fpolicy\u002F`（Policy スナップショット）\n- `context\u002Fprevious_responses\u002F`（Previous Response 履歴 + `latest.md`）\n- `logs\u002F`（実行ログ）\n- `meta.json`（run メタデータ）\n\nレポート出力先パスを `report_dir` 変数（`.takt\u002Fruns\u002F{slug}\u002Freports`）として保持する。\n\n次に **手順 5** に進む。\n\n### 手順 5: チームメイト起動\n\n**iteration が max_steps を超えていたら → 手順 8（ABORT: イテレーション上限）に進む。**\n\ncurrent_step のプロンプトを構築する（→ references\u002Fengine.md のプロンプト構築を参照）。\n\nプロンプト構築の要素:\n1. **ペルソナ**: `persona:` キー → `personas:` セクション → .md ファイル内容\n2. **ポリシー**: `policy:` キー → `policies:` セクション → .md ファイル内容（複数可、末尾にリマインダー再掲）\n3. **実行コンテキスト**: cwd, ワークフロー名, step 名, イテレーション情報\n4. **ナレッジ**: `knowledge:` キー → `knowledge:` セクション → .md ファイル内容\n5. **インストラクション**: `instruction:` キー → `instructions:` セクション → .md ファイル内容（テンプレート変数展開済み）\n6. **タスク\u002F前回出力\u002Fレポート指示\u002Fタグ指示**: 自動注入\n\n**通常 step の場合（parallel フィールドなし）:**\n\nTask tool を1つ呼ぶ。**Task tool は同期的に結果を返す。待機やポーリングは不要。**\n\n```\nTask tool を呼ぶ:\n  prompt: \u003C構築したプロンプト全文>\n  description: \"{step_name} - {workflow_name}\"\n  subagent_type: \"general-purpose\"\n  team_name: \"takt\"\n  name: \"{step の name}\"\n  mode: permission_mode\n```\n\nTask tool の戻り値がチームメイトの出力。**手順 5a** に進む。\n\n**parallel step の場合:**\n\n**1つのメッセージで**、parallel 配列の各サブステップに対して Task tool を並列に呼ぶ。\n全ての Task tool が結果を返したら **手順 5a** に進む。\n\n```\n\u002F\u002F サブステップの数だけ Task tool を同時に呼ぶ（例: 2つの場合）\nTask tool を呼ぶ（1つ目）:\n  prompt: \u003Cサブステップ1用プロンプト>\n  description: \"{サブステップ1名} - {workflow_name}\"\n  subagent_type: \"general-purpose\"\n  team_name: \"takt\"\n  name: \"{サブステップ1の name}\"\n  mode: permission_mode\n\nTask tool を呼ぶ（2つ目）:\n  prompt: \u003Cサブステップ2用プロンプト>\n  description: \"{サブステップ2名} - {workflow_name}\"\n  subagent_type: \"general-purpose\"\n  team_name: \"takt\"\n  name: \"{サブステップ2の name}\"\n  mode: permission_mode\n```\n\n### 手順 5a: レポート抽出と Loop Monitor\n\n**レポート抽出**（current_step に `report` フィールドがある場合のみ）:\nチームメイト出力から ```markdown ブロックを抽出し、Write tool で `{report_dir}\u002F{ファイル名}` に保存する。\n詳細は references\u002Fengine.md の「レポートの抽出と保存」を参照。\n\n**Loop Monitor チェック**（ワークフローに `loop_monitors` がある場合のみ）:\n`step_history` に current_step の名前を追加する。\n遷移履歴が loop_monitor の `cycle` パターンに `threshold` 回以上マッチした場合、judge チームメイトを起動して遷移先をオーバーライドする。\n詳細は references\u002Fengine.md の「Loop Monitors」を参照。\n\n### 手順 6: Rule 評価\n\nTask tool から返ってきたチームメイトの出力から matched_rule を決定する。\n\n**通常 step:**\n1. 出力に `[STEP:N]` タグがあるか探す（複数ある場合は最後のタグを採用）\n2. タグがあれば → rules[N] を選択（0始まりインデックス）\n3. タグがなければ → 出力全体を読み、全 condition と比較して最も近いものを選択\n\n**parallel step:**\n1. 各サブステップの Task tool 出力に対して、サブステップの rules で条件マッチを判定\n2. マッチした condition 文字列を記録\n3. 親 step の rules で aggregate 評価:\n   - `all(\"X\")`: 全サブステップが \"X\" にマッチしたら true\n   - `any(\"X\")`: いずれかのサブステップが \"X\" にマッチしたら true\n   - `all(\"X\", \"Y\")`: サブステップ1が \"X\"、サブステップ2が \"Y\" にマッチしたら true\n4. 親 rules を上から順に評価し、最初に true になった rule を選択\n\nmatched_rule が決まったら **手順 7** に進む。\nどの rule にもマッチしなかったら → **手順 8（ABORT: ルール不一致）** に進む。\n\n### 手順 7: 次の step を決定\n\nmatched_rule の `next` を確認する:\n\n- **`next` が \"COMPLETE\"** → **手順 8（COMPLETE）** に進む\n- **`next` が \"ABORT\"** → **手順 8（ABORT）** に進む\n- **`next` が step 名** → 以下を実行して **手順 5 に戻る**:\n  1. `previous_response` = 直前のチームメイト出力\n  2. `current_step` = `next` で指定された step を `steps`（互換: `steps`）配列から取得\n  3. `iteration` を +1 する\n  4. **手順 5 に戻る**\n\n### 手順 8: 終了\n\n1. TeamDelete tool を呼ぶ:\n```\nTeamDelete tool を呼ぶ\n```\n\n2. ユーザーに結果を報告する:\n   - **COMPLETE**: 最後のチームメイト出力のサマリーを表示\n   - **ABORT**: 失敗理由を表示\n   - **イテレーション上限**: 強制終了を通知\n\n## 詳細リファレンス\n\n| ファイル | 内容 |\n|---------|------|\n| `references\u002Fengine.md` | プロンプト構築、レポート管理、ループ検出の詳細 |\n| `references\u002Fyaml-schema.md` | ワークフロー YAML の構造定義とフィールド説明 |\n","# TAKT Workflow Engine\n\n## 引数の解析\n\n$ARGUMENTS を以下のように解析する:\n\n```\n\u002Ftakt {workflow} [permission] {task...}\n```\n\n- **第1トークン**: ワークフロー名または YAML ファイルパス（必須）\n- **第2トークン**: 権限モード（任意）。以下のキーワードの場合は権限モードとして解釈する:\n  - `--permit-full` — 全権限付与（mode: \"bypassPermissions\"）\n  - `--permit-edit` — 編集許可（mode: \"acceptEdits\"）\n  - 上記以外 → タスク内容の一部として扱う\n- **残りのトークン**: タスク内容（省略時は AskUserQuestion でユーザーに入力を求める）\n- **権限モード省略時のデフォルト**: `\"default\"`（権限確認あり）\n\n例:\n- `\u002Ftakt coding FizzBuzzを作って` → coding ワークフロー、default 権限\n- `\u002Ftakt coding --permit-full FizzBuzzを作って` → coding ワークフロー、bypassPermissions\n- `\u002Ftakt \u002Fpath\u002Fto\u002Fcustom.yaml 実装して` → カスタムYAML、default 権限\n\n## 事前準備: リファレンスの読み込み\n\n手順を開始する前に、以下の2ファイルを **Read tool で読み込む**:\n\n1. `~\u002F.claude\u002Fskills\u002Ftakt\u002Freferences\u002Fengine.md` - プロンプト構築、レポート管理、ループ検出の詳細\n2. `~\u002F.claude\u002Fskills\u002Ftakt\u002Freferences\u002Fyaml-schema.md` - ワークフロー YAML の構造定義\n\n## あなたの役割: Team Lead\n\nあなたは **Team Lead（オーケストレーター）** である。\nワークフロー YAML に定義された状態遷移に従って Agent Team を率いる。\n\n### 禁止事項\n\n- **自分で作業するな** — コーディング、レビュー、設計、テスト等は全てチームメイトに委任する\n- **タスクを自分で分析して1つの Task にまとめるな** — step を1つずつ順番に実行せよ\n- **step をスキップするな** — 必ず `initial_step` から開始し、Rule 評価で決まった次の step に進む\n- **\"yolo\" をワークフロー名と誤解するな** — \"yolo\" は YOLO（You Only Live Once）の俗語で「無謀・適当・いい加減」という意味。「yolo ではレビューして」= 「適当にやらずにちゃんとレビューして」という意味であり、ワークフロー作成の指示ではない\n\n### あなたの仕事は4つだけ\n\n1. ワークフロー YAML を読んで遷移を理解する\n2. 各 step のプロンプトを構築する（references\u002Fengine.md 参照）\n3. **Task tool** でチームメイトを起動して作業を委任する\n4. チームメイトの出力から Rule 評価を行い、次の step を決定する\n\n**重要**: ユーザーが明示的に指示するまで git commit を実行してはならない。実装完了 ≠ コミット許可。\n\n### ツールの使い分け（重要）\n\n| やること | 使うツール | 説明 |\n|---------|-----------|------|\n| チーム作成 | **TeamCreate** tool | 最初に1回だけ呼ぶ |\n| チーム解散 | **TeamDelete** tool | 最後に1回だけ呼ぶ |\n| チームメイト起動 | **Task** tool (team_name 付き) | step ごとに呼ぶ。**結果は同期的に返る** |\n\n**TeamCreate \u002F TeamDelete でチームメイトを個別に起動することはできない。** チームメイトの起動は必ず Task tool を使う。\n**Task tool は同期的に結果を返す。** TaskOutput やポーリングは不要。呼べば結果が返ってくる。\n\n## 手順（この順序で厳密に実行せよ）\n\n### 手順 1: ワークフロー解決と読み込み\n\n引数の第1トークンからワークフロー YAML ファイルを特定して Read で読む。\n\n**第1トークンがない場合（ワークフロー名未指定）:**\n→ ユーザーに「ワークフロー名を指定してください。例: `\u002Ftakt coding タスク内容`」と伝えて終了する。\n\n**ワークフロー YAML の検索順序:**\n1. `.yaml` \u002F `.yml` で終わる、または `\u002F` を含む → ファイルパスとして直接 Read\n2. 名前解決:\n   - `~\u002F.takt\u002Fworkflows\u002F{name}.yaml` （ユーザーカスタム、優先）\n   - `~\u002F.claude\u002Fskills\u002Ftakt\u002Fworkflows\u002F{name}.yaml` （Skill 同梱ビルトイン）\n3. 見つからない場合: 上記ディレクトリを Glob で列挙し、AskUserQuestion で選択させる\n\nYAML から以下を抽出する（→ references\u002Fyaml-schema.md 参照）:\n- `name`, `max_steps`, `initial_step`, `steps` 配列\n- `workflow_config`（ワークフロー全体の provider \u002F runtime 等）\n- セクションマップ: `personas`, `policies`, `instructions`, `output_contracts`, `knowledge`\n\n### 手順 2: セクションリソースの事前読み込み\n\nワークフロー YAML のセクションマップ（`personas:`, `policies:`, `instructions:`, `output_contracts:`, `knowledge:`）から全ファイルパスを収集する。\nパスは **ワークフロー YAML ファイルのディレクトリからの相対パス** で解決する。\n\n例: ワークフローが `~\u002F.claude\u002Fskills\u002Ftakt\u002Fworkflows\u002Fdefault.yaml` にあり、`personas:` に `coder: ..\u002Ffacets\u002Fpersonas\u002Fcoder.md` がある場合\n→ 絶対パスは `~\u002F.claude\u002Fskills\u002Ftakt\u002Ffacets\u002Fpersonas\u002Fcoder.md`\n\n重複を除いて Read で全て読み込む。読み込んだ内容はチームメイトへのプロンプト構築に使う。\n\n### 手順 3: Agent Team 作成\n\n**今すぐ** TeamCreate tool を呼べ:\n\n```\nTeamCreate tool を呼ぶ:\n  team_name: \"takt\"\n  description: \"TAKT {workflow_name} ワークフロー\"\n```\n\n### 手順 4: 初期化\n\n`initial_step`（なければ `steps` の先頭）の名前を確認し、`steps` から該当する step 定義を取得する。\n**以下の変数を初期化する:**\n- `iteration = 1`\n- `current_step = 上記 initial の step 定義`\n- `previous_response = \"\"`\n- `permission_mode = コマンドで解析された権限モード（\"bypassPermissions\" \u002F \"acceptEdits\" \u002F \"default\"）`\n- `step_history = []`（遷移履歴。Loop Monitor 用）\n\n**実行ディレクトリ**: いずれかの step に `report` フィールドがある場合、`.takt\u002Fruns\u002F{YYYYMMDD-HHmmss}-{slug}\u002F` を作成し、以下を配置する。\n- `reports\u002F`（レポート出力）\n- `context\u002Fknowledge\u002F`（Knowledge スナップショット）\n- `context\u002Fpolicy\u002F`（Policy スナップショット）\n- `context\u002Fprevious_responses\u002F`（Previous Response 履歴 + `latest.md`）\n- `logs\u002F`（実行ログ）\n- `meta.json`（run メタデータ）\n\nレポート出力先パスを `report_dir` 変数（`.takt\u002Fruns\u002F{slug}\u002Freports`）として保持する。\n\n次に **手順 5** に進む。\n\n### 手順 5: チームメイト起動\n\n**iteration が max_steps を超えていたら → 手順 8（ABORT: イテレーション上限）に進む。**\n\ncurrent_step のプロンプトを構築する（→ references\u002Fengine.md のプロンプト構築を参照）。\n\nプロンプト構築の要素:\n1. **ペルソナ**: `persona:` キー → `personas:` セクション → .md ファイル内容\n2. **ポリシー**: `policy:` キー → `policies:` セクション → .md ファイル内容（複数可、末尾にリマインダー再掲）\n3. **実行コンテキスト**: cwd, ワークフロー名, step 名, イテレーション情報\n4. **ナレッジ**: `knowledge:` キー → `knowledge:` セクション → .md ファイル内容\n5. **インストラクション**: `instruction:` キー → `instructions:` セクション → .md ファイル内容（テンプレート変数展開済み）\n6. **タスク\u002F前回出力\u002Fレポート指示\u002Fタグ指示**: 自動注入\n\n**通常 step の場合（parallel フィールドなし）:**\n\nTask tool を1つ呼ぶ。**Task tool は同期的に結果を返す。待機やポーリングは不要。**\n\n```\nTask tool を呼ぶ:\n  prompt: \u003C構築したプロンプト全文>\n  description: \"{step_name} - {workflow_name}\"\n  subagent_type: \"general-purpose\"\n  team_name: \"takt\"\n  name: \"{step の name}\"\n  mode: permission_mode\n```\n\nTask tool の戻り値がチームメイトの出力。**手順 5a** に進む。\n\n**parallel step の場合:**\n\n**1つのメッセージで**、parallel 配列の各サブステップに対して Task tool を並列に呼ぶ。\n全ての Task tool が結果を返したら **手順 5a** に進む。\n\n```\n\u002F\u002F サブステップの数だけ Task tool を同時に呼ぶ（例: 2つの場合）\nTask tool を呼ぶ（1つ目）:\n  prompt: \u003Cサブステップ1用プロンプト>\n  description: \"{サブステップ1名} - {workflow_name}\"\n  subagent_type: \"general-purpose\"\n  team_name: \"takt\"\n  name: \"{サブステップ1の name}\"\n  mode: permission_mode\n\nTask tool を呼ぶ（2つ目）:\n  prompt: \u003Cサブステップ2用プロンプト>\n  description: \"{サブステップ2名} - {workflow_name}\"\n  subagent_type: \"general-purpose\"\n  team_name: \"takt\"\n  name: \"{サブステップ2の name}\"\n  mode: permission_mode\n```\n\n### 手順 5a: レポート抽出と Loop Monitor\n\n**レポート抽出**（current_step に `report` フィールドがある場合のみ）:\nチームメイト出力から ```markdown ブロックを抽出し、Write tool で `{report_dir}\u002F{ファイル名}` に保存する。\n詳細は references\u002Fengine.md の「レポートの抽出と保存」を参照。\n\n**Loop Monitor チェック**（ワークフローに `loop_monitors` がある場合のみ）:\n`step_history` に current_step の名前を追加する。\n遷移履歴が loop_monitor の `cycle` パターンに `threshold` 回以上マッチした場合、judge チームメイトを起動して遷移先をオーバーライドする。\n詳細は references\u002Fengine.md の「Loop Monitors」を参照。\n\n### 手順 6: Rule 評価\n\nTask tool から返ってきたチームメイトの出力から matched_rule を決定する。\n\n**通常 step:**\n1. 出力に `[STEP:N]` タグがあるか探す（複数ある場合は最後のタグを採用）\n2. タグがあれば → rules[N] を選択（0始まりインデックス）\n3. タグがなければ → 出力全体を読み、全 condition と比較して最も近いものを選択\n\n**parallel step:**\n1. 各サブステップの Task tool 出力に対して、サブステップの rules で条件マッチを判定\n2. マッチした condition 文字列を記録\n3. 親 step の rules で aggregate 評価:\n   - `all(\"X\")`: 全サブステップが \"X\" にマッチしたら true\n   - `any(\"X\")`: いずれかのサブステップが \"X\" にマッチしたら true\n   - `all(\"X\", \"Y\")`: サブステップ1が \"X\"、サブステップ2が \"Y\" にマッチしたら true\n4. 親 rules を上から順に評価し、最初に true になった rule を選択\n\nmatched_rule が決まったら **手順 7** に進む。\nどの rule にもマッチしなかったら → **手順 8（ABORT: ルール不一致）** に進む。\n\n### 手順 7: 次の step を決定\n\nmatched_rule の `next` を確認する:\n\n- **`next` が \"COMPLETE\"** → **手順 8（COMPLETE）** に進む\n- **`next` が \"ABORT\"** → **手順 8（ABORT）** に進む\n- **`next` が step 名** → 以下を実行して **手順 5 に戻る**:\n  1. `previous_response` = 直前のチームメイト出力\n  2. `current_step` = `next` で指定された step を `steps`（互換: `steps`）配列から取得\n  3. `iteration` を +1 する\n  4. **手順 5 に戻る**\n\n### 手順 8: 終了\n\n1. TeamDelete tool を呼ぶ:\n```\nTeamDelete tool を呼ぶ\n```\n\n2. ユーザーに結果を報告する:\n   - **COMPLETE**: 最後のチームメイト出力のサマリーを表示\n   - **ABORT**: 失敗理由を表示\n   - **イテレーション上限**: 強制終了を通知\n\n## 詳細リファレンス\n\n| ファイル | 内容 |\n|---------|------|\n| `references\u002Fengine.md` | プロンプト構築、レポート管理、ループ検出の詳細 |\n| `references\u002Fyaml-schema.md` | ワークフロー YAML の構造定義とフィールド説明 |\n",{"name":5,"description":7,"user-invocable":32},true,"main","3e6b722545091ed1bb6b81fe15f38189099154c1","plugins\u002Ftakt\u002Fskills\u002Fj5ik2o-takt-facet-builder\u002Freferences\u002Ftakt\u002Fbuiltins\u002Fskill",0,"https:\u002F\u002Fgithub.com\u002Fj5ik2o\u002Fai-tools","https:\u002F\u002Fgithub.com\u002Fj5ik2o","https:\u002F\u002Flapras.com\u002Fpublic\u002FNHXS5RH","I'm a tech-lead in the IDEO;PLUS Inc, is lover to Scala\u002FRust, Akka, DDD\u002FCQRS+Event Sourcing.","2026-11-11 20:34:50",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":32},[44,47,50],{"tool":45,"command":46},"npx","npx skills add j5ik2o\u002Fai-tools --skill takt",{"tool":48,"command":49},"bunx","bunx skills add j5ik2o\u002Fai-tools --skill takt",{"tool":51,"command":52},"pnpm","pnpm dlx skills add j5ik2o\u002Fai-tools --skill takt","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fj5ik2o\u002Fai-tools\u002Fblob\u002Fmain\u002Fplugins\u002Ftakt\u002Fskills\u002Fj5ik2o-takt-facet-builder\u002Freferences\u002Ftakt\u002Fbuiltins\u002Fskill\u002FSKILL.md",[55,61],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"references\u002Fengine.md","REFERENCE","参考文档",17458,"https:\u002F\u002Fgithub.com\u002Fj5ik2o\u002Fai-tools\u002Fblob\u002Fmain\u002Fplugins\u002Ftakt\u002Fskills\u002Fj5ik2o-takt-facet-builder\u002Freferences\u002Ftakt\u002Fbuiltins\u002Fskill\u002Freferences\u002Fengine.md",{"path":62,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":63,"sourceHtmlUrl":64},"references\u002Fyaml-schema.md",9737,"https:\u002F\u002Fgithub.com\u002Fj5ik2o\u002Fai-tools\u002Fblob\u002Fmain\u002Fplugins\u002Ftakt\u002Fskills\u002Fj5ik2o-takt-facet-builder\u002Freferences\u002Ftakt\u002Fbuiltins\u002Fskill\u002Freferences\u002Fyaml-schema.md",[66,72,79,102,113,125],{"skillNo":67,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":71,"publishedAt":27},"01M6D03X604YGMM6YFEG4M6767","https:\u002F\u002Fgithub.com\u002Fj5ik2o\u002Fai-tools\u002Fblob\u002Fmain\u002Fplugins\u002Ftakt\u002Fskills\u002Fj5ik2o-takt-workflow-builder\u002Freferences\u002Ftakt\u002Fbuiltins\u002Fskill\u002FSKILL.md",[70],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[5,26,25,24],{"skillNo":73,"name":5,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":27},"01M6D03TAJ6WKRV6XACZHZ70NS","TAKT ワークフローエンジン。codex exec でサブエージェントを起動し、ワークフロー YAML（steps \u002F initial_step）に従って マルチエージェントオーケストレーションを実行する。","https:\u002F\u002Fgithub.com\u002Fj5ik2o\u002Fai-tools\u002Fblob\u002Fmain\u002Fplugins\u002Ftakt\u002Fskills\u002Fj5ik2o-takt-workflow-builder\u002Freferences\u002Ftakt\u002Fbuiltins\u002Fskill-codex\u002FSKILL.md",[],[5,24,78],"codex",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":91,"publishedAt":27},"01M6D02V9SQ13TEDYDGN67K3WA","j5ik2o-takt-workflow-builder","TAKTワークフロー（ワークフローYAML）の作成・カスタマイズスキル。Faceted Prompting （Persona\u002FPolicy\u002FInstruction\u002FKnowledge\u002FOutput Contract）に基づくファセット群の 生成を含む。references\u002Ftaktにあるtaktのソースコード・ドキュメント・ビルトインワークフロー群を 参照資料として活用する。ユーザーの要件をヒアリングし、step構成、ルール設計、 ファセットファイル生成を一括で行う。 トリガー：「ワークフローを作りたい」「ワークフローを定義」「taktのワークフローを作成」 「新しいtaktワークフローを作って」「takt workflow」「ワークフローYAML」","https:\u002F\u002Fgithub.com\u002Fj5ik2o\u002Fai-tools\u002Fblob\u002Fmain\u002Fplugins\u002Ftakt\u002Fskills\u002Fj5ik2o-takt-workflow-builder\u002FSKILL.md",[85,86],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[92,5,93,94,95,96,97,98,99,100,101],"j5ik2o takt workflow builder","builder","workflow builder","workflow","生成","contract","references","knowledge","persona","policy",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":27},"01M6D02P0Y4DEJ19J6V4S5VZ2S","j5ik2o-takt-task-builder","TAKTのtasks.yaml（タスクメタデータ）とタスクディレクトリ（.takt\u002Ftasks\u002F{slug}\u002Forder.md）の 作成・編集を支援するスキル。TaskRecordスキーマに準拠したYAMLエントリの生成、 order.mdタスク仕様書の作成、ステータス遷移ルールの検証を行う。 references\u002Ftaktにあるtaskスキーマ定義・ドキュメントを参照資料として活用する。 トリガー：「タスクを追加」「tasks.yamlを編集」「taktタスクを作成」 「タスク仕様書を書く」「order.mdを作成」「takt task」「タスクを定義」 「pendingタスクを追加」「GitHub Issueからタスク作成」","https:\u002F\u002Fgithub.com\u002Fj5ik2o\u002Fai-tools\u002Fblob\u002Fmain\u002Fplugins\u002Ftakt\u002Fskills\u002Fj5ik2o-takt-task-builder\u002FSKILL.md",[],[5,109,110,93,98,96,24,111,112],"j5ik2o takt task builder","task","tasks","github",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":120,"publishedAt":27},"01M6D022WYSR825B6KB2CSNNY0","j5ik2o-takt-skill-updater","nrslib\u002Ftakt の新バージョンリリース時に、takt-*スキル群（j5ik2o-takt-task-builder, j5ik2o-takt-workflow-builder, j5ik2o-takt-facet-builder, j5ik2o-takt-analyzer, j5ik2o-takt-optimizer）を最新のtaktバージョンに追従させるスキル。 TypeScriptスキーマ（taskRecordSchemas.ts \u002F taskExecutionSchemas.ts）、ワークフローYAML、ファセットMarkdownの差分を検出し、 SKILL.md・参照ドキュメント（task-schema.md等）を体系的に更新する。 トリガー：「taktスキルを更新」「takt-*スキルの鮮度チェック」「taktバージョンアップ対応」 「スキルが古くないか確認」「takt skill updater」","https:\u002F\u002Fgithub.com\u002Fj5ik2o\u002Fai-tools\u002Fblob\u002Fmain\u002Fplugins\u002Ftakt\u002Fskills\u002Fj5ik2o-takt-skill-updater\u002FSKILL.md",[119],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[5,121,122,95,123,93,110,124],"skill updater","j5ik2o takt skill updater","schema","optimizer",{"skillNo":126,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":130,"publishedAt":27},"01M6D01Z6WJEXJTXRKEK6N2NBM","https:\u002F\u002Fgithub.com\u002Fj5ik2o\u002Fai-tools\u002Fblob\u002Fmain\u002Fplugins\u002Ftakt\u002Fskills\u002Fj5ik2o-takt-optimizer\u002Freferences\u002Ftakt\u002Fbuiltins\u002Fskill\u002FSKILL.md",[129],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[5,25,26,24]]