# Skills（InstallSkill / ReadSkill / ListSkills）

Skill は「参照知識」（手順書・ガイド・規約）。実行テンプレートの Piece とは別物。
Piece の取得・編集には GetPiece / CreatePiece / UpdatePiece を使う。

利用可能なスキル一覧はシステムプロンプトの **Skills Index** に出る。本文を読むには
`ReadSkill({ name: "..." })` を呼ぶ。

> **重要: スキルを `Read` で直接読もうとしないこと。** スキルは workspace の外に
> 保存されており、`Read("skills/<name>/SKILL.md")` のようなパスは（ディレクトリ型を
> ReadSkill で展開する前は）存在しない。まず `ReadSkill({ name })` を呼ぶ。ディレクトリ型は
> それで `skills/<name>/` に展開され、以後は `skills/<name>/...` を `Read` で読める。

## ツール

- **InstallSkill** — スキルを保存する。通常は `content` に SKILL.md 全文（YAML frontmatter + 本文）を渡す。workspace 内に `SKILL.md` と `scripts/` 等を含むディレクトリを組み立て済みなら `sourcePath` に **workspace 相対パス**（例: `output/my-skill`）を渡す。ホスト上のフルパスは不要（パス中に workspace の実配置（`space/{id}/files` 等）が含まれていれば自動で workspace 相対に読み替える）。`scope` は `user`（個人 or 共有ワークスペース）か `system`（全ユーザー共有・admin のみ）。**`name` パラメータは SKILL.md frontmatter の `name:` と完全一致が必須**（不一致だと一覧上の表示名と保存フォルダ名がズレて UI から管理不能になるため、インストール自体を拒否する）。frontmatter に有効な `name:`（`[a-z0-9_-]`）が無い SKILL.md も拒否される。
- **ReadSkill** — スキル本文を取得する。ディレクトリ型スキルは workspace の `skills/{name}/` に展開され、その相対パスでスクリプトを実行できる。展開済みでもスキル元が更新されていれば、次の ReadSkill でコピーを丸ごと最新版に置き換える（元が未変更なら workspace 内コピーへの手直しは維持される）。
- **ListSkills** — インストール済みスキルの一覧を返す。

## スコープと可視性（重要）

`scope: 'user'` で保存したスキルの置き場所は、**いま作業しているワークスペースで決まる**。
AGENTS.md・メモリ・Piece と同じ考え方。

| 作業中のワークスペース | 保存先 | 見える人 |
|---|---|---|
| 共有ワークスペース（案件など） | `data/spaces/{spaceId}/skills/` | そのワークスペースのメンバー全員 |
| 個人ワークスペース | `data/users/{userId}/skills/` | 自分だけ |

つまり、共有ワークスペースで作ったスキルはメンバー間で共有され、Skills Index にも
全メンバー分が出る。個人ワークスペースで作ったスキルは自分専用で、他人には見えない。

`scope: 'system'` は作業中のワークスペースに関係なく常に全ユーザー共有（admin 専用）。
この挙動はワークスペーススコープの影響を受けない。

### 共有時の注意

共有ワークスペースのスキルは他メンバーのジョブからも実行され得る（共有 Piece・
共有 AGENTS.md と同じ信頼境界）。秘匿情報や自分専用の手順は、共有ワークスペースでは
保存しないこと。個人ワークスペースで作れば自分だけのものになる。

InstallSkill のセキュリティスキャン（高深刻度をブロック、中深刻度を警告）と
sourcePath の workspace 外参照拒否・サイズ/深さ上限は、スコープに関係なく常に適用される。
