技能
pi 可以创建技能。告诉它你的使用场景,让它为你构建一个。
技能(skill)是自包含的能力包,由智能体按需加载。技能为特定任务提供专门的工作流程、安装说明、辅助脚本和参考文档。
Pi 实现了 Agent Skills 标准,对大多数违规行为发出警告但保持宽容。Pi 允许技能名称与其父目录不同,尽管标准禁止这样做;该规则对于在多个智能体执行框架(harness)间共享的技能目录并不理想。
安全: 技能可以指示模型执行任何操作,并可能包含模型调用的可执行代码。使用前请审查技能内容。
Pi 从以下位置加载技能:
- 全局:
~/.pi/agent/skills/~/.agents/skills/
- 项目(仅当项目受信任后):
.pi/skills/cwd及祖先目录中的.agents/skills/(向上到 git 仓库根目录,不在仓库中时为文件系统根目录)
- 包:
skills/目录或package.json中的pi.skills条目 - 设置:包含文件或目录的
skills数组 - CLI:
--skill <path>(可重复,即使使用--no-skills也会叠加生效)
发现规则:
- 在
~/.pi/agent/skills/和.pi/skills/中,根目录下的.md文件会被识别为单个技能 - 在所有技能位置中,包含
SKILL.md的目录会被递归发现 - 在
~/.agents/skills/和项目.agents/skills/中,根目录下的.md文件会被忽略
使用 --no-skills 禁用发现(显式指定的 --skill 路径仍然会加载)。
使用其他执行框架的技能
Section titled “使用其他执行框架的技能”要使用 Claude Code 或 OpenAI Codex 的技能,将它们的目录添加到设置中:
{ "skills": [ "~/.claude/skills", "~/.codex/skills" ]}对于项目级的 Claude Code 技能,添加到 .pi/settings.json:
{ "skills": ["../.claude/skills"]}技能如何工作
Section titled “技能如何工作”- 启动时,pi 扫描技能位置并提取名称和描述
- 系统提示词按规范以 XML 格式包含可用技能
- 当任务匹配时,智能体使用
read加载完整的 SKILL.md(模型并不总是这样做;使用提示词或/skill:name强制加载) - 智能体遵循指令,使用相对路径引用脚本和资源
这是渐进式披露:只有描述始终在上下文中,完整指令按需加载。
技能注册为 /skill:name 命令:
/skill:brave-search # 加载并执行技能/skill:pdf-tools extract # 带参数加载技能命令后的参数会作为 User: <args> 附加到技能内容。
在交互模式中通过 /settings 或在 settings.json 中切换技能命令:
{ "enableSkillCommands": true}技能是一个包含 SKILL.md 文件的目录。其他一切都可自由组织。
my-skill/├── SKILL.md # 必需:frontmatter + 指令├── scripts/ # 辅助脚本│ └── process.sh├── references/ # 按需加载的详细文档│ └── api-reference.md└── assets/ └── template.jsonSKILL.md 格式
Section titled “SKILL.md 格式”---name: my-skilldescription: What this skill does and when to use it. Be specific.---
# My Skill
## Setup
Run once before first use:```bashcd /path/to/skill && npm install```
## Usage
```bash./scripts/process.sh <input>```从技能目录使用相对路径:
See [the reference guide](references/REFERENCE.md) for details.Frontmatter
Section titled “Frontmatter”根据 Agent Skills 规范:
| 字段 | 必需 | 描述 |
|---|---|---|
name |
是 | 最长 64 字符。仅限小写 a-z、0-9 和连字符。与标准不同,Pi 不要求名称与父目录一致,因为该标准要求对共享的技能目录并不理想。 |
description |
是 | 最长 1024 字符。描述技能的功能及使用时机。 |
license |
否 | 许可证名称或对捆绑文件的引用。 |
compatibility |
否 | 最长 500 字符。环境要求。 |
metadata |
否 | 任意键值映射。 |
allowed-tools |
否 | 预先批准的工具列表,以空格分隔(实验性)。 |
disable-model-invocation |
否 | 为 true 时,技能从系统提示词中隐藏。用户必须使用 /skill:name。 |
- 1-64 个字符
- 仅限小写字母、数字、连字符
- 不以连字符开头或结尾
- 无连续连字符 Pi 不要求名称与父目录一致。Agent Skills 标准要求如此,但该要求对由多个工具共享的技能目录并不理想。
有效:pdf-processing、data-analysis、code-review
无效:PDF-Processing、-pdf、pdf--processing
描述最佳实践
Section titled “描述最佳实践”描述决定智能体何时加载技能。请写得具体。
好的描述:
description: Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs. Use when working with PDF documents.糟糕的描述:
description: Helps with PDFs.Pi 依据 Agent Skills 标准验证技能。大多数问题只会产生警告,技能仍会加载:
- 名称超过 64 个字符或包含无效字符
- 名称以连字符开头/结尾或含有连续连字符
- 描述超过 1024 个字符
未知的 frontmatter 字段会被忽略。
例外: 缺少 description 的技能不会被加载。
名称冲突(不同位置出现同名技能)会产生警告,并保留最先找到的技能。
brave-search/├── SKILL.md├── search.js└── content.jsSKILL.md:
---name: brave-searchdescription: Web search and content extraction via Brave Search API. Use for searching documentation, facts, or any web content.---
# Brave Search
## Setup
```bashcd /path/to/brave-search && npm install```
## Search
```bash./search.js "query" # Basic search./search.js "query" --content # Include page content```
## Extract Page Content
```bash./content.js https://example.com```- Anthropic Skills - 文档处理(docx、pdf、pptx、xlsx)、Web 开发
- Pi Skills - Web 搜索、浏览器自动化、Google API、转录