# Piece 編集ツール（ListPieces / GetPiece / CreatePiece / UpdatePiece）

Piece（ワークフロー定義 YAML）を CRUD するツール群。`piece-builder` piece で使用。

## ListPieces — 一覧

```js
ListPieces()
// → 全 Piece の名前・説明・トリガーキーワード一覧
```

新規 Piece を作る前に **必ず実行して既存 Piece を確認**する。重複・類似機能の Piece を作らないように。

## GetPiece — 取得

```js
GetPiece({ name: "research" })
// → 指定 Piece の完全な YAML 定義
```

- 既存 Piece の構造を参考にする
- UpdatePiece の前に現状を確認

## CreatePiece — 作成

```js
CreatePiece({
  name: "my-new-piece",   // 英小文字・数字・ハイフンのみ
  yaml_content: `
name: my-new-piece
description: ...
initial_movement: gather
movements:
  - name: gather
    persona: ...
    instruction: ...
    allowed_tools: [Read, Write, ...]
    rules:
      - condition: ...
        next: ...
`
})
```

必須要素:
- `name`
- `description`
- `initial_movement`
- `movements`（少なくとも 1 つ）
- 各 movement の `rules`（遷移条件、`next` を明示）

## UpdatePiece — 更新

```js
UpdatePiece({
  name: "research",
  yaml_content: "..."   // 全体を置き換える
})
```

**差分更新ではなく全体置換**。GetPiece で取得 → 編集 → UpdatePiece の流れ。

## 制限

- `general` と `chat` は削除不可（更新は可能）
- YAML パースエラーは即座にエラー
- movement 構造の検証あり（`rules[].next` が存在する movement か等）

## 設計指針

新しい Piece を作る前に:
1. ListPieces で既存を確認
2. 既存 Piece に少しの調整で対応できないか検討
3. 必要なら GetPiece で類似 Piece を参考にする
4. その上で CreatePiece

「Piece が増えすぎる」のはメンテナンス負債。**Piece は追加よりも既存 Piece の改良が原則**。
