get-shit-done 仓库 ADR/PRD 文档命名规范升级:以 issue 前缀 slug 命名取代本地顺序编号

发布时间:2026/10/10 1:35:02

get-shit-done 仓库 ADR/PRD 文档命名规范升级:以 issue 前缀 slug 命名取代本地顺序编号 人工智能AI 应用提示工程开发工具工作流自动化AI Agent【免费下载链接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.项目地址https://gitcode.com/GitHub_Trending/getshi/get-shit-done点击查看免费下载导读本文围绕 get-shit-doneGSD仓库的一条 changeset 变更记录.changeset/zesty-goats-dart.mdtype:ChangedPR #3487展开ADR架构决策记录与 PRD产品需求文档文件从此统一改用docs/adr/issue#-slug.md/docs/prd/issue#-slug.md的 issue# 前缀 slug 命名而旧的本地计算顺序编号NNNN-*仅作为不可变历史记录保留。读完本文你将掌握为什么本地顺序编号必然撞号、新旧命名格式的精确形态、从提 issue 到合 PR 的完整流程、分支命名规则以及仓库中对应的 README、源码与测试证据可直接用于向本仓库提交新的 ADR/PRD。变更全景一条 changeset 说了什么GSD 仓库采用 changeset 机制管理 CHANGELOG每个有用户可见影响的 PR 在 .changeset/ 目录下放置一个随机词-随机词-随机词.md变更片段发布时统一合并进顶层 CHANGELOG.md。片段格式为 frontmatter 正文见 .changeset/README.md--- type: Fixed pr: 1234 --- **/gsd-foo no longer drops trailing slashes** — explain the user-visible change.type允许的值遵循 Keep a ChangelogAdded、Changed、Deprecated、Removed、Fixed、Security。本文关联的 zesty-goats-dart.md 属于Changed类型其正文原文为ADR and PRD files now use issue#-prefix slug naming(docs/adr/issue#-slug.md,docs/prd/issue#-slug.md). The legacy local-compute sequential scheme (NNNN-*) is retained for the existingdocs/adr/0001-*through0011-*files as immutable historical record but cannot be used for new ADRs/PRDs — collisions where two parallel PRs picked the same number prompted the change. See CONTRIBUTING.md Proposing an ADR or PRD for the full process.也就是说这次变更包含三个关键决定新文件必须使用 GitHub 分配的 issue 编号作为文件名前缀旧文件docs/adr/0001-*至0011-*保留为不可变历史记录不得重编号变更的诱因是两个并行 PR 独立选中了同一个编号产生了文件名冲突。为什么必须放弃本地计算下一个编号要理解这次命名变更的必要性先回到旧的本地顺序编号方案NNNN-*。它的工作方式是贡献者查看当前docs/adr/目录里最大的编号然后本地加一作为自己的新编号。这个方案有两个致命问题其一本地计算不具原子性。两个开发者各自基于自己的main分支快照计算下一个编号会独立得出同一个整数两个并行 PR 都提交该编号的文件合并时即发生碰撞。这正是 docs/adr/README.md 中记录的情况冲突已经真实地留在了磁盘上——0010-*存在两个文件0011-*存在三个文件。看实际目录即可验证docs/adr/ 当前内容docs/adr/ ├── 0001-dispatch-policy-module.md ├── 0002-command-contract-validation-module.md ├── ... ├── 0010-file-operation-engine-module.md ← 重复编号 1/2 ├── 0010-skill-surface-budget-module.md ← 重复编号 2/2 ├── 0011-review-default-reviewers-prd.md ← 重复编号 1/3 ├── 0011-review-default-reviewers.md ← 重复编号 2/3 ├── 0011-skill-surface-budget-module.md ← 重复编号 3/3 ├── 0012-command-routing-hub.md ├── 3524-cjs-sdk-hard-seam.md ← 新规范示例 └── 3660-runtime-artifact-layout-module.md ← 新规范示例其中0010-*的双份与0011-*的三份在 README 中被明确标注为旧本地计算约定的残留产物documented residue of the old local-compute convention——不是值得模仿的模式。其二GitHub issue 编号是服务端分配、全局唯一的。与本地计算不同一旦你打开一个 issue该编号立即被 GitHub 原子性地保留任何其他人都拿不到同一个编号。因此两个 PR 各自以不同 issue 编号作前缀永远不会撞名。这与 changeset 机制的设计思路完全同构.changeset/README.md 解释过两个 PR 同时编辑CHANGELOG.md的### Fixed块必然在合并时冲突而两个 PR 各添加一个随机命名的独立片段则因为不共享行而永不冲突。ADR 命名同理——0011-*撞号与双 PR 共改 CHANGELOG 冲突是同一类并发问题issue# 前缀方案就是它的一致性解法。新旧命名规范对照维度旧规范已废弃新规范现行文件名格式NNNN-slug.md本地计算顺序号issue#-slug.mdGitHub 分配的 issue 号ADR 路径docs/adr/NNNN-slug.mddocs/adr/issue#-kebab-slug.mdPRD 路径历史上混在docs/adr/中如0011-review-default-reviewers-prd.mddocs/prd/issue#-kebab-slug.md编号来源本地扫描目录最大值 1打开 issue 后由 GitHub 分配冲突风险高并行 PR 撞号无编号全局原子分配历史文件—docs/adr/0001-*~0011-*保留为不可变记录禁止重编号新规范下slug 采用 kebab-case连字符小写。仓库中已落地的实例ADRdocs/adr/3524-cjs-sdk-hard-seam.mdissue #3524ADRdocs/adr/3660-runtime-artifact-layout-module.mdissue #3660PRDdocs/prd/3524-cjs-sdk-hard-seam.mdissue #3524注意 ADR 与 PRD 可以共享同一个 issue 号如 #3524 同时存在docs/adr/3524-*与docs/prd/3524-*因为路径不同文件名不会冲突两者在内容上通过Related PRD / Related ADR字段互相引用。完整流程Proposing an ADR or PRD命名变更的完整工作流记录在 CONTRIBUTING.md 的Proposing an ADR or PRD一节。该节开宗明义ADR 记录一个重大的架构决策PRD 捕获一个功能在实现之前的 what 与 why两者都遵循与项目其他一切事项相同的issue-first先提 issue规则。流程共四步打开一个合适类型的 issue 并完整填写enhancement重访既有领域的 ADR、feature新的架构面、chore策略/文档决策。等待维护者批准维护者必须打上approved-enhancement、approved-feature标签或确认 chore之后才允许创建任何文件。用 GitHub 分配的 issue 编号作为文件名前缀在以 issue 命名的分支上创建文件docs/adr/issue#-slug.mdADRdocs/prd/issue#-slug.mdPRD分支名docs/issue#-slug用对应模板开 PR并在 PR body 中以Closes #issue#关闭该 issue。配套的硬性约束CONTRIBUTING.md 原文要点一个 issue 一个 ADR 或 PRD 一个 PR。禁止把多个决策塞进同一个文件或同一个 PR。禁止本地计算下一个编号。任何用旧NNNN-*顺序模式命名新 ADR/PRD 的 PR会在合并前被要求改名为issue#-slug.md格式。拒绝理由清单issue 在创建文件前未获批准文件名用了本地计算顺序号而非 issue#一个 PR 打包了多个决策文件放错目录docs/adr/vsdocs/prd/。CONTRIBUTING.md 还给出了命名示例issue #3485 获批后其编号成为前缀生成docs/adr/3485-adr-prd-naming-convention.md分支为docs/3485-adr-prd-naming-convention。在 docs/adr/README.md 中亦有3485-adr-prd-naming-convention.md、3464-review-default-reviewers.md等示例格式。目录级约定两份 README 的分工新命名规范同时写进了 ADR 与 PRD 两个目录的 README形成目录级的自文档化约定docs/adr/README.md声明新 ADR 使用 issue# 前缀 slug 命名解释 Why两个开发者本地计算下一个编号会撞号冲突已在磁盘上——0010-*两份、0011-*三份将0001-*至0011-*定义为不可变历史记录末尾附完整 ADR 索引表含 Status 字段Accepted / Proposed / Superseded by 0011 / Reference 等并说明 ADR-0005 是顶层 SDK seam 索引、各 seam ADR 之间的交叉引用关系。docs/prd/README.md声明 PRD 与 ADR 采用相同的 issue# 前缀 slug 命名用docs/prd/3491-bar-feature.mdissue #3491 的示例说明格式指出历史文件docs/adr/0011-review-default-reviewers-prd.md早于本目录存在保留为不可变历史记录不是值得模仿的模式并附 PRD 索引表。两份 README 都将完整流程指针指向 CONTRIBUTING.md形成CONTRIBUTING 定流程 → 目录 README 定命名 → 文件内 frontmatter 定状态的三层规范体系。ADR 与 PRD 文件内部结构新规范下的实际文件展示了统一的头部元数据结构。以 docs/adr/3524-cjs-sdk-hard-seam.md 为例其开头为# CJS↔SDK hard seam — one source of truth per Shared Module - **Status:** Proposed - **Date:** 2026-05-14 - **Tracking issue:** #3524 - **Related PRD:** docs/prd/3524-cjs-sdk-hard-seam.md - **Extends:** ADR-0005 (seam map) - **Defers to:** ADR-0001, ADR-0003, ADR-0004, ADR-0006, ADR-0009其配套的 docs/prd/3524-cjs-sdk-hard-seam.md 则为# PRD: CJS↔SDK hard seam — Shared-Module migration - **Status:** Reference - **Date:** 2026-05-14 - **Tracking issue:** #3524 - **Related ADR:** docs/adr/3524-cjs-sdk-hard-seam.md可以看出Tracking issue 字段与文件名前缀的 issue# 严格对应ADR 与 PRD 通过 Related 字段互相链接正文采用决策 → 分节细节 → 后果 → 超出范围 → 修订记录Append-only用带日期标题追加而非改写的结构。ADR 的修订段明确写着Append-only. Use a dated header when the decision evolves.——这是 ADR 文档的追加式演进约束。仓库中的验证与测试证据命名规范与 ADR 结构在仓库中并非仅靠约定维护还有测试用例兜底tests/enh-3271-sdk-adr-structure.test.cjs专门校验docs/adr/目录与 README 索引的一致性。它断言docs/adr/README.md必须存在且链接到每一个现有 ADR 文件README must link to every ADR. Missing: …并解析具体 ADR如0005-sdk-architecture-seam-map.md、0006-planning-path-projection-module.md的 title、status、date、headings 结构。这说明 ADR 文件不是自由格式其 frontmatter 与章节结构受到测试约束。tests/lint-docs-required.test.cjs在文档变更强制检查OK_DOCS_UPDATED中识别docs/adr/、docs/agents/这类嵌套 docs 路径如docs/adr/0099-new.md被判定为文档文件并支持以docs/adr/0001-foo.md形式判断 docs 文件。这意味着对 ADR 文件的变更同样触发文档更新门禁。tests/adr-parser.test.cjs通过parseAdrMarkdown解析 ADR MarkdownsourcePath 如docs/adr/0010.md校验options_considered等结构化字段——仓库中存在专门的 ADR 解析器用于消费 ADR 内容。tests/contributor-standards.test.cjs要求 docs/contributor-standards.md 必须包含 ADR 章节并引用docs/adr/目录确保贡献者标准文档与 ADR 体系互相打通。从源码结构可以推断GSD 将ADR 文档 → 解析器 → 测试串成了一条可机器校验的链路命名规范本身虽然主要靠 CONTRIBUTING 与 CI 的 rename 要求执行但目录完整性README 索引覆盖全部 ADR与文档结构合法性已有自动化测试保障。贡献者实操清单如果你要向本仓库提交一个新的 ADR 或 PRD按下列顺序操作即可一次通过先开 issue不要先写文件。根据变更性质选 enhancement / feature / chore完整填写模板。等待维护者批准标签approved-enhancement/approved-feature/ chore 确认。未获批准前创建文件 直接拒绝。记录 issue 编号。这是文件名前缀的唯一合法来源禁止本地计算顺序号。创建分支docs/issue#-slug并创建文件docs/adr/issue#-slug.md或docs/prd/issue#-slug.mdslug 用 kebab-case如cjs-sdk-hard-seam、runtime-artifact-layout-module。保持一对一。一个文件只记录一个决策一个 PR 只含一个 ADR/PRD。更新目录索引。在 docs/adr/README.md 或 docs/prd/README.md 的索引表中登记新文件否则enh-3271-sdk-adr-structure测试会失败README 必须链接到每个 ADR。按模板开 PRPR body 写Closes #issue#。若改动涉及用户可见行为同时用 changeset 工具node scripts/changeset/new.cjs --type Added|Changed|Fixed|... --pr PR号 --body 一句话说明补充变更片段发布时由node scripts/changeset/cli.cjs render --version vX.Y.Z --date YYYY-MM-DD统一合并进 CHANGELOG.md。不要碰历史文件。docs/adr/0001-*至0011-*是不可变历史记录即使存在0010-*双份、0011-*三份也禁止重编号。小结本次Changed变更PR #3487本质上是把 ADR/PRD 文档的编号主权从贡献者本地猜测移交给了GitHub 服务端原子分配文件名前缀由本地计算的顺序整数改为 issue 编号彻底消除了并行 PR 撞号这一类并发缺陷旧文件作为历史记录原样保留新文件统一走issue#-slug.md格式。这套规范与 changeset 随机词命名、README 索引测试、CONTRIBUTING 流程共同构成了 GSD 文档治理中并发安全命名 机器可校验结构的完整闭环。赞分享人工智能AI 应用提示工程开发工具工作流自动化AI Agent【免费下载链接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.项目地址https://gitcode.com/GitHub_Trending/getshi/get-shit-done点击查看免费下载相关推荐GSD Core 文档命名规范演进从本地序号到 Issue-前缀 SlugADR/PRD 文件命名约定详解GSD Core 文档命名规范演进从本地序号到 Issue 前缀 SlugADR/PRD 文件命名约定详解 导读 本文围绕 GSDGit. Ship.GSD Core 遗留发布说明档案get-shit-done-cc / get-shit-done-redux 时代的完整版本史与命名规则GSD Core 遗留发布说明档案get shit done cc / get shit done redux 时代的完整版本史与命名规则 本文解析 GSD如何用 get-shit-done 的 /gsd-ingest-docs 从仓库已有 ADR 和 PRD 文档初始化 .planning/如何用 get shit done 的 /gsd ingest docs 从仓库已有 ADR 和 PRD 文档初始化 .planning/ 如果你的仓库里已经积人工智能AI 应用提示工程开发工具工作流自动化AI Agent上一篇PokerTH客户端设置与30语言国际化一份完整的i18n配置手册下一篇如何快速实现Nanobrowser本地化从英文到中文的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/10 1:30:01

