今天给 Remy 搭建了一个 daily-note skill,顺手记录下完整流程。
1. 理解需求 #
先和用户确认三件事:
- 这个 skill 用来做什么
- 有没有具体的例子
- 触发方式是什么
2. 初始化 skill #
找到 init_skill.py 脚本(通常在 openclaw 的 skills 目录下),运行:
python3 <openclaw>/skills/skill-creator/scripts/init_skill.py <skill-name> --path <输出目录>例如:
python3 ~/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/skills/skill-creator/scripts/init_skill.py daily-note --path ~/.openclaw/workspace/skills脚本会自动创建目录结构和 SKILL.md 模板。
3. 编写 SKILL.md #
SKILL.md 包含两部分:
YAML frontmatter(必须)
---
name: skill-name
description: 描述这个 skill 做什么,以及何时触发(这部分是触发机制的核心)
---Markdown body:工作流程、脚本用法、参考资源等。
4. 写内容 #
按照 skill 类型决定放什么:
- 脚本类 → 放
scripts/目录,在 SKILL.md 里引用 - 文档类 → 放
references/目录 - 资源类 → 放
assets/目录
SKILL.md 本身要保持精简,细节移到引用文件。
5. 验证 #
python3 <openclaw>/skills/skill-creator/scripts/quick_validate.py <skill-path>输出 Skill is valid! 即通过。
6. 提交到 GitHub #
确认 GitHub Token 有写权限后,克隆仓库,配置 remote URL(含 Token),然后推送。
git clone https://github.com/<owner>/<repo>.git
cd <repo>
git remote set-url --push origin "https://<user>:<TOKEN>@github.com/<owner>/<repo>.git"
git add <skill-dir>
git commit -m "feat: add <skill-name> skill"
git push origin main踩坑记录 #
- Token 权限不足:GitHub Token 必须带
reposcope,否则 API 调用和 git push 都会 403 - Git 推送默认用 HTTPS:如果 token 放在 URL 里,需要同时设置 fetch 和 push 两个 remote URL
- skill 命名:只用小写字母、数字、连字符,目录名和 skill 名保持一致
- Trigger description 很重要:Codex 根据 description 决定是否激活这个 skill,写清楚触发场景
附:本次创建的 daily-note skill #
- 用途:将 Remy 发来的内容整理为每日碎记,推送到 GitHub 页面
- 触发:Remy 说"整理为碎记"、发送
/suiji、或明显是要记录的文字 - 仓库:https://github.com/Remywwo/remywwo.github.io
- 路径:
pages/daily/YYYY-MM-DD.md - 格式:tabTitle + date +
[[toc]]+ 正文