スキル
スキルとは?
Section titled “スキルとは?”スキルは、エージェントの動作をランタイムで拡張するフロントマターを持つマークダウンファイルです。スキルは以下のことができます:
- システムプロンプトの指示を追加する
- エージェントが使用できるツールを制限する
- LLMモデルをオーバーライドする
- RAGバケットをツールとして自動登録する
- ポリシーを強制する(許可された/ブロックされたツール、制約)
スキルファイルフォーマット
Section titled “スキルファイルフォーマット”スキルはYAMLフロントマターを持つマークダウンファイルです:
---name: customer-supportdescription: 知識ベースを使用してカスタマーサポートの問い合わせを処理するmodel: gpt-4o-miniallowed-tools: - rag_search - web_searchblocked-tools: - send_emailrag: support-docs---
あなたはカスタマーサポートエージェントです。常に礼儀正しく、役に立つようにしてください。質問に答える前に知識ベースを検索してください。フロントマターのフィールド
Section titled “フロントマターのフィールド”| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
name | string | Yes | ケバブケースの識別子(1-64文字) |
description | string | Yes | このスキルの機能(1-1024文字) |
model | string | No | このスキルのためのLLMモデルをオーバーライド |
allowed-tools | string[] | No | 利用可能なツールのリスト |
blocked-tools | string[] | No | ブロックされたツールのリスト |
procedures | string[] | No | 手続き名(ポリシー強制) |
constraints | string[] | No | 制約の説明(ポリシー強制) |
rag | string | No | バケット名 — RAGツールとして自動登録 |
スキルの読み込み
Section titled “スキルの読み込み”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,});autoResolveがtrue(デフォルト)の場合、エージェントはスキル名と説明とのキーワードの重複に基づいて、各ユーザーのクエリに最適なスキルを自動的に選択します。
スキルが解決されると:
- そのマークダウンボディがエージェントの指示に追加されます
- ツールセットがスキルの
allowed-tools/blocked-toolsにフィルタリングされます - スキルが指定した場合、LLMモデルがオーバーライドされます
- スキルに
ragフィールドがあり、トランスポートが利用可能な場合、RAGツールが自動登録されます
手動スキルアクセス
Section titled “手動スキルアクセス”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); // SkillFrontmatterconsole.log(skill.body); // マークダウンボディポリシーエンジン
Section titled “ポリシーエンジン”スキルがアクティブな場合、PolicyEngineはそのツール制限を強制します:
- ツール呼び出し前:
allowed-toolsにないツールやblocked-toolsにリストされているツールをブロックします - ツール呼び出し後:ツールの結果を検証できます(拡張可能)
ポリシー違反はpolicy_violationイベントとして発生します:
agent.on("policy_violation", (event) => { console.warn(`ブロックされました: ${event.reason} (スキル: ${event.skillName})`);});ディレクトリ構造
Section titled “ディレクトリ構造”skills/ customer-support.md legal-qa.md research/ deep-research.mdローダーは再帰的にすべての.mdファイルを見つけます。ファイル間でのスキル名の重複はエラーを引き起こします。