# SKILLS

本文件定义：如何在仓库中落地与维护 **Codex CLI skills**（实验功能），
并给出与本 Playbook（`docs/` + `rulesets/`）配套的技能编写建议与内置技能清单。

> 提示：Codex skills 是“按用户安装”的（默认在
> `~/.codex/skills`）。本仓库将 skills 以可分发的形式放在
> `codex/skills/`，并提供脚本一键安装到你的 `CODEX_HOME`。

---

## 1. 启用 skills（必做）

在 `$CODEX_HOME/config.toml`（通常是 `~/.codex/config.toml`）中启用：

```toml
[features]
skills = true
```

修改后需要重启 `codex` 才会重新发现技能。

---

## 2. 本仓库的 skills 目录结构

本 Playbook 以“可 vendoring”的方式提供 skills：

```txt
codex/skills/
  <skill-name>/
    SKILL.md
    references/        # 可选：拆分参考文档
    templates/         # 可选：模板
    scripts/           # 可选：脚本/命令封装
```

最终安装到本机后，对应路径为：

```txt
$CODEX_HOME/skills/<skill-name>/SKILL.md
```

---

## 3. 安装到本机（推荐）

使用统一入口 `playbook.py` 安装 skills（会把 `codex/skills/*` 复制到 `$CODEX_HOME/skills/`）：

```toml
# playbook.toml
[playbook]
project_root = "."

[install_skills]
mode = "all"            # list|all
codex_home = "~/.codex"
```

```bash
python scripts/playbook.py -config playbook.toml
```

仅安装指定 skills：

```toml
[install_skills]
mode = "list"
skills = ["style-cleanup", "commit-message"]
```

如果希望“项目内本地安装”（不污染全局）：

```toml
[install_skills]
mode = "all"
codex_home = "./.codex"
```

> 注意：Codex 只会从 `CODEX_HOME` 加载 skills；使用本地安装时，启动 Codex 需设置同样的 `CODEX_HOME`。

如果你的项目通过 `git subtree` vendoring 本 Playbook（推荐前缀
`docs/standards/playbook`），则在目标项目里执行：

```bash
python docs/standards/playbook/scripts/playbook.py -config playbook.toml
```

安装后重启 `codex`，即可在运行时看到 `## Skills` 列表。

---

## 4. `SKILL.md` 最小规范（Codex）

- 文件名必须是 `SKILL.md`
- 必须包含 YAML frontmatter（用 `---` 包裹），且至少包含：
  - `name`：非空，≤100 字符，建议 kebab-case 且与目录名一致
  - `description`：非空，≤500 字符（写“用户会怎么说”的触发词；避免换行）
- frontmatter 之外的正文可以是任意 Markdown（用于工作流说明/决策树/命令/模板索引）

---

## 5. 使用方式

- 在对话中通过 `$<skill-name>` 直接点名触发（例如：`$style-cleanup`）
- 在 Codex TUI 中可用 `/skills` 浏览与插入

---

## 6. 设计原则（写给维护者）

把 skill 当作“可检索的工作流模块”，而不是长篇教程：

1. **边界清晰**：只写“仓库/组织特定”的流程、约束与验收标准；避免通用编程常识。
2. **description 负责检索**：把团队常用说法（中英文同义词）写进
   `description`，降低漏触发概率。
3. **SOP 化**：建议包含 Inputs → Procedure → Output Contract → Success Criteria
   → Failure Handling。
4. **渐进式披露**：主 `SKILL.md` 保持精炼；大段清单/模板放
   `references/`，引用深度 ≤ 1。
5. **高风险低自由度**：破坏性操作（删数据/重写历史/生产变更）默认先停下确认，并给回滚方案。

---

## 7. Playbook 权威来源（可在 skill 中引用）

- 提交信息：`docs/common/commit_message.md`
- TSL：`docs/tsl/code_style.md`、`docs/tsl/naming.md`、`docs/tsl/toolchain.md`
- C++：`docs/cpp/code_style.md`、`docs/cpp/naming.md`、`docs/cpp/toolchain.md`
- Python：`docs/python/style_guide.md`、`docs/python/tooling.md`、`docs/python/configuration.md`

若你的项目通过 git subtree 引入本 Playbook，常见路径为
`docs/standards/playbook/docs/...`；把上述 `docs/` 前缀替换为
`docs/standards/playbook/docs/` 即可。

---

## 8. 本 Playbook 原生 skills

位于 `codex/skills/`（Playbook 自维护部分），当前共 4 个。
第三方 superpowers 列表见第 9 节。

### 语言特定 Skills

- **`tsl-guide`**：TSL/TSF 语法与编码完整指南
  - 渐进式教学体系：基础语法 → 高级特性 → 函数库 → 最佳实践
  - 包含 4 个子文档：primer.md / advanced.md / functions_index.md / common_patterns.md
  - 总计约 1000 行，按需加载
  - 触发词：TSL 语法, 写 TSL, TSL 函数, TSL class, 矩阵操作, TS-SQL 等

### 通用工作流 Skills

- `commit-message`：基于 staged diff 自动建议提交信息（`:emoji: type(scope): subject`）
- `style-cleanup`：整理代码风格（优先使用仓库既有 formatter/lint 工具链）
- `bulk-refactor-workflow`：批量重构（安全做法 + 验证契约）

---

## 9. Third-party Skills (superpowers)

来源：`codex/skills/.sources/superpowers.list`（第三方来源清单）。
本节仅列出 superpowers 体系 skills，与本 Playbook 原生 skills 分离。

<!-- superpowers:skills:start -->

- brainstorming
- dispatching-parallel-agents
- executing-plans
- finishing-a-development-branch
- receiving-code-review
- requesting-code-review
- subagent-driven-development
- systematic-debugging
- test-driven-development
- using-git-worktrees
- using-superpowers
- verification-before-completion
- writing-plans
- writing-skills
<!-- superpowers:skills:end -->

---

## 10. 运行时排障

- 不触发：
  - 确认已启用 `[features] skills = true`
  - 确认 skill 已安装到 `$CODEX_HOME/skills/<name>/SKILL.md`
  - 重启 `codex`（skills 只在启动时加载）
- 触发错：减少不同 skill 的 `description`
  关键词重叠；让触发词更具体（语言/工具/目录名/流程名）。
- 启动报错：通常是 YAML frontmatter 不合法或字段超长；修复后重启即可。

---

**最后更新**：2026-01-26
