Skills
Skill は SKILL.md を中心としたローカル指示パックです。
発見パス
Mistermorph は file_state_dir/skills(デフォルトは ~/.morph/skills)配下を再帰的に走査し、SKILL.md を見つけて skill を発見します。
読み込み制御
設定ファイルでは次のように skill の読み込みを制御できます。
skills:
enabled: true
dir_name: "skills"
load: []ここでの意味は次の通りです。
enabled:skill を読み込むかどうかload:読み込む skill の id/name を指定します。たとえば["apple", "banana"]ならその 2 つだけを読み込みます。空なら発見した skill をすべて読み込みます。
タスク本文の $skill-name / $skill-id でもトリガーできます。
Skill の注入
system prompt に入るのは skill のメタ情報だけです。
namefile_pathdescriptionauth_profiles(任意)
実際の SKILL.md 本文は、必要になったときにモデルが read_file で読み込みます。
よく使うコマンド
# 現在発見できる skill を表示します。インストール結果の確認や、
# skill ディレクトリが正しく認識されているかの確認に便利です。
mistermorph skills list
# 組み込み skill をローカルの skills ディレクトリへインストールまたは
# 更新します。デフォルトの出力先は ~/.morph/skills です。
mistermorph skills install
# リモートの SKILL.md から単一の skill をインストールします。
# 外部 skill を取り込むときに使います。
mistermorph skills install "https://example.com/SKILL.md"よく使う付随フラグ:
--skills-dir:skills listに追加の走査ルートを渡す--dry-run:skills installが何を書き込むかだけを確認し、実際には書き込まない--dest:テストや分離環境向けに、指定ディレクトリへ skill をインストールする--clean:完全な上書き更新のため、インストール前に既存の skills ディレクトリを削除する
セキュリティ機構
Mistermorph の skill 安全設計は 2 段階です。
- インストール段階では、リモートファイルを取ってすぐ実行してしまうことを防ぎます。
- 実行段階では、skill やモデルが秘密情報を直接取得することを防ぎます。
基本方針は、skill は手順や文脈を提供できても、自力で権限を広げることはできない、ということです。
インストール: 先にレビューし、その後に書き込む
リモート skill のインストールは、単純にローカルへダウンロードするだけではありません。確認付きのフローになっています。
+--------------------------------------+
リモート SKILL.md
+--------------------------------------+
|
v
+--------------------------------------+
内容を表示して確認
+--------------------------------------+
|
v
+--------------------------------------+
信頼しない入力としてレビュー
宣言された追加ファイルを抽出
+--------------------------------------+
|
v
+--------------------------------------+
書き込み計画と潜在リスクを表示
再確認
+--------------------------------------+
|
v
+--------------------------------------+
~/.morph/skills/<name>/ に書き込む
+--------------------------------------+インストーラが何をするかだけ見たい場合は、先に
--dry-runを使ってください。
実行段階: skill は profile を宣言するだけで、秘密そのものは持たない
skill が保護された HTTP API にアクセスする必要がある場合、秘密を skill に書くのではなく、auth_profile による設定注入を使うのが推奨です。
たとえば skill は、使いたい認証プロファイルを次のように宣言できます。
auth_profiles: ["jsonbill"]ただし、これだけで権限が与えられるわけではありません。実際の認可境界は設定で決まります。
secrets:
allow_profiles: ["jsonbill"]
auth_profiles:
jsonbill:
credential:
kind: api_key
secret: "${JSONBILL_API_KEY}"
allow:
url_prefixes: ["https://api.jsonbill.com/tasks"]
methods: ["GET", "POST"]
follow_redirects: false
deny_private_ips: trueこの構成では、skill と LLM が見えるのは jsonbill という profile id だけで、JSONBILL_API_KEY の実値は直接見えません。
Mistermorph は設定読み込み時に環境変数から実際の秘密を解決し、それを url_fetch に注入します。これにより、API キーが prompt、SKILL.md、ツール引数、ログに露出するのを避けられます。
また、auth_profiles ではアクセス境界も定義できます。たとえば url_prefixes で到達可能な URL プレフィックスを制限し、methods、follow_redirects、deny_private_ips で振る舞いをさらに絞り込めます。