From 398d0348f8463bf9aa9161d11c4a15b9dc4cb0d6 Mon Sep 17 00:00:00 2001 From: zfc Date: Thu, 26 Feb 2026 14:10:17 +0800 Subject: [PATCH] feat: Add CLAUDE.md template and changelog skill Add reusable CLAUDE.md.template with placeholder-based structure for new projects, and add /changelog skill for automated release workflow. Co-Authored-By: Claude Opus 4.6 --- .claude/skills/changelog/SKILL.md | 109 ++++++++++++++++++++++++++++++ CLAUDE.md.template | 106 +++++++++++++++++++++++++++++ 2 files changed, 215 insertions(+) create mode 100644 .claude/skills/changelog/SKILL.md create mode 100644 CLAUDE.md.template diff --git a/.claude/skills/changelog/SKILL.md b/.claude/skills/changelog/SKILL.md new file mode 100644 index 0000000..942ffcf --- /dev/null +++ b/.claude/skills/changelog/SKILL.md @@ -0,0 +1,109 @@ +--- +name: changelog +description: 一键发版:生成更新日志 → commit → 打 tag,全流程自动化。 +--- + +# Changelog - 一键发版 + +> **定位**:发版全流程。`/changelog 0.2.0` 一个命令搞定日志生成 + commit + tag。 + +## 用法 + +``` +/changelog # 例: /changelog 0.2.0 +/changelog # 不传版本号则自动推断 +``` + +## 执行流程 + +### 1. 确定版本号 + +**有参数**:直接使用用户传入的版本号。 + +**无参数**:自动推断。读取最新 tag,按 semver 规则 bump patch 版本 +1。例如当前最新 `v0.1.2` → 推断为 `0.1.3`。若无 tag 则默认 `0.1.0`。 + +版本格式:`{major}.{minor}.{patch}`(标准 semver) + +### 2. 获取 Commits + +```bash +# 找到上一个 tag +git tag --sort=-creatordate + +# 读取 commits(从上一个 tag 到 HEAD) +git log {prev_tag}..HEAD --oneline --no-merges +``` + +如果没有上一个 tag,则从初始 commit 开始。 + +### 3. AI 总结 + +将 commit 列表总结为用户友好的中文更新说明: + +| type | emoji | 说明 | +|------|-------|------| +| feat | ✨ | 新功能 / 新 Skill | +| fix | 🐛 | Bug 修复 | +| refactor | ♻️ | 代码重构 | +| docs | 📝 | 文档更新 | +| chore | 🔧 | 杂项维护 | + +规则: +- 每条说明 1 句话,简洁明了 +- 合并相关的小 commit 为一条 +- 面向用户描述(不要出现技术细节如文件名、函数名) +- summary:一句话概括本次更新的核心主题 + +### 4. 展示草稿,等待确认 + +``` +📦 v{version} · {date} +{summary} + +✨ 新增 /go 执行按钮 Skill... +📝 更新 README 文档格式... +🐛 修复仓库 URL 配置... +``` + +**必须等用户确认或修改后才继续**。 + +### 5. 写入文件 + +用户确认后,更新 `CHANGELOG.md`: + +- 文件不存在时创建,头部加 `# Changelog` 标题 +- 将新条目插入已有内容**头部**(标题行之后,最新版本在前),保持现有条目不变 +- 条目格式: + +```markdown +## v{version} ({YYYY-MM-DD}) + +{summary} + +- ✨ xxx +- 🐛 xxx +- ♻️ xxx +``` + +### 6. Commit + Tag + +```bash +# Stage 变更文件 +git add CHANGELOG.md + +# Commit +git commit -m "release: v{version}" + +# 打 tag +git tag v{version} +``` + +### 7. 完成提示 + +``` +✅ 发版完成! +- 📝 CHANGELOG.md: 新增 v{version} 条目 +- 🏷️ git tag: v{version} + +需要 push 到远程吗?(git push && git push --tags) +``` diff --git a/CLAUDE.md.template b/CLAUDE.md.template new file mode 100644 index 0000000..d46d524 --- /dev/null +++ b/CLAUDE.md.template @@ -0,0 +1,106 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + + +## 最重要的事情 + +1. **TDD 先行** - fix/feat 必须先写失败测试,红黄绿循环 +2. **原子提交** - 每个 commit 只做一件事,可独立回滚 +3. **文档驱动** - feat 改动关联 doc/ 下文档,多输出表格、流程图、ASCII 原型图 +4. **知识沉淀** - 有价值的迭代沉淀到 CLAUDE.md(拿捏不准主动问我) +5. **利用现有工具** - 不重复造轮子,会开车 > 会修车 +6. **任务结束后追加** - 主人,用不用我沉淀 or git 提交? + +## 项目概述 + +**{{项目名称}}** — {{一句话描述}} + +**产品目标**: +- {{目标1}} +- {{目标2}} +- {{目标3}} + +## 技术栈 + +| 层级 | 技术 | 说明 | +|------|------|------| +| 前端 | {{前端技术}} | {{说明}} | +| 后端 | {{后端技术}} | {{说明}} | +| 数据库 | {{数据库}} | {{说明}} | +| 缓存 | {{缓存方案,如无可删除此行}} | {{说明}} | +| AI 服务 | {{AI 服务,如无可删除此行}} | {{说明}} | +| 部署 | {{部署方案}} | {{说明}} | + +## 项目结构 + +``` +{{项目名称}}/ +├── {{目录1}}/ # {{说明}} +│ ├── {{子目录}}/ # {{说明}} +│ └── {{子目录}}/ # {{说明}} +├── doc/ # 项目文档 +│ ├── PRD.md +│ ├── DevelopmentPlan.md +│ └── tasks.md +└── {{其他文件}} # {{说明}} +``` + +## 常用命令 + +### 开发 + +```bash +{{开发启动命令}} +``` + +### 构建 + +```bash +{{构建命令}} +``` + +### 测试 + +```bash +{{测试命令}} +``` + +### 部署 + +```bash +{{部署命令}} +``` + +## 开发约定 + +- **包管理器**: 使用 {{包管理器}}(不是 {{其他包管理器}}) +- **TDD 流程**: 先写测试再实现,核心业务逻辑覆盖率 100% +- **日志规范**: 使用日志管理器,避免 console.log +- **知识沉淀**: 将有价值的对话迭代沉淀到文档中,包括: + - 重要技术决策和架构演进 → 更新 CLAUDE.md 相关章节 + - 新功能实现方案 → 更新组件职责、数据流等章节 + - 踩坑经验和解决方案 → 添加到踩坑经验章节 + - API 使用技巧和注意事项 → 更新相关技术栈说明 + +{{在此添加项目特定的开发约定}} + +## 交互准则 + +- 任务彻底结束后,追加一句:**主人,用不用我沉淀 or git 提交?** + +## 踩坑经验 + +