QT Creator 使用

QT Creator 使用 前言 一、Debug 模式断点找不到右侧求值器? 二、 terminate called after throwing an instance of std::bad_alloc what(): std::bad_alloc 三、莫名其妙的卡顿 1 清理Qt Creator的缓存和配置 2 精简Kit配置与环境变量检查 3 禁用高消耗插件,减轻后台负担 前…

2026/10/10 1:30:01

Docker CLI `docker diff` 命令完全指南:剖析容器文件系统变更

CLI开发工具 【免费下载链接】cli The Docker CLI 项目地址: https://gitcode.com/gh_mirrors/cli5/cli 点击查看 免费下载 docker diff(即 docker container diff)用于列出容器自创建以来文件系统上发生的全部变更,是 Docker CL…

2026/10/10 1:30:01

IIC基础常识

特点:只用两根线,就能让主控和多个外设通信 是种同步,半双工,串行通信协议 结构特点 电气特点:SCL和SDA都是开漏/开集电极结构,必配上拉电阻。I2C设备只能主动把线拉低,不能主动输出高电平。当没…

2026/10/10 2:40:08

AI大模型如何抓取和推荐淮安本地商户?GEO技术链路与POI权重算法拆解

一、技术背景:AI大模型正在重构本地服务流量分发 2026年以来,以豆包、DeepSeek、文心一言、通义千问为代表的生成式AI大模型月活用户突破5.2亿,其中本地生活服务类搜索占比达31%。这标志着本地服务流量分发机制正在发生根本性变革。 传统的流量分发路径是:用户在百度搜索→浏览…

2026/10/10 2:40:08

Spring Boot公司门户网站毕设全解析:从设计到部署避坑指南

又是一年毕业设计季节,Java方向的选题里,“基于Spring Boot的公司门户网站”绝对算得上一个经典中的经典。这个题目为什么经久不衰?因为它恰到好处地覆盖了Java Web开发的核心链路:后端框架应用、数据库设计、前端页面渲染、权限控…

2026/10/10 2:40:08

线上 OOM 排查完全指南(多工具命令版)

线上 OOM 排查完全指南(多工具命令版)线上 OOM 不是单一问题,而是一类问题的统称。排查的核心思路是:先分清是哪种 OOM,再保留现场、收集证据、定位根因、修复验证。 本文覆盖所有主要 OOM 类型,每一类都给…

2026/10/10 2:40:08

焊接件表面缺陷检测实战:VOC转YOLO格式与训练避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 0:04:53

从逻辑门到计算机:数字电路核心原理与全加器搭建实战

如果你拆过一台旧电脑的主板,盯着那些黑乎乎的小芯片看上一会儿,可能会冒出同一个疑问:这堆引脚密集的元件,到底是怎么“变”出那么复杂的应用的?答案并不在某个神秘的部件里,而是在所有芯片内部都在反复使…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