diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..46a3118 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,17 @@ +## 变更 + + + +## 自查 + +- [ ] README / 用法 / 示例与代码一致;链接、版本、CHANGELOG 已同步 +- [ ] 注释只写为什么、约束、反直觉处,没有复述代码 +- [ ] 没有新增第二份正文、重复入口或第二套默认值 +- [ ] 新增命令 / 参数 / 退出码有示例与测试 +- [ ] 没有引入调用方包的源码依赖 +- [ ] 已跑 `pnpm check`、`pnpm test`、`pnpm typecheck`、`npm pack --dry-run` + +## 审核重点 + +- 架构 / 边界 / 取舍: +- 风险 / 未覆盖: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 03ef287..88ebf3f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,11 +2,14 @@ > 给贡献者与 AI 的最短协作规则。命令见 [README](./README.md)。 -## 工作流 +## Git 流程 -1. 从 `main` 切 `feat/<主题>` / `fix/<主题>`。 -2. 完成后 `git rebase main` 再合并;主分支不保留中间提交。 -3. 一次提交一件事,提交信息用 `type(scope): subject`。 +1. 从 `main` 切 `feat/<主题>` / `fix/<主题>` / `docs-<主题>`。 +2. 开发完成后 `git rebase main`;一次提交一件事,提交信息用 `type(scope): subject`。 +3. push 分支并开 PR;CI 必须通过,评论必须解决。 +4. 用 rebase / squash 合并,删除分支;`main` 不保留中间提交。 +5. 不直接 push `main`,不 force push、不删除 `main`;`main` 受保护,管理员也一样。 +6. 发布按包版本打 tag,由 CI 执行;tag 规则见仓库保护设置。 ## 改动规则 @@ -15,6 +18,18 @@ - 不自维护具体项目的字段清单;`schema` 之类由调用方投影。 - 新增命令或退出码:同步 README、`skills.md`、测试与版本戳。 +## Review + +提交 PR 前自查五件事: + +- **文档**:README / 用法 / 示例是否仍准确;链接、版本、CHANGELOG 是否同步。 +- **注释**:只写为什么、约束、反直觉处;不复述代码。 +- **冗余**:同一事实只有一份正文;新增说明先改真源,其他位置只留指针。 +- **缺漏**:新增能力是否有入口、示例与验证命令。 +- **漂移**:`package.json` / README / `CHANGELOG` / VERSION(及适用的 AI 文档)版本是否一致。 + +机械检查交给 CI;人审看架构、边界、语义与取舍。 + ## 验证 ```bash