背景
Pi(@earendil-works/pi-coding-agent,简称 pi)是一个流行的本地 AI 编码代理。它实现了 Agent Skills 标准,技能结构与 Claude Code 完全兼容(目录 + SKILL.md,YAML frontmatter 含 name/description),因此可以直接复用现有的 scanSkillDir。
目前 skm 支持 claude / codex / cursor / gemini / workbuddy / kimi,但没有 pi。许多用户同时使用 pi 与 Claude Code / Codex,pi 的技能积累同样面临"装了什么、有没有重复、来源在哪"的问题,值得纳入 skm 治理。
技能目录约定(来自 pi 官方文档 docs/skills.md)
用户级:
~/.pi/agent/skills/(pi 默认内置技能库)
~/.pi/skills/(用户技能)
~/.agents/skills/(跨工具共享目录 —— Kimi 适配器已覆盖此路径)
项目级: .pi/skills/、.agents/skills/(在 cwd 及祖先目录递归查找,直到 git 仓库根或文件系统根)
自定义: ~/.pi/agent/settings.json 中的 skills 数组可追加任意技能目录(文件或目录均可),例如用户可把 ~/.claude/skills 加进去。
建议实现
- 新增
src/adapters/pi.js,模式参考 kimi.js:
- 用户级:
~/.pi/agent/skills、~/.pi/skills、~/.agents/skills(后者去重,避免与 Kimi 适配器重复计数)
- 项目级:沿 cwd 祖先链找
.pi/skills、.agents/skills
- 解析
~/.pi/agent/settings.json 的 skills 数组,追加自定义目录
src/paths.js 增加对应常量。
- 复用
scanSkillDir 扫描 SKILL.md(frontmatter 解析、安全审计、归档计数全部直接可用)。
与 Claude Code 的差异点(需要适配)
- 根级
.md 文件也算技能:在 ~/.pi/agent/skills/ 和 ~/.pi/skills/ 下,直接放在根目录的 .md 文件(非 SKILL.md)只要含有效技能 frontmatter 且 description 非空,也会被 pi 当作独立技能加载。scanSkillDir 目前只处理子目录,需要补充对根级 .md 的扫描。
- 技能名可与目录名不同:pi 允许 skill 的 name 与父目录不一致(Agent Skills 标准不允许,但 pi 宽松实现,官方说明这是为跨工具共享技能目录优化)。合并去重逻辑需注意这一点。
- 嵌套技能目录:
~/.pi/agent/skills/ 下允许嵌套分组(如 my-skills/ 内再放多个技能),子目录含 SKILL.md 会被递归发现。而 ~/.agents/skills/ 中根级 .md 会被忽略、嵌套分组目录中的 .md 才会被发现 —— 两个目录的规则略有不同。
MCP
Pi 官方不原生支持 MCP(README 明确"No MCP",通过扩展机制可选支持),因此 pi 适配器只需扫描 skills,无需处理 MCP。
参考
- pi 文档:
docs/skills.md(技能加载规则)、docs/settings.md(settings.json)
- 共享目录
~/.agents/skills 已被 kimi.js 适配器支持,注意跨适配器去重
- 用户场景示例:
~/.pi/agent/skills/ 下有 13+ 技能(含 my-skills 子目录 5 个个人技能),~/.pi/skills/ 与 ~/.claude/skills/ 存在同名重复安装(smart-ocr、teach),正是 skm 擅长发现的重复问题
背景
Pi(
@earendil-works/pi-coding-agent,简称 pi)是一个流行的本地 AI 编码代理。它实现了 Agent Skills 标准,技能结构与 Claude Code 完全兼容(目录 +SKILL.md,YAML frontmatter 含 name/description),因此可以直接复用现有的scanSkillDir。目前 skm 支持 claude / codex / cursor / gemini / workbuddy / kimi,但没有 pi。许多用户同时使用 pi 与 Claude Code / Codex,pi 的技能积累同样面临"装了什么、有没有重复、来源在哪"的问题,值得纳入 skm 治理。
技能目录约定(来自 pi 官方文档 docs/skills.md)
用户级:
~/.pi/agent/skills/(pi 默认内置技能库)~/.pi/skills/(用户技能)~/.agents/skills/(跨工具共享目录 —— Kimi 适配器已覆盖此路径)项目级:
.pi/skills/、.agents/skills/(在 cwd 及祖先目录递归查找,直到 git 仓库根或文件系统根)自定义:
~/.pi/agent/settings.json中的skills数组可追加任意技能目录(文件或目录均可),例如用户可把~/.claude/skills加进去。建议实现
src/adapters/pi.js,模式参考kimi.js:~/.pi/agent/skills、~/.pi/skills、~/.agents/skills(后者去重,避免与 Kimi 适配器重复计数).pi/skills、.agents/skills~/.pi/agent/settings.json的skills数组,追加自定义目录src/paths.js增加对应常量。scanSkillDir扫描SKILL.md(frontmatter 解析、安全审计、归档计数全部直接可用)。与 Claude Code 的差异点(需要适配)
.md文件也算技能:在~/.pi/agent/skills/和~/.pi/skills/下,直接放在根目录的.md文件(非SKILL.md)只要含有效技能 frontmatter 且 description 非空,也会被 pi 当作独立技能加载。scanSkillDir目前只处理子目录,需要补充对根级.md的扫描。~/.pi/agent/skills/下允许嵌套分组(如my-skills/内再放多个技能),子目录含SKILL.md会被递归发现。而~/.agents/skills/中根级.md会被忽略、嵌套分组目录中的.md才会被发现 —— 两个目录的规则略有不同。MCP
Pi 官方不原生支持 MCP(README 明确"No MCP",通过扩展机制可选支持),因此 pi 适配器只需扫描 skills,无需处理 MCP。
参考
docs/skills.md(技能加载规则)、docs/settings.md(settings.json)~/.agents/skills已被 kimi.js 适配器支持,注意跨适配器去重~/.pi/agent/skills/下有 13+ 技能(含 my-skills 子目录 5 个个人技能),~/.pi/skills/与~/.claude/skills/存在同名重复安装(smart-ocr、teach),正是 skm 擅长发现的重复问题