スキルは、エージェントが必要なときに read_skill で読み込む Markdown のガイドです(ランディングページの作り方、ブランドの書き方、ダッシュボードのレイアウトのしかたなど)。load: always が付いたスキルは、最初のターンからシステムプロンプトに入ります。Silverpoint にはいくつか同梱されており、エージェントの中心となるプロンプトに手を加えずに、自分のスキルを追加したり、同梱のスキルを上書きしたりできます。同じスキルが、アプリ内のエージェント、MCP クライアント、silverpoint コマンドラインのすべてに届きます。
スキルは Markdown ファイルで、先頭にフロントマターのブロックを置くこともできます。
---
title: Brand voice
summary: How Acme writes: short, plain, no jargon. Read before writing any copy.
---
# Brand voice
Write in short sentences. Say "use" not "utilize". ...
title は人が読む名前です。summary は 1 行で、エージェントのスキル一覧に表示されます(エージェントがいつそのスキルを読むかはこれで決まります)。何のためのスキルかがわかるように書いてください。read_skill の返す内容です。title: の値で、なければ最初の # 見出し、それもなければスキルの名前になります。タイトルが空になることはなく、読み込みが失敗することもありません。閉じる --- のないフロントマターや、: を含まない行は、意味の通るところまで読まれます。フロントマターがまったくないファイルは、概要のないスキルになります。.md を除いて小文字にし、英字と数字以外の連続を 1 つのダッシュに置き換えたものです。Brand Kit.md は brand-kit になります。read_skill にはタイトルも渡せます。load: always(値の大文字小文字は問わず、前後の空白は無視)を付けると、スキルは常時読み込み(後述)になります。ほかの値、空の値、load キーなしの場合は、必要なときに読み込まれます。load: always が付いたスキルは全文がエージェントのシステムプロンプトに入るので、エージェントは read_skill を呼ばなくても最初のターンからその内容を知っています(呼び出しは飛ばされがちでした。エージェントが design-principles を読んだのは編集の会話 17 件中 4 件で、既存のアプリについては一度もありませんでした)。
---、load: always、---、続けて本文)を置きます。エージェントにはブロックのあとのテキストが見え、ドキュメントは本文を書かれたとおりに保持します(以前と 1 バイトも違わずに保存されます)。load: always がなければ必要なときの読み込みになり、ブロックのあるドキュメントのコピーは、下のバージョンがそうでなくても常時読み込みになります。オフにしたスキルは読み込まれません。# Always-loaded skills の下に入ります。各スキルは ## Skill: <name> のあとに、read_skill が返すのとまったく同じテキストが続きます。このセクションはターンごとに変わらないのでプロンプトキャッシュが効き(項目 47)、プロンプトバージョンにも含まれます。常時読み込みのスキルにも read_skill は使え、同じテキストを返します。一覧にも引き続き載ります。Claude Code と Codex のバックエンドにも、追加されるプロンプトの中で同じセクションが渡ります。silverpoint instructions は含まれるスキルの名前を挙げ、最初の編集の前に read_skill で読むようクライアントに伝えます(名前だけです。指示は小さいままにし、いつ読むかはクライアント側のモデルが決めます)。skills 行で、指定されたスキルには "load": "always" か "load": "overLimit" が付きます。常時読み込みの予算は、エージェントのモデルのコンテキストウインドウの 20 パーセントを、1 トークン 4 文字で文字数に換算したものです。tokens × 4 × 0.2 を切り捨て、上限は 1,000,000 文字です。ウインドウは同梱の表 ModelContextWindows(SilverpointAgent)から取ります。モデル選択に出てくるモデルごとに 1 つの項目があり、それぞれに出典(Anthropic のモデル概要、OpenAI のモデルページ、Apple の TN3193)が付いています。
claude-opus-5-5、claude-sonnet-5-5、claude-fable-5-1、claude-haiku-5-5:1,000,000 トークン → 800,000 文字。sonnet、opus、haiku:1,000,000 トークン → 800,000 文字。gpt-6.1-sol、gpt-6-astra、gpt-6-sol、gpt-6-luna:1,050,000 トークン → 840,000 文字。gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna:400,000 トークン → 320,000 文字。gpt-6.1-sol、gpt-6-astra、gpt-6-luna:1,050,000 トークン → 840,000 文字。apple-intelligence:4,096 トークン → 3,276 文字。silverpoint instructions、テストも同じです。skills 行、プロンプトバージョンに、実際に動いているモデルを使います。ウインドウの大きいモデルなら、64,000 文字には収まらないスキルも含まれます。schema、operations、design-principles はそこでは上限超過になり(行と skills 行にそう表示されます)、エージェントは代わりにコンパクトコアで動きます。短いプロンプトに、schema と operations の代わりになるリファレンスが付き、常時読み込みのスキルはまったくありません。Always-loaded skills: up to 800,000 characters with claude-opus-5-5 (20 percent of its 1,000,000-token context).(日本語の表示では「常時読み込みのスキル:claude-opus-5-5では最大800,000文字(コンテキスト1,000,000トークンの20パーセント)。」)、表にないモデルでは (its context size is not known)(「コンテキストのサイズは不明です」)となります。行、バッジのヘルプ、ビューア、上限超過の注記とアラートもこの数値を使います。load の行だけです。 ユーザーのスキルのファイル(名前は問いません。Brand Kit.md も含みます)では、キーは既存のフロントマターのブロックの閉じる --- の直前に入るか、先頭に --- / load: always / --- のブロックが追加されます。ほかの値の load: 行はその場で置き換えられます。オフにするとその行が削除され、それがブロックの唯一の行だったときはブロックも削除されるので、オンにしてからオフにすると元のバイト列に戻ります。改行コード(CRLF は CRLF のまま)、ほかのキー、その順番、本文はそのままで、ファイルは変更があるときだけアトミックに書き込まれます。ドキュメントのスキルでは、本文先頭のブロックに同じ編集が 1 つの取り消し単位として行われます(スキルを常時読み込みに設定 または スキルを必要時の読み込みに設定)。--- で、閉じる --- の行がないスキルは一切変更されません。ピンには閉じていないブロックを指すエラーが表示され、何も書き込まれません(UTF-8 のテキストでないファイルも同様です)。Uses 3,000 of 64,000 characters · 1,000 left(日本語の表示では「64,000文字中 3,000文字を使用 · 残り 1,000文字」)、上限超過の行に Needs 4,000 characters · 1,000 of 64,000 left(「4,000文字が必要 · 残り 1,000 / 64,000文字」)と表示されます。ほかのモデルでは上限はそのモデルのものになります(Claude Opus 5.5 では 800,000)。どの行のバッジのヘルプやビューアにも同じ内容が表示され、必要なときに読み込むスキルのビューアには、そのスキルの文字数と、常時読み込みのスキルに残っている文字数が表示されます。数値は SkillLibrary.alwaysLoadedBudget と alwaysLoadedSize で、プロンプトが使うのと同じ数え方です。Marked Load Always: tone.md.(日本語の表示では「常時読み込みに設定済み:tone.md。」)Finder に表示と読み込む… の横に、ヘッダーはすべての行についてスキルの数とオフの数(9 skills · 1 off、オフがなければ 9 skills。日本語の表示では「9件のスキル · オフ 1件」)と、スキルを絞り込む フィールドを表示します。入力すると、タイトル、名前(スラッグ)、概要にそのテキストを含む行だけに絞り込まれます。大文字小文字やアクセントの有無は問いません(resume で "Résumé layouts" が見つかります)。一致するものがなければ一覧に No skills match “x”.(「「x」に一致するスキルはありません。」)と表示され、フィールドを空にするとすべての行が戻ります。絞り込みはウインドウの表示だけのもので、何も保存されません。
ModelContextWindows でのウインドウが 32,000 トークン以下のモデルは、コンパクトコア(CompactCore、SilverpointAgent)で動きます。今のところ該当するのは Apple Intelligence(4,096 トークン)だけです。常時読み込みのスキルを含む完全なプロンプトは約 60,000 文字、ツールカタログ全体は約 79,000 文字で、そのようなウインドウの何倍にもなるので、アプリ内のエージェントは小さな編集 1 つに絞ったリクエストを送ります。ほかのすべてのモデル、表にないモデル、MCP、Claude Code と Codex のバックエンド、silverpoint instructions には、これまでとまったく同じものが渡ります。
AgentPrompt.compactSystem):エージェントが何者か、相手の言語で返答すること、ターンは 1 つの取り消し単位であること。最も大切な少数のルール(編集の前に get_document を深さ 1 で、get_nodes を ID 指定で使って調べる、頼まれたことだけを変える、実際の文言を使う、アクセントカラーは 1 つ、本文のコントラストは 4.5:1 で inspect_layout で確認する)。確認のルール(ask_user の質問は 1 つだけ、その質問なしでは編集できないときだけ)。有効なガイドの名前を 1 行で(Guides (read_skill): …、トピックのガイドがどうしても必要なときだけ読む)。schema と operations の代わりになるリファレンス(ノードの種類 frame、text、rectangle、その共通のキー、batch_design の挿入、更新、削除の例を 1 つずつ。1,079 文字)。最後にハウスルールで、400 文字で … を付けて切られます。常時読み込みのスキル、スタイルの一覧、ドキュメントの種類、接続したツール、プロフィール、ウェブ検索のセクションはありません。get_document(アウトライン)、get_nodes(ID 指定のノード)、find_nodes(名前やテキストでノードを探す)、batch_design(編集)、find_empty_space(新しいトップレベルのフレームを置く場所)、inspect_layout(画像を見ずにクリッピングとコントラストを確認。オンデバイスのモデルには画像認識がないので screenshot は提供しません)、read_skill(トピックのガイド、まれに)、ask_user(質問 1 つ)。make_options と propose_directions は複数の手順にまたがり、リファレンスが list_operations の代わりになります。report_issue やそのほかのツールは含まれません。各定義は共有カタログの定義から 1 つの関数(CompactCore.definition)で作られます。説明の最初の 1 文(最大 160 文字。inspect_layout の 1 文はそれより長いので、その範囲内の最後の節の区切りで終わります)と、すべての説明を除いたパラメーターです。ツールの動きは変わらず、プロンプトが深さ 1 と ID 指定のノードを求めるので結果は小さく保たれます。ほかのツールを呼ぶと Unknown tool <name>. として拒否され、外部の MCP ツールはコンパクトコアでは提供されません。skills 行に "core": "compact" が付き、プロンプトバージョン(conversation 行と skills 行、報告された問題)はコンパクトなプロンプト独自のものになります。設定 ▸ スキルでは、上限超過の注記の代わりに Apple Intelligence runs the compact core: a short prompt and 8 tools, without always-loaded skills.(日本語の表示では「Apple Intelligenceはコンパクトコアで動作します:短いプロンプトと8つのツールで、常時読み込みのスキルは使いません。」)と表示されます。CompactCoreFitTests)。Silverpoint には 17 のスキルが同梱されています(Packages/SilverpointKit/Sources/SilverpointAgent/Resources/Skills)。schema、operations、design-principles には load: always が付いているのでプロンプトに入り、トピックとプラットフォームのガイドはすべて必要なときに読まれます。エージェントのプロンプトと MCP の指示は、どれを読むかを伝えます。合うトピックのガイド(ダイアグラム、フローチャート、アーキテクチャ、ステートマシンには diagrams)と、アプリならデバイスフレームや言葉づかい(iPhone または iPad、Mac、Android または Pixel)、またはコードのターゲット(SwiftUI または UIKit、Compose)に応じたプラットフォームのガイドです。
| スキル | 内容 |
|---|---|
schema | すべてのノードの種類とプロパティ(常時読み込み) |
operations | batch_design のしくみ(常時読み込み) |
design-principles | 常時読み込み。すべてのデザインが従う中核(フレームごとに最も大切なものを 1 つ、アプリの基本単位のリズムに沿った余白、レイアウトフレーム、コンポーネント、リンクしたテキストスタイル、変数、本文は 4.5:1、主役の色を 1 つとアクセント)、続いて 新しいデザイン(方向性に名前を付ける。Direction: 行があれば従い、なければ密度、レイアウト、動きを自分で示す。書体を組み合わせ、スケールを選び、既定の見た目を避ける)と 既存のアプリ(アプリ自身の方向性、書体、スケール、パレットが優先)、そしてブランドパレットのルール(brand-drift) |
ios-app | iPhone と iPad、iPhone Duo の閉じた状態と開いた状態:フレーム、セーフエリア、44 pt のタップ領域、Dynamic Type、セマンティックカラー、バー、シート、Liquid Glass、SF Symbols、同心の角丸 |
macos-app | Mac のウインドウ:フレーム、タイトルバー内のツールバー、サイドバーと分割ビュー、28 pt のコントロール、macOS のテキストスタイル、メニュー、密度 |
android-app | Material 3:フレームとサイズクラス、48 dp のタップ領域、タイプロール、カラーロールとトーナルサーフェス、シェイプ、ナビゲーション、FAB |
mobile-app | ios-app と android-app を指す索引 |
landing-page | マーケティングやプロモーションのページ |
web-app | アプリのシェル、サイドバー、テーブル、チャート |
slides | プレゼンテーションのスライド |
design-system | トークン、コンポーネント、そのドキュメント化 |
poster | ポスター:まず名前の付いたデザイン哲学、フレームのサイズ、構図、画像としての文字 |
generative-art | Silverpoint のシェイプによる、シード付きのルールベースのアート:まずシードとパラメーター、決定的なバリエーション |
diagrams | アーキテクチャ、フローチャート、ステートマシン、ER モデル、ツリー、レイヤーの積み重ね、依存関係のグラフ、データフロー、シーケンス:描かないほうがよいとき、種類の選び方、予算(ノード約 9、コネクタ 12、アクセント 2)と分割、スタイル(パレットの変数、細線、アクセント 1 つ、横並びの凡例、ダイアグラムのプリセット 3 つ)、コネクタのルール、配置、connect、layout_diagram、スクリーンショット、修正の流れ、チェックリスト、種類ごとの注意点 |
existing-app | 添付されたアプリやリポジトリの調べ方と、そこで有効なデザイン原則 |
export | 必要なときに:コードの書き出し(SwiftUI、React、Compose、UIKit、HTML)、コードとダイアグラムの読み込み、ウェブサイトの公開(Inkwell のテーマ) |
version-history | バージョン間の変更の説明と取り消し |
プラットフォームのスキルは、Apple の Human Interface Guidelines と Material 3 のデザイントークンをもとに Silverpoint 自身の言葉で書かれています。表現系のスキルは、公開されているデザインスキルの考え方をもとにしています。調査メモは docs/research/design-guidance/ にあります。diagrams は Cathryn Lavery の diagram-design(MIT)から考え方を取り入れ、私たち自身の言葉で書いているので、表記は必要ありません。
| レイヤー | 場所 | 編集するのは |
|---|---|---|
| 同梱 | アプリの中(Resources/Skills) | 設定 ▸ スキル ▸ カスタマイズ… で、上書きとしてあなたのフォルダにコピー |
| パッケージ | ドキュメントがリンクする各デザインシステムパッケージの skills/*.md(docs/design-system-packages.md) | パッケージの作者。ここでは読み取り専用(設定 ▸ スキル ▸ カスタマイズ… で、上書きとしてあなたのフォルダにコピー) |
| ユーザー | ~/Library/Application Support/Silverpoint/Skills/*.md | あなた。エージェントの save_skill(スコープ user)。読み込む… |
| ドキュメント | .silverpoint パッケージの document.json の skills | アプリ内のエディタ。save_skill(スコープ document) |
フォルダは環境変数 SILVERPOINT_SKILLS_DIR で移動できます(アプリ、silverpoint、テストが読みます。テストは一時フォルダを指定します)。数えるのはフォルダ内の *.md ファイルだけです(サブフォルダや隠しファイルは含みません)。
優先順位。 同じ名前が複数のレイヤーにあるときは、いちばん上のものになります。ドキュメントはユーザーに、ユーザーはリンクしたパッケージに、パッケージは同梱に勝ちます。 解決されたスキルは出どころを記録し、下のレイヤーのものを置き換えたときはどれを置き換えたかも記録します(設定では 同梱を上書き、パッケージを上書き、ユーザを上書き と表示され、silverpoint skills は (overrides bundled) と出力します。例:package (overrides bundled))。設定で同梱またはパッケージのスキルに カスタマイズ… を使うと、上書きとしてユーザーフォルダにコピーされ、そのコピーが開きます(常時読み込みのスキルのコピーは load: always を引き継ぎます)。そのコピーのバッジの横(または行のコンテキストメニュー)の リセット はコピーをゴミ箱に移すので、編集したかどうかにかかわらず元のスキルがまた使われます。ドキュメントのスキルはそのドキュメントのものです。ほかのドキュメントからはユーザーまたは同梱のスキルが見えます。パッケージのスキルは、そのパッケージをリンクするドキュメントのものです。ドキュメントがパッケージをリンクしているあいだは silverpoint skills <doc>、read_skill、エージェントの一覧に出てきて、リンクしていなければ消えます(パッケージをインストールしただけでは何も追加されません)。
1 つのフォルダ内での衝突。 Brand Kit.md と brand-kit.md は同じ名前です。バイト順で最初のファイル名が勝ち、もう一方はスキップされて警告として報告されます(silverpoint skills では stderr に、設定ではカードに)。解決された一覧に同じ名前のスキルが 2 つ入ることはありません。
ドキュメントのスキルは、document.json の skills に保存されます。
"skills": {"brand-voice": {"title": "Brand voice", "summary": "...", "body": "..."}}
ドキュメントにスキルがなければこのキーはないので、スキルができる前のドキュメントも、以前とまったく同じように開いて保存できます(.vellum のものも含みます)。
オフにしたスキルは、出どころにかかわらず、エージェントの一覧からも read_skill からも隠れます。同梱のスキルもオフにできます。一覧はユーザー設定で、あなたのフォルダに disabled.json(名前の JSON 配列)として保存されます。
["slides", "brand"]
設定 ▸ スキルが各スキルのスイッチでこれを書き込み、silverpoint と MCP がこれを読むので、オフにしたスキルはどこでもオフになります。フォルダがない場合や、disabled.json が文字列の JSON 配列でない場合は空として扱われ、何もオフにならず、何も失敗しません。
スタイルプリセット(get_style)もレイヤーになっていますが、専用のフォルダがあり、ドキュメントのレイヤーはありません。templates-and-styles.md を参照してください。
設定 ▸ スキルのどの行(同梱、パッケージ、ユーザー、ドキュメント)にも 表示 があります。読み取り専用のシートで、スキルのタイトル、名前、出どころ、概要、エージェントへの届き方(常に読み込み、必要なときに読み込み、上限超過)と、Markdown としてレンダリングした本文(プレビューのみ。テキストは read_skill が返すものとまったく同じです)を表示します。ほかのレイヤーに同じスキルがあるときは、<レイヤー>を上書き(勝ったバージョン)または <レイヤー>に上書きされています(置き換えられたバージョン)という行と、そのバージョンを同じシートに表示する <レイヤー>のバージョンを表示 ボタンが出ます。表示しても、ファイルが書き込まれたりドキュメントが変わったりすることはありません。同梱とパッケージの行には カスタマイズ…(ユーザーのコピーを書き込んで開きます)があり、ユーザーとドキュメントの行には引き続き 編集 があります。
アプリ内の各会話のログ(~/Library/Logs/Silverpoint/agent/、会話ごとに JSONL ファイル 1 つ)には、エージェントにどのスキルが提示され、どれが読まれたかが、どちらのバックエンド(API と Claude Code)でも記録されます。
skills 行は conversation 行のすぐあとに来ます。{"event":"skills","skills":[…],"promptVersion":"…"}。解決されたスキルごとに 1 項目(オフのものも含む)があり、スラッグ順に並びます。
slug と title。source:bundled、package、user、document のいずれかで、そのスラッグで勝ったレイヤー。enabled:スキルがオフ(提示されない)のときは false。hash:タイトル、概要、本文をそれぞれ 0 バイトで区切って並べたものの SHA-256 の最初の 12 桁の 16 進数。ログにテキストを残さずに編集がわかります。load:load: always が付いたスキルだけ。本文がプロンプトに入っていれば always、モデルの常時読み込みの上限で必要なときの読み込みになっていれば overLimit。必要なときに読み込むスキルには load はありません。promptVersion は、これらのスキルを含めたバージョンです(後述)。コンパクトコアで動くモデルでは、この行に "core": "compact" も付き、バージョンはコンパクトなプロンプトのものになります。
user 行の前に新しい skills 行が入ります。何も変わっていなければ、行は書き込まれません。最後の行が、会話が終わったときに提示されていたものです。conversation 行の promptVersion、報告された各問題のもの、評価の保存の単位)は、固定のプロンプトと提示されたスキルを、出どころにかかわらずハッシュしたものです。オフにしたスキルは外れます。そのため、スキルが異なる 2 つの会話はバージョンも異なります。同梱のスキルだけなら以前と同じバージョンになるので、古い評価もそのまま一致します。read_skill ツールの行から取ります。失敗した呼び出し(isError)は数えません。読み込みのタイトルと出どころは、その時点で有効だった skills 行から取ります。会話履歴ではこれが表示されます。
Schema (bundled) ×2, Brand voice (user) ×1 のように並びます。skills 行ができる前に書かれたログも開けます。ヘッダーは「参照 1」とだけ表示され、読み込みは出どころなしでスラッグで表示されます。古いリーダーは、知らない行をスキップするのと同じようにこの行をスキップします。
save_skillsave_skill は scope(document または user)、name、title、summary、body、省略できる load、confirm を受け取ります。共有カタログの 1 つのツールなので、アプリ内のエージェント、MCP クライアント、silverpoint call のすべてで使えます。
<name>.md として書き込まれます。破棄すると何も書き込まれません。次のターンから新しいスキルが一覧に載ります。silverpoint call では、確認するのはクライアントです。confirm: true がなければツールはプレビューを返して何も書き込まず、あれば書き込みます。MCP は両方のスコープに書き込めます(ユーザーのスキルはあなたのフォルダのファイルで、ドキュメントのスキルはほかの編集と同じようにドキュメントの取り消しを通ります)。load は指定を保ちます。 指定しなければ、スキルを書き直しても置き換えるバージョンの選択が保たれ(指定のあるユーザー、パッケージ、同梱のスキルは load: always のまま)、新しいスキルは必要なときの読み込みになります。"always" で指定し、"onDemand" で外します。ほかの値はツールのエラーになり、何も書き込まれません。指定のあるドキュメントのスキルは、本文が load: always のブロックで始まります。差分は指定も比べ(+load: always、-load: always)、保存するスキルに指定が付くときはカードに 常時読み込み と表示されます。{written, scope, slug, title, replaces, text, diff, load} です。replaces は置き換えるバージョンのレイヤー(なければ null)、text はファイル全体、diff はそのバージョンとの unified diff(なければ null)、load は保存されたスキルの状態で always か onDemand です。document でも user でもない、名前に英字も数字もない場合は、ツールのエラーになり、何も書き込まれません。設定 ▸ スキルには ハウスルール のフィールドがあります。アプリ内のエージェントがすべてのドキュメントで従う数行です。システムプロンプトの、ガイドと常時読み込みのスキルのあとに、# House rules の見出しの下に追加されます。空(または空白だけ)なら何も追加されず、プロンプトはハウスルールがない場合とまったく同じです。ハウスルールはアプリ内のエージェント専用で、MCP クライアントには送られず、silverpoint instructions にも表示されません。エージェントを拡張する主な方法はスキルで、ハウスルールは 1 行で済むもの向けです。
ベータにはまだ含まれていません。silverpoint コマンドラインツールはダウンロード版に入っていないため、この節はソースからビルドした場合の説明です。
silverpoint skills [<file.silverpoint>] [--json] [--show <name>]
silverpoint tools [<file.silverpoint>] [--json]
silverpoint instructions [<file.silverpoint>]
skills はスキルごとに 1 行、slug<TAB>source[ (overrides X)][ (disabled)]<TAB>title を出力し、--json を付けると {slug, title, summary, source, overrides, enabled} の配列を出力します。--show <name> は read_skill が返すテキストを出力します(不明な名前やオフの名前では終了コード 1)。ドキュメントを指定すると、一覧にそのドキュメント自身のスキルも含まれます。3 つとも読むだけです。ドキュメントを指定した tools と instructions は、そのドキュメントのスキルを read_skill の説明に載せ、instructions(と mcp の initialize の応答)では、同梱でない有効なスキルを挙げる 1 行を追加します。instructions は、常時読み込みのスキル(ドキュメントを指定すると、そのドキュメント自身の指定のあるものも)を、最初の編集の前に読むよう伝える文の中で、プロンプトの順番どおりに挙げます。オフのスキルは挙げません。