silverpoint
スキルとハウスルール
スキルは、エージェントが必要なときに read_skill で読み込む Markdown のガイドです。load: always を付けると最初のターンからシステムプロンプトに入ります。Silverpoint にはいくつか同梱されており、自分のスキルを追加したり、同梱のスキルを上書きしたりできます。

スキルは、エージェントが必要なときに 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 件で、既存のアプリについては一度もありませんでした)。

  • どのレイヤーでも指定できます。 同梱、パッケージ、ユーザーのスキルは、自分のフロントマターで指定します。ドキュメントのスキルには独自のフロントマターがないので、本文の先頭に 1 つのブロック(---、load: always、---、続けて本文)を置きます。エージェントにはブロックのあとのテキストが見え、ドキュメントは本文を書かれたとおりに保持します(以前と 1 バイトも違わずに保存されます)。
  • 上書きしたスキルは自分で決めます。 上のレイヤーがスキルを置き換えるときは、勝ったファイル自身のキーが使われます。常時読み込みの同梱スキルをユーザーがコピーしても、load: always がなければ必要なときの読み込みになり、ブロックのあるドキュメントのコピーは、下のバージョンがそうでなくても常時読み込みになります。オフにしたスキルは読み込まれません。
  • 上限はモデルによって決まります(モデルごとの予算を参照)。コンテキストウインドウの 20 パーセントを文字数にしたもので、モデルのウインドウがわからないときは常時読み込みのテキストの合計が 64,000 文字です。指定されたスキルは決まった順番(レイヤー順に同梱、パッケージ、ユーザー、ドキュメント、その中では名前順)でたどられ、合計が積み上げられます。まだ収まるスキルは含まれ、上限を超えてしまうスキルは必要なときの読み込みのまま(上限超過)になり、そのまま次へ進みます。そのため、あとに出てくる小さなスキルが含まれることもあります。同梱の 3 つで約 49,900 文字です。
  • 入る場所。 含まれるスキルは、システムプロンプトの変わらない部分でガイドの一覧のあと、ハウスルールやターンごとの内容より前に、# Always-loaded skills の下に入ります。各スキルは ## Skill: <name> のあとに、read_skill が返すのとまったく同じテキストが続きます。このセクションはターンごとに変わらないのでプロンプトキャッシュが効き(項目 47)、プロンプトバージョンにも含まれます。常時読み込みのスキルにも read_skill は使え、同じテキストを返します。一覧にも引き続き載ります。Claude Code と Codex のバックエンドにも、追加されるプロンプトの中で同じセクションが渡ります。
  • MCP と 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)が付いています。

  • Anthropic:claude-opus-5-5、claude-sonnet-5-5、claude-fable-5-1、claude-haiku-5-5:1,000,000 トークン → 800,000 文字。
  • Claude(お使いの Claude Code 経由):sonnet、opus、haiku:1,000,000 トークン → 800,000 文字。
  • Codex(お使いの Codex CLI 経由):gpt-6.1-sol、gpt-6-astra、gpt-6-sol、gpt-6-luna:1,050,000 トークン → 840,000 文字。
  • Codex(お使いの Codex CLI 経由):gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna:400,000 トークン → 320,000 文字。
  • OpenAI:gpt-6.1-sol、gpt-6-astra、gpt-6-luna:1,050,000 トークン → 840,000 文字。
  • Apple Intelligence:apple-intelligence:4,096 トークン → 3,276 文字。
  • 表にないモデル(カスタムのモデル ID、OpenAI 互換のサーバーやプリセット、それが指定するどのモデルでも)はウインドウがわからないので、予算は 64,000 文字のままです。モデルを知りようがないもの、つまり MCP(クライアントのモデルはクライアントのものです)、silverpoint instructions、テストも同じです。
  • アプリ内のエージェントは、システムプロンプト(Claude Code と Codex のセッションも)、ログの skills 行、プロンプトバージョンに、実際に動いているモデルを使います。ウインドウの大きいモデルなら、64,000 文字には収まらないスキルも含まれます。
  • Apple Intelligence はウインドウが小さく 3,276 文字なので、同梱の 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 つの取り消し単位として行われます(スキルを常時読み込みに設定 または スキルを必要時の読み込みに設定)。
  • 閉じていないブロックは拒否されます。 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 で、プロンプトが使うのと同じ数え方です。
  • 収まらないときも常時読み込みは指定を書き込み、アラートで、スキルは指定されたものの必要なときの読み込みのまま(上限超過)であること、必要な文字数と残りの文字数、空きを作るにはほかのスキルの常時読み込みをオフにすることをはっきり伝えます。
  • ドキュメントのスキルエディタには 常時読み込み のチェックボックスがあり、表示しているテキストの先頭のブロックを編集します。そのため、保存すると指定がほかの編集と一緒に書き込まれます(1 つの「スキルの編集」の取り消し単位)。閉じていないブロックがあるとチェックボックスは使えず、エディタがその理由を表示します。
  • 読み込む… はファイルを 1 バイトも違わずに指定ごとコピーし、そのメッセージの最後に、指定のある読み込んだファイルを挙げます。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つのツールで、常時読み込みのスキルは使いません。」)と表示されます。
  • 測ったサイズ。 最初のリクエストを 1 つのコンパクトな JSON ドキュメント(システムテキスト、メッセージのテキスト、各ツールの名前、説明、パラメーター)にしたものは、1 トークン 3 文字という控えめな換算で 4,096 トークンの半分、6,144 文字以内に収まる必要があり、残りの半分をターンに使います。空のキャンバスと「Make a pricing card」で 5,179 文字、20 ノードで 2 つを選択し「Make the selected title larger」と 2,000 文字のハウスルールで 5,670 文字です(同じリクエストは Claude Opus 5.5 では 124,891 文字)。前者のうち、プロンプトは 2,353 文字、8 つのツールは 2,532 文字です(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すべてのノードの種類とプロパティ(常時読み込み)
operationsbatch_design のしくみ(常時読み込み)
design-principles常時読み込み。すべてのデザインが従う中核(フレームごとに最も大切なものを 1 つ、アプリの基本単位のリズムに沿った余白、レイアウトフレーム、コンポーネント、リンクしたテキストスタイル、変数、本文は 4.5:1、主役の色を 1 つとアクセント)、続いて 新しいデザイン(方向性に名前を付ける。Direction: 行があれば従い、なければ密度、レイアウト、動きを自分で示す。書体を組み合わせ、スケールを選び、既定の見た目を避ける)と 既存のアプリ(アプリ自身の方向性、書体、スケール、パレットが優先)、そしてブランドパレットのルール(brand-drift)
ios-appiPhone と iPad、iPhone Duo の閉じた状態と開いた状態:フレーム、セーフエリア、44 pt のタップ領域、Dynamic Type、セマンティックカラー、バー、シート、Liquid Glass、SF Symbols、同心の角丸
macos-appMac のウインドウ:フレーム、タイトルバー内のツールバー、サイドバーと分割ビュー、28 pt のコントロール、macOS のテキストスタイル、メニュー、密度
android-appMaterial 3:フレームとサイズクラス、48 dp のタップ領域、タイプロール、カラーロールとトーナルサーフェス、シェイプ、ナビゲーション、FAB
mobile-appios-app と android-app を指す索引
landing-pageマーケティングやプロモーションのページ
web-appアプリのシェル、サイドバー、テーブル、チャート
slidesプレゼンテーションのスライド
design-systemトークン、コンポーネント、そのドキュメント化
posterポスター:まず名前の付いたデザイン哲学、フレームのサイズ、構図、画像としての文字
generative-artSilverpoint のシェイプによる、シード付きのルールベースのアート:まずシードとパラメーター、決定的なバリエーション
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 行から取ります。

会話履歴ではこれが表示されます。

  • 選んだ会話のヘッダーに「提示 9 · 参照 2」と表示され、読まれたスキルが多い順に Schema (bundled) ×2, Brand voice (user) ×1 のように並びます。
  • 各行には「参照したスキル 2件」と表示され、ツールチップにタイトルが出ます。
  • 会話の一覧には スキルを読みました のフィルタがあり、評価セグメントにも同じフィルタがあります(そのスキルを読んだ会話から採点されたターン)。

skills 行ができる前に書かれたログも開けます。ヘッダーは「参照 1」とだけ表示され、読み込みは出どころなしでスラッグで表示されます。古いリーダーは、知らない行をスキップするのと同じようにこの行をスキップします。

エージェントからスキルを保存する:save_skill

save_skill は scope(document または user)、name、title、summary、body、省略できる load、confirm を受け取ります。共有カタログの 1 つのツールなので、アプリ内のエージェント、MCP クライアント、silverpoint call のすべてで使えます。

  • アプリでは直接書き込みません。エージェントパネルに、タイトル、スコープ、全文(ほかのスキルを置き換えるときは、そのバージョンとの差分)と、保存と破棄のボタンが付いたカードが表示されます。保存すると書き込まれます。ドキュメントのスキルは 1 つの取り消し単位として、ユーザーのスキルはあなたのフォルダの <name>.md として書き込まれます。破棄すると何も書き込まれません。次のターンから新しいスキルが一覧に載ります。
  • MCP と 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 は、常時読み込みのスキル(ドキュメントを指定すると、そのドキュメント自身の指定のあるものも)を、最初の編集の前に読むよう伝える文の中で、プロンプトの順番どおりに挙げます。オフのスキルは挙げません。