From 767ec333c69a68d2a403c29646cdab8055705eed Mon Sep 17 00:00:00 2001 From: zhangfucai Date: Tue, 17 Mar 2026 17:10:45 +0800 Subject: [PATCH] feat: add capture skill --- .claude/skills/CLAUDE.md.template | 1 + .claude/skills/capture/SKILL.md | 139 ++++++++++++++++++++++++++++++ .codex/skills/AGENTS.md.template | 1 + .codex/skills/capture/SKILL.md | 139 ++++++++++++++++++++++++++++++ AGENTS.md | 1 + AGENTS.md.template | 1 + CLAUDE.md.template | 1 + README.md | 25 ++++++ 8 files changed, 308 insertions(+) create mode 100644 .claude/skills/capture/SKILL.md create mode 100644 .codex/skills/capture/SKILL.md diff --git a/.claude/skills/CLAUDE.md.template b/.claude/skills/CLAUDE.md.template index be15061..4b38070 100644 --- a/.claude/skills/CLAUDE.md.template +++ b/.claude/skills/CLAUDE.md.template @@ -87,6 +87,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co - 新功能实现方案 → 更新组件职责、数据流等章节 - 踩坑经验和解决方案 → 添加到踩坑经验章节 - API 使用技巧和注意事项 → 更新相关技术栈说明 +- **成功经验复刻**: 一次对话形成可复用结果后,用 `/capture <目录>` 或 `$capture <目录>` 输出结构化记录;另留单独位置保存“味道” {{在此添加项目特定的开发约定}} diff --git a/.claude/skills/capture/SKILL.md b/.claude/skills/capture/SKILL.md new file mode 100644 index 0000000..8db1faa --- /dev/null +++ b/.claude/skills/capture/SKILL.md @@ -0,0 +1,139 @@ +--- +name: capture +description: 复刻一次成功任务的经验,输出到用户指定目录。调用方式 `/capture <目录>` 或 `$capture <目录>`,生成只含 fenced YAML 的 Markdown 记录。 +--- + +# Capture - 成功经验复刻 + +> **定位**:把当前会话里已经跑通、值得复用的做法沉淀成结构化记录,供其他仓库直接复刻。 + +当用户调用 `/capture `、`$capture `,或自然语言要求“把这次成功经验沉淀/复刻到某个目录”时,执行以下步骤。 + +## 1. 锁定输出目录 + +- 如果用户给了目录,直接使用。 +- 绝对路径原样使用;相对路径相对当前仓库根目录。 +- 如果没给目录,只追问一次:`要保存到哪个目录?` +- 目录不存在就创建。 + +## 2. 收集事实 + +只从这些来源取材: + +- 当前会话里的目标、决策、问题、修复、验证结果 +- 当前任务产物、相关文件、diff、日志 +- 明确发生过且已经验证的修复 + +不要做这些事: + +- 不复述用户原需求 +- 不编造未知信息 +- 不把“计划中但没发生”的内容写成事实 + +## 3. 生成记录 + +### 3.1 命名 + +- `task` 用任务本质的短名字,避免 `misc`、`update-doc` 这类空名。 +- 文件名:`YYYY-MM-DD-task-slug.md` +- 若重名,依次追加 `-2`、`-3` + +### 3.2 内容规则 + +- 文件内容只能有一个 fenced code block,语言标记固定为 `yaml` +- code block 外不要写任何文字 +- `raw_request` 只写归一化摘要;拿不准就留空 +- 空标量字段留空 +- 空列表字段写 `[]`,不要保留空 `-` +- 每个 bullet 尽量控制在两行内 +- 重点写:目标、输入输出、必须正确项、风险、关键决策、问题修复、成功原因、可复用模式 +- `why_it_worked` 只写真正起作用的因素 +- `reusable_pattern` 必须可执行,优先写先做什么、看什么、按什么顺序复用 +- `problems_and_fixes` 只写实际发生且已验证的项 + +### 3.3 固定模板 + +~~~~markdown +```yaml +task: + +goal: > + <一句话目标> + +context: + scene: + trigger: + audience: + deadline: + constraints: + - + +input: + raw_request: + known: + - + unknown: + - + dependencies: + - + +output: + deliverable: + consumer: + usage: + acceptance: + - + +must_be_right: + - + +can_be_rough: + - + +risks: + - + +decisions: + - choice: + reason: + +execution: + - + +problems_and_fixes: + - problem: + symptom: + cause: + fix: + status: + +why_it_worked: + - + +reusable_pattern: + first_step: + checkpoints: + - + reusable_steps: + - + anti_patterns: + - + +one_line_summary: > + <一句话总结为什么成功> +``` +~~~~ + +如果某个列表字段没有内容,改成 `[]`。如果某个标量字段没有内容,保持为空,不要删字段。 + +## 4. 保存和回执 + +- 保存到目标目录,不覆盖同名旧文件 +- 默认不把全文再贴回对话,除非用户明确要求 +- 回执只说三件事:保存路径、任务名、提醒主人还应该准备一个单独“保存味道”的地方 + +## 注意事项 + +- 本 skill 只沉淀记录,不修改业务代码 +- 信息不足时允许留空,但不要跳过关键字段 +- 如果任务结果并不成功或还没稳定,不要硬写成“成功经验” diff --git a/.codex/skills/AGENTS.md.template b/.codex/skills/AGENTS.md.template index 9431622..40f10b6 100644 --- a/.codex/skills/AGENTS.md.template +++ b/.codex/skills/AGENTS.md.template @@ -35,6 +35,7 @@ - `go`: 终极执行按钮,激进模式一口气完成开发任务,兼容 0->1 和 1->100 场景。 (file: `./.codex/skills/go/SKILL.md`) - `iter`: 迭代变更入口,调研问题后更新 PRD.md 和 tasks.md,支持 Bug 修复、功能迭代、技术重构。 (file: `./.codex/skills/iter/SKILL.md`) - `doc`: 渐进式文档生成器。首次只写精炼梗概(≤300字),后续通过迭代不断完善。 (file: `./.codex/skills/doc/SKILL.md`) +- `capture`: 复刻一次成功任务的经验,输出到用户指定目录。调用方式 `/capture <目录>` 或 `$capture <目录>`,生成只含 fenced YAML 的 Markdown 记录。 (file: `./.codex/skills/capture/SKILL.md`) - `update`: 收集用户反馈并更新最近使用的 skill。别名:`up`。 (file: `./.codex/skills/up/SKILL.md`) - `deploy`: Drone CI + 服务器 CD 全流程引导:从基础设施检查到生成配置文件到验证部署,交互式完成。 (file: `./.codex/skills/deploy/SKILL.md`) - `gitea`: 统一 Gitea 总入口,支持 issue 查询、issue 拆单创建、git push 和 PR 基础操作,优先从当前仓库 origin 自动识别目标仓库。 (file: `./.codex/skills/gitea/SKILL.md`) diff --git a/.codex/skills/capture/SKILL.md b/.codex/skills/capture/SKILL.md new file mode 100644 index 0000000..0ffba6e --- /dev/null +++ b/.codex/skills/capture/SKILL.md @@ -0,0 +1,139 @@ +--- +name: capture +description: 复刻一次成功任务的经验,输出到用户指定目录。调用方式 `/capture <目录>` 或 `$capture <目录>`,生成只含 fenced YAML 的 Markdown 记录。 +--- + +# Capture - 成功经验复刻 + +> **定位**:把当前会话里已经跑通、值得复用的做法沉淀成结构化记录,供其他仓库直接复刻。 + +当用户调用 `capture` skill、`/capture `、`$capture `,或自然语言要求“把这次成功经验沉淀/复刻到某个目录”时,执行以下步骤。 + +## 1. 锁定输出目录 + +- 如果用户给了目录,直接使用。 +- 绝对路径原样使用;相对路径相对当前仓库根目录。 +- 如果没给目录,只追问一次:`要保存到哪个目录?` +- 目录不存在就创建。 + +## 2. 收集事实 + +只从这些来源取材: + +- 当前会话里的目标、决策、问题、修复、验证结果 +- 当前任务产物、相关文件、diff、日志 +- 明确发生过且已经验证的修复 + +不要做这些事: + +- 不复述用户原需求 +- 不编造未知信息 +- 不把“计划中但没发生”的内容写成事实 + +## 3. 生成记录 + +### 3.1 命名 + +- `task` 用任务本质的短名字,避免 `misc`、`update-doc` 这类空名。 +- 文件名:`YYYY-MM-DD-task-slug.md` +- 若重名,依次追加 `-2`、`-3` + +### 3.2 内容规则 + +- 文件内容只能有一个 fenced code block,语言标记固定为 `yaml` +- code block 外不要写任何文字 +- `raw_request` 只写归一化摘要;拿不准就留空 +- 空标量字段留空 +- 空列表字段写 `[]`,不要保留空 `-` +- 每个 bullet 尽量控制在两行内 +- 重点写:目标、输入输出、必须正确项、风险、关键决策、问题修复、成功原因、可复用模式 +- `why_it_worked` 只写真正起作用的因素 +- `reusable_pattern` 必须可执行,优先写先做什么、看什么、按什么顺序复用 +- `problems_and_fixes` 只写实际发生且已验证的项 + +### 3.3 固定模板 + +~~~~markdown +```yaml +task: + +goal: > + <一句话目标> + +context: + scene: + trigger: + audience: + deadline: + constraints: + - + +input: + raw_request: + known: + - + unknown: + - + dependencies: + - + +output: + deliverable: + consumer: + usage: + acceptance: + - + +must_be_right: + - + +can_be_rough: + - + +risks: + - + +decisions: + - choice: + reason: + +execution: + - + +problems_and_fixes: + - problem: + symptom: + cause: + fix: + status: + +why_it_worked: + - + +reusable_pattern: + first_step: + checkpoints: + - + reusable_steps: + - + anti_patterns: + - + +one_line_summary: > + <一句话总结为什么成功> +``` +~~~~ + +如果某个列表字段没有内容,改成 `[]`。如果某个标量字段没有内容,保持为空,不要删字段。 + +## 4. 保存和回执 + +- 保存到目标目录,不覆盖同名旧文件 +- 默认不把全文再贴回对话,除非用户明确要求 +- 回执只说三件事:保存路径、任务名、提醒主人还应该准备一个单独“保存味道”的地方 + +## 注意事项 + +- 本 skill 只沉淀记录,不修改业务代码 +- 信息不足时允许留空,但不要跳过关键字段 +- 如果任务结果并不成功或还没稳定,不要硬写成“成功经验” diff --git a/AGENTS.md b/AGENTS.md index c78afdf..2b5ce22 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -35,6 +35,7 @@ - `go`: 终极执行按钮,激进模式一口气完成开发任务,兼容 0->1 和 1->100 场景。 (file: `./.codex/skills/go/SKILL.md`) - `iter`: 迭代变更入口,调研问题后更新 PRD.md 和 tasks.md,支持 Bug 修复、功能迭代、技术重构。 (file: `./.codex/skills/iter/SKILL.md`) - `doc`: 渐进式文档生成器。首次只写精炼梗概(≤300字),后续通过迭代不断完善。 (file: `./.codex/skills/doc/SKILL.md`) +- `capture`: 复刻一次成功任务的经验,输出到用户指定目录。调用方式 `/capture <目录>` 或 `$capture <目录>`,生成只含 fenced YAML 的 Markdown 记录。 (file: `./.codex/skills/capture/SKILL.md`) - `update`: 收集用户反馈并更新最近使用的 skill。别名:`up`。 (file: `./.codex/skills/up/SKILL.md`) - `deploy`: Drone CI + 服务器 CD 全流程引导:从基础设施检查到生成配置文件到验证部署,交互式完成。 (file: `./.codex/skills/deploy/SKILL.md`) - `gitea`: 统一 Gitea 总入口,支持 issue 查询、issue 拆单创建、git push 和 PR 基础操作,优先从当前仓库 origin 自动识别目标仓库。 (file: `./.codex/skills/gitea/SKILL.md`) diff --git a/AGENTS.md.template b/AGENTS.md.template index 9431622..40f10b6 100644 --- a/AGENTS.md.template +++ b/AGENTS.md.template @@ -35,6 +35,7 @@ - `go`: 终极执行按钮,激进模式一口气完成开发任务,兼容 0->1 和 1->100 场景。 (file: `./.codex/skills/go/SKILL.md`) - `iter`: 迭代变更入口,调研问题后更新 PRD.md 和 tasks.md,支持 Bug 修复、功能迭代、技术重构。 (file: `./.codex/skills/iter/SKILL.md`) - `doc`: 渐进式文档生成器。首次只写精炼梗概(≤300字),后续通过迭代不断完善。 (file: `./.codex/skills/doc/SKILL.md`) +- `capture`: 复刻一次成功任务的经验,输出到用户指定目录。调用方式 `/capture <目录>` 或 `$capture <目录>`,生成只含 fenced YAML 的 Markdown 记录。 (file: `./.codex/skills/capture/SKILL.md`) - `update`: 收集用户反馈并更新最近使用的 skill。别名:`up`。 (file: `./.codex/skills/up/SKILL.md`) - `deploy`: Drone CI + 服务器 CD 全流程引导:从基础设施检查到生成配置文件到验证部署,交互式完成。 (file: `./.codex/skills/deploy/SKILL.md`) - `gitea`: 统一 Gitea 总入口,支持 issue 查询、issue 拆单创建、git push 和 PR 基础操作,优先从当前仓库 origin 自动识别目标仓库。 (file: `./.codex/skills/gitea/SKILL.md`) diff --git a/CLAUDE.md.template b/CLAUDE.md.template index ebe0dad..66f63c7 100644 --- a/CLAUDE.md.template +++ b/CLAUDE.md.template @@ -84,6 +84,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co - 新功能实现方案 → 更新组件职责、数据流等章节 - 踩坑经验和解决方案 → 添加到踩坑经验章节 - API 使用技巧和注意事项 → 更新相关技术栈说明 +- **成功经验复刻**: 一次对话形成可复用结果后,用 `/capture <目录>` 或 `$capture <目录>` 输出结构化记录;另留单独位置保存“味道” {{在此添加项目特定的开发约定}} diff --git a/README.md b/README.md index f0e0852..7c6fd5a 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ RequirementsDoc ──▶ PRD ──▶ FeatureSummary ──▶ DevelopmentPlan | **执行** | `go` | `/go` | `/go` | 🚀 发射按钮,激进模式一口气完成开发 | | **辅助** | `iter` | `/iter` | `/iter` | 迭代变更入口(Bug/功能/重构) | | | `doc` | `/doc` | `/doc` | 渐进式文档生成器,先写梗概再迭代完善 | +| | `capture` | `/capture` | `/capture` | 把一次成功任务复刻成结构化经验记录,输出到指定目录 | | | `update` | `/up` | `/up` | Skill 升级优化 | | | `deploy` | `/deploy` | `/deploy` | Drone CI/CD 全流程部署引导 | | | `gitea` | `/gitea` | `/gitea` | 统一 Gitea 入口(issue / push / PR) | @@ -155,12 +156,34 @@ Codex: 请用 wf skill 根据 PRD 生成 FeatureSummary 请用 go skill 按 doc/tasks.md 执行未完成任务 请用 doc skill 为认证模块写一份 300 字以内的使用说明 +请用 capture skill 把这次成功任务复刻到 ./docs/lessons 请用 gitea skill 看当前仓库 open issues 请用 gitea skill 给当前分支开 PR 到 main 请用 gitea skill push 当前分支到远端 请用 issue-drive skill 把当前 bug 拆成两张 Gitea issue ``` +### 复刻一次成功经验 + +Claude Code: + +```bash +/capture ./docs/lessons +``` + +Codex: + +```text +/capture ./docs/lessons +$capture /tmp/经验库 +``` + +说明: + +- 目录由调用时显式指定,不绑定 `doc/` +- 输出文件名:`YYYY-MM-DD-task-slug.md` +- 文件内容只包含一个 fenced `yaml` code block,便于复用和提取 + ### 统一 Gitea 入口 先配置环境变量: @@ -288,6 +311,7 @@ your-project/ │ ├── rp/ │ ├── ... │ ├── iter/ +│ ├── capture/ │ ├── gitea/ │ └── issue-drive/ ├── .claude/ @@ -296,6 +320,7 @@ your-project/ │ ├── rp/ │ ├── ... │ ├── iter/ +│ ├── capture/ │ ├── gitea/ │ └── issue-drive/ ├── doc/ # ← 文档输出位置