コンテンツにスキップ

スキル

スキルは、エージェントの動作をランタイムで拡張するフロントマターを持つマークダウンファイルです。スキルは以下のことができます:

  • システムプロンプトの指示を追加する
  • エージェントが使用できるツールを制限する
  • LLMモデルをオーバーライドする
  • RAGバケットをツールとして自動登録する
  • ポリシーを強制する(許可された/ブロックされたツール、制約)

スキルはYAMLフロントマターを持つマークダウンファイルです:

---
name: customer-support
description: 知識ベースを使用してカスタマーサポートの問い合わせを処理する
model: gpt-4o-mini
allowed-tools:
- rag_search
- web_search
blocked-tools:
- send_email
rag: support-docs
---
あなたはカスタマーサポートエージェントです。常に礼儀正しく、役に立つようにしてください。
質問に答える前に知識ベースを検索してください。
フィールド必須説明
namestringYesケバブケースの識別子(1-64文字)
descriptionstringYesこのスキルの機能(1-1024文字)
modelstringNoこのスキルのためのLLMモデルをオーバーライド
allowed-toolsstring[]No利用可能なツールのリスト
blocked-toolsstring[]Noブロックされたツールのリスト
proceduresstring[]No手続き名(ポリシー強制)
constraintsstring[]No制約の説明(ポリシー強制)
ragstringNoバケット名 — RAGツールとして自動登録

SkillLoaderを使用してディレクトリからスキルを読み込みます:

import { Agent, loadSkills } from "@schift-io/sdk";
const loader = await loadSkills("./skills");
const agent = new Agent({
name: "Support Bot",
instructions: "あなたは役に立つアシスタントです。",
skills: {
loader,
autoResolve: true, // クエリごとに最適なスキルを自動選択
},
transport: schift.transport,
});

autoResolvetrue(デフォルト)の場合、エージェントはスキル名と説明とのキーワードの重複に基づいて、各ユーザーのクエリに最適なスキルを自動的に選択します。

スキルが解決されると:

  1. そのマークダウンボディがエージェントの指示に追加されます
  2. ツールセットがスキルのallowed-tools / blocked-toolsにフィルタリングされます
  3. スキルが指定した場合、LLMモデルがオーバーライドされます
  4. スキルにragフィールドがあり、トランスポートが利用可能な場合、RAGツールが自動登録されます
import { SkillLoader } from "@schift-io/sdk";
const loader = new SkillLoader("./skills");
const summaries = await loader.loadAll();
// [{ name: "customer-support", description: "..." }, ...]
const skill = await loader.get("customer-support");
console.log(skill.meta); // SkillFrontmatter
console.log(skill.body); // マークダウンボディ

スキルがアクティブな場合、PolicyEngineはそのツール制限を強制します:

  • ツール呼び出し前allowed-toolsにないツールやblocked-toolsにリストされているツールをブロックします
  • ツール呼び出し後:ツールの結果を検証できます(拡張可能)

ポリシー違反はpolicy_violationイベントとして発生します:

agent.on("policy_violation", (event) => {
console.warn(`ブロックされました: ${event.reason} (スキル: ${event.skillName})`);
});
skills/
customer-support.md
legal-qa.md
research/
deep-research.md

ローダーは再帰的にすべての.mdファイルを見つけます。ファイル間でのスキル名の重複はエラーを引き起こします。