本地 Skill 创建器
在独立仓库 https://github.com/Kirrito-k423/agent-skills 中创建和维护 Skill,只通过符号链接将其暴露为全局 Skill。
不可违背的规则
将 Skill 的规范源目录保存在 Git 工作树内。
不得直接在
${CODEX_HOME:-$HOME/.codex}/skills下创建规范源目录。使用绝对路径符号链接在全局安装 Skill:
${CODEX_HOME:-$HOME/.codex}/skills/<skill-name> -> <git-worktree>/<chosen-path>/<skill-name>不得原地修改
${CODEX_HOME:-$HOME/.codex}/skills/.system。覆盖系统内置 Skill 时,创建具有相同技术
name和全局链接名的用户级 Skill。保持系统内置副本不变,以便删除用户级链接后恢复使用内置版本。不得自动删除或替换全局目录中的真实文件或目录;迁移前必须停止并询问用户。
保留无关文件和工作树中已有的改动。
所有 Skill 的人类可读内容必须使用中文,包括 frontmatter 的
description、SKILL.md正文、references/文档、agents/openai.yaml界面文案,以及脚本面向用户的帮助、提示和报错。技术名称、代码标识符、固定字段名、命令、路径、协议原文和无法翻译的专有名词保留原样。
创建或更新 Skill
1. 确定源目录
将技术名称规范化为小写连字符格式。
如果用户明确提供的位置属于 Git 工作树,则使用该位置。否则:
- 解析当前
skill-creator/SKILL.md的真实路径;通过全局符号链接调用时,先解析链接目标。 - 在解析后的
skill-creator目录运行git rev-parse --show-toplevel,并用git remote -v确认所属仓库为Kirrito-k423/agent-skills,接受 SSH 和 HTTPS 地址。 - 默认使用
<agent-skills-root>/<skill-name>,不要再添加一层skills/,也不要按当前业务项目的工作目录选择源仓库。本机的规范仓库为/Users/Zhuanz/work/github/agent-skills;其他机器以实际检出的仓库根目录为准。 - 如果当前创建器不属于该独立仓库,优先检查上述本机路径;该路径不可用时,再查找用户提供的
agent-skills检出目录。仍找不到时,要求用户选择检出位置或授权克隆仓库。不得退回到全局 Skill 目录。
原 hugoMinos/skills 是该仓库的 Git submodule 引用。独立仓库中的 Skill 直接排列在根目录;在 submodule 检出中操作时,也把 submodule 自身作为 Git 根目录,不把父仓库作为源仓库。
更新现有 Skill 时,先解析当前全局入口。如果它是符号链接,只有在确认其目标位于 Git 工作树内后,才能编辑解析后的目标目录。对已存在于其他仓库或工作树的 Skill,不因默认位置变化而自动覆盖或搬迁。
2. 检查路径冲突
写入前检查以下两个路径:
- 规范源目录:
<git-worktree>/.../<skill-name> - 全局入口:
${CODEX_HOME:-$HOME/.codex}/skills/<skill-name>
按以下方式处理:
- 源目录不存在、全局入口不存在: 正常创建并链接。
- 源目录已存在: 将请求视为更新,并保留已有资源。
- 全局符号链接指向源目录: 保持不变。
- 全局符号链接指向其他位置: 说明当前目标;只有请求明确授权切换时才替换。
- 全局路径是真实文件或目录: 不得自动删除或替换。
- Skill 仅存在于
.system: 创建同名用户级链接,安全覆盖系统内置版本。
3. 初始化新 Skill
创建新 Skill 时,使用系统内置初始化器:
SYSTEM_CREATOR="${CODEX_HOME:-$HOME/.codex}/skills/.system/skill-creator"
python3 "$SYSTEM_CREATOR/scripts/init_skill.py" <skill-name> \
--path <agent-skills-root> \
--interface "display_name=<面向用户的名称>" \
--interface "short_description=<25 至 64 个字符的中文说明>" \
--interface 'default_prompt=使用 $<skill-name> 完成<示例任务>。'
仅在确实需要资源目录时添加 --resources。除非会在同一任务中替换或删除示例,否则不要添加示例。
生成 agents/openai.yaml 前,先阅读 references/openai_yaml.md。
初始化后,立即把模板中的英文占位内容改成中文,不得把英文模板原样留在最终 Skill 中。
4. 简洁实现
遵循系统内置 skill-creator 的质量原则:
- 将所有触发条件写入 frontmatter 的
description。 - frontmatter 只保留
name和description。 - 使用祈使句编写正文指令。
- 保持
SKILL.md聚焦,且不超过 500 行。 - 只添加必要的
scripts/、references/和assets/。 - 不要创建
README.md、变更日志或安装指南等辅助文件。 - 测试每个新增脚本。
- 检查所有人类可读内容并将其写成中文;不得只翻译
SKILL.md而遗漏元数据、参考文档或脚本提示。
手动编辑文件时使用 apply_patch。更新 Skill 时保留已有内容。
5. 验证源目录
对规范源目录运行系统内置验证器:
SYSTEM_CREATOR="${CODEX_HOME:-$HOME/.codex}/skills/.system/skill-creator"
python3 "$SYSTEM_CREATOR/scripts/quick_validate.py" <canonical-skill-directory>
安装全局链接前,修复所有验证失败。
6. 安装全局链接
使用本 Skill 自带的辅助脚本:
LOCAL_CREATOR="${CODEX_HOME:-$HOME/.codex}/skills/skill-creator"
python3 "$LOCAL_CREATOR/scripts/link_skill.py" <canonical-skill-directory>
当期望的全局入口名与源目录 basename 不同时,传入 --name <skill-name>。只有检查现有符号链接并决定替换它之后,才能传入 --replace-symlink。辅助脚本不得替换真实文件或目录。
7. 完成检查
验证以下所有事项:
- 规范源目录位于预期的 Git 工作树内。
git status --short -- <canonical-skill-directory>只显示预期改动。- 全局入口是符号链接。
- 符号链接准确解析到规范源目录。
- 通过规范路径和全局符号链接运行验证均成功。
agents/openai.yaml仍与SKILL.md一致。- Skill 中所有人类可读内容均为中文,允许保留的仅是技术名称、代码、命令、路径、固定字段和必要原文。
告知用户:可能需要新建 Codex 任务或重新加载应用,Skill 发现结果才会反映新增或覆盖的 Skill。
安全覆盖当前 Skill
按照相同规则维护本地替代版本:
<agent-skills-root>/skill-creator
-> 规范源目录
${CODEX_HOME:-$HOME/.codex}/skills/skill-creator
-> 全局用户级覆盖
${CODEX_HOME:-$HOME/.codex}/skills/.system/skill-creator
-> 保持不变的系统内置后备版本
只删除用户级符号链接即可恢复系统内置后备版本。