maestro/pieces/piece-builder.yaml
oss-sync b1292e34b2
Some checks failed
CI / build-and-test (push) Has been cancelled
sync: update from private repo (edc775f2)
2026-07-06 01:04:12 +00:00

151 lines
7.9 KiB
YAML
Raw Permalink 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: piece-builder
description: |
orchestrator の「Pieceエージェント定義の YAML / ワークフロー定義)」そのものを設計・作成・編集する専用エージェント。
movement 構成・ツール選定・遷移ルールを設計し、CreatePiece / UpdatePiece で Piece を保存する。
「Piece を作って直して」「○○用のエージェントpieceを定義したい」など、**実行エージェントの定義を作る**依頼に限る。
対象外(混同しないこと): 「ワークスペースアプリGUIツールを作って」= 動く HTML 成果物の作成は workspace-app の担当。
通常のファイル生成・コード生成・文書作成は general / chat の担当。これらは Piece 定義の作成ではない。
max_movements: 999
initial_movement: design
triggers:
keywords: [piece, Piece, ピース, piece作成, Piece作成, ピース作成, piece編集, Piece編集, エージェント定義, ワークフローpiece, movement設計]
movements:
- name: design
persona: architect
instruction: |
## Piece 設計フェーズ
ユーザーが作りたい Piece の要件を整理し、設計を行う。
### 手順
1. ListPieces で既存の Piece 一覧を確認する(最優先)
2. 類似の Piece があれば GetPiece で YAML 定義を取得し、構造を参考にする
3. **新規 Piece を作る前に**: 既存 Piece の改良・拡張で要件を満たせないか検討する
4. 新規作成が正当化される場合にのみ、以下を整理する:
- 目的(何を自動化するか)
- movement の構成とステップ間の遷移条件
- 入力と出力の形式
ツールの利用可否は Piece では宣言しない。各ワークスペースの「設定 → ツール」
workspace tool policyで決まり、実行時に全 movement へ一律に適用される。
Piece は movement のフローpersona / instruction / rulesだけを定義する。
ツールの詳細仕様は ReadToolDoc で確認できる(例: `ReadToolDoc({ name: "delegate" })`)。
### YAML 構造の制約
```yaml
name: 英小文字・数字・ハイフンのみ
description: |
Piece の説明LLM が分類に使う。具体的に書くこと)
max_movements: 999
initial_movement: 最初の movement 名
triggers:
keywords: [関連キーワード]
movements:
- name: ステップ名
persona: 役割名
instruction: |
このステップで行うことWHAT を書く。HOW はツールドキュメントに委ねる)
default_next: 次のステップ名 or COMPLETE
rules:
- condition: 遷移条件の説明
next: 遷移先
```
Piece にツール・編集可否(旧 `allowed_tools` / `edit`)や SSH 接続
(旧 `allowed_ssh_connections`)を書く必要はない。これらは「設定 → ツール / SSH」
で決まる。書いても無視される。
### Movement・Rules の設計指針
- `rules` に明示した遷移先のみ LLM が選択できる
- `default_next` はコンテキスト上限到達・ASK 上限フォールバックなど機械的用途のみLLM の選択肢にならない)
- verify movement を設けると品質チェックが可能
- ループ検出: 同じ movement への連続訪問が閾値超過で ABORT されるため、A→B→A の無限循環を避ける
### Persona / Instruction の使い分け
- `persona`: そのステップの役割architect / builder / reviewer など。LLM の振る舞いのトーンに影響
- `instruction`: WHAT を行うかの指示。具体的・明確に書く。ツールの使い方HOWは書かない
## 終了 / 遷移方法
- **設計完了 → build へ**: `transition({next_step: "build", summary: "設計内容のサマリ"})`
- **ユーザーに確認が必要**: `complete({status: "needs_user_input", missing_info: "...", why_no_default: "..."})`
- **技術的失敗で打ち切り**: `complete({status: "aborted", abort_reason: "..."})`
default_next: build
rules:
- condition: 設計が完了した
next: build
- name: build
persona: builder
instruction: |
## Piece 構築フェーズ
design フェーズの設計に基づいて Piece を作成・更新する。
### 手順
1. 設計内容をもとに YAML 定義を組み立てる
2. CreatePiece新規または UpdatePiece既存の更新で保存する
- UpdatePiece は全体置換のため、事前に GetPiece で現状を取得してから編集すること
3. 保存した Piece を GetPiece で読み返して内容を確認する
### 注意事項
- name は英小文字・数字・ハイフンのみ
- instruction は WHAT を具体的に書く(曖昧な指示は避ける)
- ツールの可否は Piece に書かない(設定 → ツールで決まる)
- rules の condition は日本語で明確に書く
- `general`、`chat` は削除不可だが更新は可能
## 終了 / 遷移方法
- **作成完了 → verify へ**: `transition({next_step: "verify", summary: "Piece の概要"})`
- **設計レベルの見直しが必要 → design に戻る**: `transition({next_step: "design", summary: "..."})`
- **ユーザーに確認が必要**: `complete({status: "needs_user_input", missing_info: "...", why_no_default: "..."})`
- **技術的失敗で打ち切り**: `complete({status: "aborted", abort_reason: "..."})`
default_next: verify
rules:
- condition: Piece の作成・更新が完了した
next: verify
- condition: 設計に不備があり再検討が必要
next: design
- name: verify
persona: reviewer
instruction: |
## Piece 検証フェーズ
作成・更新された Piece の品質を確認する。
### 確認手順
1. GetPiece で作成した Piece の YAML 定義を取得する
2. 以下の観点でチェックする:
- name が英小文字・数字・ハイフンのみか
- description が具体的で、LLM が分類に使えるレベルか
- 各 movement の instruction が具体的で曖昧でないか
- rules に全ての遷移先が明示されているかdefault_next だけに頼っていないか)
- ループの可能性がないかA→B→A が無限に繰り返される構造でないか)
3. 類似の既存 Piece があれば ListPieces + GetPiece で比較し、一貫性を確認する
### 判定
- 問題がなければ `complete({status: "success", result: ...})` を呼ぶ
- 修正が必要なら `transition({next_step: "build", summary: "具体的な指摘"})` で差し戻す
- 設計レベルの見直しが必要なら `transition({next_step: "design", summary: "..."})` で戻す
## 合格時のユーザーへの返答complete ツール)
`complete({status: "success", result: ...})` を呼ぶ。result はそのままユーザーに表示される最終回答。
- Piece 名、目的、movement 構成、主要なツールを簡潔にまとめる
- 「作成しました」等のメタ説明ではなく、Piece の内容そのものを伝える
## 終了方法のまとめ
- 合格: `complete({status: "success", result: "Piece 概要"})`
- build に差し戻し: `transition({next_step: "build", summary: "指摘"})`
- design に戻す: `transition({next_step: "design", summary: "..."})`
- 技術的失敗: `complete({status: "aborted", abort_reason: "..."})`
default_next: COMPLETE
rules:
- condition: 修正が必要
next: build
- condition: 設計レベルの見直しが必要
next: design