SkillPact · 草案 0.8
導入ガイド
役割ごとの始め方です。パッケージはまだ公開していないので、リポジトリから入れます:git clone https://github.com/kajisho5/skillpact && pip install -e skillpact/ref。
利用者#
SKILL.mdの隣にskill.contract.jsonがあるか、SkillPact のバッジがあるかを見ます。- 契約をチェッカーに貼り付けます(ブラウザの中だけで動き、何も送りません)。効果の一覧を読み、必要以上のものに触れないかを確かめます。
- 正式なレベルは
python3 -m skillpact.cli conformance <skill_dir> --trusted-key <作者の鍵>で確かめます。L3 の意味は「このファイル一式を、その鍵が署名し、テストが通った」ということだけです。 - ハーネスの権限確認は切らないでください。SkillPact は実行時には何も強制しません。
スキルの作者#
python3 -m skillpact.cli init <skill_dir> -o skill.contract.jsonで下書きを作ります。すべての項目を確かめ、TODO(...)とx.init.uncertainを消します(残すとUNCONFIRMED_DRAFT)。- 範囲を狭くします(
/**ではなく$WORKDIR/**)。spend と send は正直に宣言します。依存パッケージは版を固定します(requirements.packagesに"version": "==1.106.2")。それ以外の版が入っているとテストは動きません。 - ネットなしで動くテストを足し、
skillpact test <skill_dir>で実行します。Linux は bubblewrap を入れると完全なサンドボックスになります。入れない場合もテストは動きます(ネットワークのみ隔離)が、L2 / L3 にはなりません。strace も入れると、exec の範囲にないプログラムを起動したケースが不合格になります。macOS は標準の Seatbelt(sandbox-exec)を自動で使います(試験的)。Windows は WSL2 か Linux コンテナの中で実行してください。network: trueのケースは、宣言したホストにだけ HTTP プロキシ(HTTPS_PROXY)経由で通信できます。プロキシ変数を無視するツールはネットワークを使えません。テストからはホーム、/tmp、ホストの環境変数が見えません。skip_unless_envのケースに変数を渡すときは--pass-env NAMEを付けます。 __pycache__/と*.pycを消してからskillpact hash <skill_dir>で全ファイル(migrateの後も実行し直す)のハッシュを載せ、skillpact sign <skill_dir> key.pem(CI ならsign-sigstore)で署名します。公開鍵を公開します。- GitHub Action をコミット SHA で固定し、
pull_request_targetではなくpull_requestで動かします。書き方は次のとおりです。
- uses: kajisho5/skillpact@<commit-sha>
with: { path: ., min-level: L2 }
- CI が出したレベルに合うバッジをバッジから選んで表示します。
ハーネスの開発元#
- インストール時に
skill.contract.jsonを読んで検証します(Python のライブラリか TypeScript のvalidate)。 - 利用者のポリシーと照合し(
match_policy)、capability ごとにdecisionとdecision_worst_caseを示します。 - 結果を自社の権限設定に変換します。Claude Code・Cursor・Codex・Gemini CLI については
policy-compileと、そのlossyの一覧を参考にしてください。 - 実行直前に integrity を確かめ直し(TOCTOU 対策)、版が上がって権限が広がったら確認し直します。
- 自社の検証者に適合スイートをかけます:
python3 conformance/run.py --cmd '<検証者> {dir}'。
企業と CI#
- ポリシーを 1 つ書き、効果ごとの既定、ルール、
trusted_keys、require_signature: true、min_contract_version: "0.8"を決めます。 - CI ですべてのスキルに
conformanceをかけ、必要なレベルに届かなければ失敗させます。 - そのポリシーから変換したハーネス設定を配ります。ハーネスごとの
lossyの一覧を確認してください。 - 実行中の強制には実行時ポリシー(HushSpec、APS / ACS 向けの Rego)を使います。
- 承認したスキルの版ごとに、署名された契約をレビューの記録として残します。