一个与框架无关的处理程序,通过知名的URI服务代理技能。实现代理技能发现规范。
概览
一个与框架无关的处理程序,通过知名的URI服务代理技能。实现代理技能发现规范。 请在app/.well-known/skills/[[...path]]/route.ts创建一个通用路线: - GET /.well-known/skills/index.json - 发现索引 - GET /.well-known/skills/git-workflow/SKILL.md - 技能指令 从文件系统加载技能,而不是在代码中定义: 每个 SKILL.md 文件都需要 YAML 前言: 通过代码中定义的技能创建提供者。 创建一个从文件系统加载技能的提供者。 合并多个提供者。后期提供者会覆盖同名技能的早期服务。
概述(AI 翻译)
一个与框架无关的处理程序,通过知名的URI服务代理技能。实现代理技能发现规范。
仓库: github.com/vercel-labs/skills-handler
安装
针对基于文件的技能加载:
快速入门(Next.js)
在app/.well-known/skills/[[...path]]/route.ts创建一个包通路由:
您的技能现已可在以下平台获取:
GET /.well-known/skills/index.json- 发现指数GET /.well-known/skills/git-workflow/SKILL.md- 技能指导
基于文件的技能
从文件系统加载技能,而不是在代码中定义:
目录结构:
每个 SKILL.md 文件都需要 YAML 前言:
API 参考
createSkillsHandler(provider, config?)
创建请求处理程序。
createStaticProvider(skills, additionalFiles?)
通过代码中定义的技能创建提供者。
createFileProvider(directory)
创建一个从文件系统加载技能的提供者。
createCompositeProvider(providers)
合并多个提供者。后期提供者会覆盖同名技能的早期服务。
CLI
在你的项目中初始化一个技能终端:
创建一项新技能:
验证技能:
终点
本页由 AI 翻译,技术细节请以原文为准。
README
以下为原文 README 节选,完整内容请查看原文。
skills-handler
A framework-agnostic handler for serving Agent Skills via well-known URIs. Implements the Agent Skills Discovery specification.
Repository: github.com/vercel-labs/skills-handler
Installation
npm install skills-handler
For file-based skill loading:
npm install skills-handler gray-matter
Quick Start (Next.js)
Create a catch-all route at app/.well-known/skills/[[...path]]/route.ts:
import { createSkillsHandler, createStaticProvider } from "skills-handler";
const handler = createSkillsHandler(
createStaticProvider([
{
name: "git-workflow",
description: "Follow team Git conventions for branching and commits.",
body: `# Git Workflow
Create feature branches from \`main\`:
\`\`\`bash
git checkout -b feature/my-feature main
\`\`\``,
files: ["SKILL.md"],
},
])
);
export { handler as GET, handler as OPTIONS };
Your skills are now available at:
GET /.well-known/skills/index.json- Discovery indexGET /.well-known/skills/git-workflow/SKILL.md- Skill instructions
File-Based Skills
Load skills from the filesystem instead of defining them in code:
// app/.well-known/skills/[[...path]]/route.ts
import { createSkillsHandler, createFileProvider } from "skills-handler";
import path from "path";
const provider = await createFileProvider(path.join(process.cwd(), "skills"));
const handler = createSkillsHandler(provider);
export { handler as GET, handler as OPTIONS };
Directory structure:
project/
├── app/.well-known/skills/[[...path]]/route.ts
└── skills/
├── git-workflow/
│ └── SKILL.md
└── pdf-processing/
├── SKILL.md
├── scripts/
│ └── extract.py
└── references/
└── TABLES.md
Each SKILL.md file requires YAML frontmatter:
---
name: git-workflow
description: Follow team Git conventions for branching and commits.
---
# Git Workflow
Your skill instructions here...
API Reference
createSkillsHandler(provider, config?)
Creates the request handler.
const handler = createSkillsHandler(provider, {
basePath: "/.well-known/skills", // URL base path (default)
verboseLogs: false, // Enable debug logging
cacheControl: "public, max-age=3600", // Cache header
cors: "*", // CORS origin (* | string[] | false)
onEvent: (event) => {}, // Analytics callback
});
createStaticProvider(skills, additionalFiles?)
Creates a provider from skills defined in code.
const provider = createStaticProvider([
{
name: "my-skill",
description: "What the skill does and when to use it.",
body: "# Skill Instructions\n\nMarkdown content...",
files: ["SKILL.md"],
},
]);
推荐工具
换一个关键词,或者移除筛选条件。
安装
npx skillfish add vercel-labs/skills-handler