このドキュメントは Anthropic 公式 (= Claude Code / Agent SDK / Skills repo) の skills 設計指針を、本 repo の運用文脈向けに要約した SOR (Single Source of Record) です。新規 skill 追加・既存 skill 改修・LLM が自己評価する際の参照基準。
注意: 本 v1.0.0 の内容は claude-code-guide subagent 経由の引用が混在する。実装作業に着手する直前に WebFetch で primary docs を直接再確認すること (= memory feedback「subagent 伝聞情報は鵜呑みにしない」運用)。
| Scope | 公式 path | 本 repo |
|---|---|---|
| Project | .claude/skills/<skill-name>/SKILL.md |
./.claude/skills/ (Issue #107 で集約済) |
| Personal | ~/.claude/skills/<skill-name>/SKILL.md |
該当なし |
| Plugin | <plugin-dir>/skills/<skill-name>/SKILL.md |
該当なし |
| Submodule 同梱 | (慣習) <package>/.claude/skills/<name>/SKILL.md |
./packages/logic-solver-mcp/.claude/skills/ |
---
# 必須
name: my-skill # 64 文字以内、lowercase + hyphen
description: 何をする skill か + 何時使うか。LLM が skill selection に使う唯一の材料。
# 60〜150 字慣習。`when_to_use` を内包する文章で書く
# Claude Code 拡張 (optional)
allowed-tools: Read Grep # 事前許可 tool。permission prompt を減らす
disable-model-invocation: true # user 明示呼出のみ可、Claude 自動起動を抑止
user-invocable: false # 逆。Claude のみ呼出可
context: fork # subagent で実行 (= parent context を汚さない)
paths: "src/**,*.ts" # 該当 path が context にあるときだけ activate
---
LLM が skill を選ぶ唯一の材料が description。以下を守る:
TRIGGER when: / SKIP: のような prefix は推奨されていない、自然文で書く)| skill | description 字数 | 評価 |
|---|---|---|
logic-solver-mcp-ui-nav |
200 字 (Issue #113 修正後) | ⚠️ やや長い、120 字に圧縮余地 |
datalog-debug-skill |
約 120 字 | ✅ |
datalog-schema-philosophy |
約 90 字 | ✅ |
datalog-migration-skill |
約 150 字 | ✅ ぎりぎり |
references/<topic>.md — API reference 等examples/<scenario>.md — usage examplesscripts/<helper>.<ext> — 実行 helper (= readable but not loaded)!`command` で frontmatter / 本文に command 出力を埋め込み) は Claude Code / Agent SDK 両方で挙動が 未確認 → 要 WebFetch全 SKILL.md が 100〜250 行の範囲、supporting files 未使用。現状サイズで問題なし、500 行に近づいたら references/ 分離を検討。
公式の 3 段 progressive disclosure:
[FORMS.md](FORMS.md) のような relative link をたどった時だけ| Frontmatter | 効果 |
|---|---|
disable-model-invocation: true |
Claude が自動起動できない。/skills <name> で user が明示呼出する場合のみ実行 |
user-invocable: false |
逆。Claude のみ呼出可、user の /skills から見えない |
paths: "src/**,*.ts" |
matching file が context にあるときのみ skill が候補に上がる |
| (none) | デフォルト。description match で自動 selection 対象 |
/skills slash command で user 側からの skill 一覧確認・手動起動が可能。
allowed-tools: Read Grep mcp__logic-solver-remote__freee_auth_status
skill 実行中に許可される tool を事前宣言。permission prompt を減らす。
options = ClaudeAgentOptions(allowed_tools=["Read", "Grep"])
SDK 側の allowed_tools (= snake_case) と frontmatter allowed-tools (= kebab-case) は別フィールド名なので、両方併記する場合は 両者を明示。
MCP 側 tool (server.tool 登録時) には readOnlyHint / destructiveHint / idempotentHint / openWorldHint を付ける慣習。ただし Claude Code 現状は annotation を permission 判定に使っていない (= code.claude.com/docs/en/permissions 確認、Issue #108 として trackingしている)。
/doctor slash command で description token 予算超過を検知できる (= claude-code-guide 経由情報、要 WebFetch)/docs/skill/<name> route が存在することを assert| 方式 | path | 用途 |
|---|---|---|
| Project | <repo>/.claude/skills/ (git 管理) |
チーム全員に同じ skill を配布 |
| Personal | ~/.claude/skills/ (個人) |
個人用 utility skill |
| Plugin | <plugin>/skills/ (.claude-plugin/ manifest 経由) |
第三者配布 |
| API beta | container.skills (claude.com SDK、2025-10〜) |
programmatic upload |
| 本 repo の HTTP 配信 (非公式) | /docs/skill/<name> + /raw (Issue #111 H) |
LLM agent が WebFetch で取得、Claude Code IDE auto-discover とは独立 |
marketplace は公式に存在しない。
転記日 / version を bump し、末尾 CHANGELOG セクションに差分を明記