当用户想要创建、编辑、改进或调试 OpenLoaf 自定义技能(Skill)时触发。典型说法:"帮我创建一个技能"、"做一个新 skill"、"把刚才的操作封装成技能"、"写一个能自动 XX 的技能"、"改一下这个 skill"、"这个 skill 为什么不触发"、"编辑我的自定义技能"、"加个全局技能"、"给当前项目加个技能"。任何涉及 `.openloaf/skills/` 目录下 `SKILL.md` 的创建 / 修改 / 调优请求都应加载本技能。也适用于用户想理解技能格式、排查触发问题、或把对话里的工作流固化成可复用能力的场景。不用于:内置技能(如 file-ops、email-ops 等)的修改——那些是平台随版本发布的只读能力。
73
91%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
本技能指导你为 OpenLoaf 创建、编辑和改进自定义 Skill。Skill 是一段 Markdown 指令,当用户的请求匹配 description 时会被自动加载进对话,让 AI 按照里面的方法执行任务。
| 工具 | 职责 | 只读 |
|---|---|---|
Read / Glob / Grep | 读取现有 skill 与定位锚点(常驻工具) | 是 |
Write | 创建新的 SKILL.md / openloaf.json / 辅助脚本(常驻工具) | 否 |
Edit | 修改已有 skill 内容(常驻工具) | 否 |
加载:全部为核心工具,始终可用,无需
ToolSearch激活。本 skill 没有专有 deferred 工具 — 它是指导型 skill,教 AI 如何组织自定义 skill 文件。
用户自定义技能分两种作用域,先搞清楚该放哪里再动手。优先级由低到高:builtin < global < project,同名时项目技能覆盖全局技能。
~/.openloaf/skills/<skill-name>/SKILL.md{projectRoot}/.openloaf/skills/<skill-name>/SKILL.md能力只在当前项目有意义(文件路径、业务术语、仓库约定)?
└─ 是 → 项目技能(默认首选)
└─ 否 → 跨项目复用(个人习惯、通用模板)?
└─ 是 → 全局技能
└─ 不确定 → 先建项目技能,将来发现多项目用得上再提升为全局铁律:项目特有的业务知识不要放进全局技能——会污染其他项目。反过来,通用能力放进项目技能会错过复用机会。拿不准时先问用户:"这个能力只有这个项目用得上,还是你其他项目也想用?"
在动手写文件前,先明确四件事(对话上下文可能已经包含答案,不要重复问):
如果用户说"把刚才的操作封装成技能",回顾对话历史提取实际使用的工具序列、决策逻辑和用户修正过的地方——那些才是技能真正要固化的知识。
每个技能是一个文件夹,核心只有一个文件:SKILL.md。
<skill-name>/
├── SKILL.md # 必需 — 技能指令(YAML frontmatter + Markdown 正文)
├── openloaf.json # 可选 — UI 展示元数据(icon、颜色、中文名)
└── scripts/ # 可选 — 辅助脚本(python/bash 等)---
name: my-skill-name # kebab-case,与文件夹名一致
description: > # 决定 AI 何时加载这个技能——写好这一行至关重要
当用户...时触发。典型说法:"..."。不用于:...
---
# 技能标题
正文内容...description 是技能触发的唯一入口,触发得准不准几乎全看它:
├─ 是 → ... 格式清晰表达分支逻辑scripts/ 或分层引用# 技能标题
一段话概述本技能覆盖什么。
## 触发条件
列举哪些用户说法 / 场景应触发本技能。
## 工作流程
按步骤描述 AI 应该怎么做。用编号步骤 + 决策树。
## 工具使用
列出本技能依赖的工具及用法要点。
## 示例
1-2 个端到端完整示例。
## 常见陷阱
容易犯的错误和注意事项。
## 铁律
3-5 条不可违反的核心规则。openloaf.json 提供 UI 展示信息,和 SKILL.md 同目录:
{
"name": "技能中文名",
"description": "一句话中文描述",
"icon": "🔧",
"version": "0.1.0",
"sourceLanguage": "zh-CN",
"targetLanguage": "zh-CN",
"colorIndex": 0
}colorIndex 配色:0=青 1=紫 2=琥珀 3=天蓝 4=玫瑰 5=祖母绿 6=靛蓝 7=酸橙
icon:选一个最能代表技能功能的 emoji。
用 Write 工具写文件。路径按作用域严格区分:
| 作用域 | 写入路径 |
|---|---|
| 全局技能 | ~/.openloaf/skills/<skill-name>/SKILL.md |
| 项目技能 | {projectRoot}/.openloaf/skills/<skill-name>/SKILL.md |
创建前先检查同名冲突,避免意外覆盖:
Glob: ~/.openloaf/skills/<skill-name>/SKILL.md # 查全局
Glob: {projectRoot}/.openloaf/skills/<skill-name>/SKILL.md # 查项目冲突时询问用户:覆盖 / 换名 / 取消。
创建完成后务必告知用户:技能列表在对话初始化时加载,当前对话看不到新建技能,需要开启新对话才会生效。
技能创建后,建议用户测试:
| 症状 | 原因 | 修复 |
|---|---|---|
| 技能不触发 | description 太窄 | 加更多典型说法,覆盖口语和同义词 |
| 技能误触发 | description 太宽 | 加"不用于"限定,划清与其他技能的边界 |
| AI 不遵守指令 | 正文太长或太模糊 | 缩短、加决策树、加具体示例 |
| 工具调用出错 | 没说明工具用法 | 加参数示例和调用顺序 |
| 其他项目误用到 | 误放到了全局 | 移到项目作用域({projectRoot}/.openloaf/skills/) |
用户要求改进已有技能时:
Read 现有 SKILL.md 理解当前内容description 优化专项:如果用户反馈"该触发时没触发",聚焦优化 description:
a1ab5be
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.