
深入 get-shit-done 的 Changelog 体系从 v1.0.0 到 v1.42.1 的 198 次发布、版本策略与 changeset 维护工具链【免费下载链接】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-doneCHANGELOG.md 是 get-shit-done下文简称 GSD这份“meta-prompting 上下文工程 规格驱动开发”系统最完整的一份自述文档2943 行、198 个版本区块记录了从 2025-12-14 的 v1.0.0 到 2026-05-15 的 v1.42.1 的全部发布历史。读完本文你将掌握三件事如何解读 GSD 每个版本区块的结构与写作惯例v1.0.0 至 v1.42.1 关键里程碑的完整演进脉络以及这套 changelog 背后由 scripts/changeset/ 工具链、VERSIONING.md 发布策略和 bug-NNNN 回归测试共同构成的“可审计的发布工程”。一、CHANGELOG.md 全景速览先给出一份可核对的档案数据均来自对 CHANGELOG.md 的直接统计维度实际内容总行数2943 行版本区块数198 个## [x.y.z]区块 1 个## [Unreleased]占位时间跨度2025-12-14v1.0.0→ 2026-05-15v1.42.1当前 stable格式遵循 Keep a Changelog 1.1.0 约定仓库当前版本1.50.0-canary.0package.json 与 sdk/package.json 一致canary 线配套发布文档docs/RELEASE-v1.42.1.md、docs/RELEASE-v1.41.0.md、docs/RELEASE-v1.50.0-canary.1.md 等文件头部的组织方式非常规整见 CHANGELOG.md第 7 行是## [Unreleased]区块带一个指向“最新 stable 到 HEAD”的 compare 链接作为尚未发布变更的缓冲区其后每个版本区块形如## [1.42.1] - 2026-05-15标题附带指向上一个版本到本版本的 compare 链接文件末尾约 2751–2942 行是一整段 Markdown 链接引用定义区[1.0.0]: .../releases/tag/v1.0.0形式把正文中的[版本号]统一解析为 tag 链接。一个值得注意的历史细节v1.29.0 之前的区块链接全部指向glittercowboy/get-shit-done仓库v1.29.0 条目明确记录了 “Repository references updated fromglittercowboytogsd-build”——changelog 本身也完整保留了项目改组的历史。二、版本区块的结构惯例如何解读单条变更记录以最新的 v1.42.1CHANGELOG.md为例每个版本区块内部按类别小标题分组实际出现的类别包括### Added、### Changed、### Fixed、### Feature、### Enhancement、### Removed、### Documentation。每条变更的写作模板高度一致加粗标题一句话说明“什么坏了/新增了”机制段解释根因、实现手段与影响范围常涉及具体源码路径如scripts/build-hooks.js、planningDir、resolveNodeRunner()括号内的#NNNN指向触发该变更的 issue/PR 编号涉及回归防护时直接点名测试文件例如 v1.41.0 中 Stryker 变异测试加固条目写道 “Regression covered bytests/bug-2986-config-schema-mutation-killers.test.cjs95 tests across four suites”。这种“根因 机制 issue 号 回归测试”四段式写法使 changelog 不只是发布说明而是一份可追溯的故障数据库。比如 v1.41.0 的 “Atomic writes inscripts/build-hooks.jsto fix flaky release CI” 条目完整交代了九个测试文件的before()钩子并发调用 builder、fs.copyFileSync的截断-写入窗口被bin/install.js子进程读到空文件、最终表现为 tests/bug-2136-sh-hook-version.test.cjs 第 4 部分失败——修复方案是先写hooks/.dist-staging/同级暂存目录再用 POSIX 原子的fs.renameSync换入hooks/dist/。三、演进时间线v1.0.0 → v1.42.1 的关键里程碑198 个版本按日期密度大致分为三个阶段2025-12-14 ~ 2026-01 的 1.0.x–1.9.x 快速修补期约 120 个 patch 版本、2026-02 ~ 03 的 1.20–1.27 功能密集期、2026-04 ~ 05 的 1.28–1.42 平台化阶段。以下按 changelog 原文提炼各阶段的核心内容。3.1 v1.0.0系统内核2025-12-14首个发布CHANGELOG.md定义了 GSD 的最小工作流核心斜杠命令/gsd:new-project、/gsd:discuss-phase、/gsd:plan-phase、/gsd:execute-phase注意早期使用gsd:cmd冒号语法v1.32.0 起迁移为/gsd-cmd连字符语法v1.41.0 又进一步清理了文档中的命名漂移PROJECT.md与STATE.md模板即后续所有.planning/产物的前身基于 Phase 的开发工作流、YOLO 自主执行模式、带检查点的交互模式。3.2 v1.26.0 – v1.27.0从“执行器”到“工程团队”2026-03-16 ~ 03-20这两个 minor 版本是功能密度最高的区间之一v1.26.0/gsd:ship从已验证的 phase 产物自动生成 PR body 并创建 PR、/gsd:next自动推进到下一步、/gsd:profile-user分析 Claude Code 会话历史、按 8 个维度生成USER-PROFILE.md、跨 phase 回归门、需求覆盖门、.planning/HANDOFF.json会话交接、WAITING.json决策信号文件以及“验证债务”跟踪体系status: partial、result: blocked、HUMAN-UAT.md等五层结构v1.27.0Advisor 模式讨论前并行研究 agent 评估灰区、多仓库工作区根解析、/gsd:review跨 AI 同行评审、/gsd:pr-branch、/gsd:audit-uat以及安全加固——集中式security.cjs模块路径穿越防护、提示注入检测/净化、安全 JSON 解析加上 PreToolUse 钩子gsd-prompt-guard对写入.planning/的内容做注入模式扫描。同版本还把 CI 矩阵更新为 Node 20/22/24、淘汰 EOL 的 Node 18。3.3 v1.30.0 – v1.35.0SDK 化与多运行时2026-03-26 ~ 04-10v1.30.0引入了 GSD SDKheadless TypeScript 包gsd-build/sdk提供gsd-sdk init与gsd-sdk auto两个 CLI 入口配合安装器的--sdk标志这是后面 SDK query 层的地基源码在 sdk/src/v1.33.0引入可查询的代码库情报系统持久化.planning/intel/结构化 JSON 存储files、exports、symbols、patterns、dependencies通过gsd-tools intel子命令查询gsd-intel-updateragent 增量更新opt-in 设计v1.35.0是运行时版图扩张的转折点新增 Cline.clinerules规则式安装、CodeBuddy~/.codebuddy/skills/gsd-*/SKILL.md、Qwen Code与 Claude Code 2.1.88 相同的开放 skills 标准三个运行时并新增/gsd-from-gsd2GSD-2.gsd/格式反向迁移回 v1.planning/格式支持--dry-run/--force/--path和/gsd-ai-integration-phaseAI 框架选型向导产出AI-SPEC.md、/gsd-eval-reviewAI phase 评估覆盖度审计。3.4 v1.36.0 – v1.39.1SDK query 层三阶段与安装解耦2026-04-14 ~ 05-01这是 changelog 中写作最“用户视角”的一段——v1.36.0/v1.38.4 直接用 “what you get” 小标题向使用者解释 SDK query 层 Phase 1/2/3 的行为承诺例如 Phase 2 的核心不变式是gsd-sdk query只会运行已注册的命令未注册命令在 CLI 层直接拒绝杜绝静默回退。关键节点v1.36.0/gsd-graphify知识图谱集成、gsd-pattern-mapperagent、gsd-build/sdkPhase 1 typed query 基础、opt-in TDD 管线模式tdd_mode--tdd、陈旧/孤儿 worktree 检测W017、上下文感知提示瘦身面向 sub-200K 模型自动缩减v1.37.0/gsd-spike与/gsd-sketch一次性可行性实验与 UI 草图落盘.planning/spikes/、.planning/sketches/、/gsd-spec-phase苏格拉底式规格澄清 歧义评分、agent 体积预算强制XL1600 行/LARGE1000/DEFAULT500由 tests/agent-size-budget.test.cjs 守护、用file渐进披露机制抽取共享引用文件以降低每次派发的上下文开销v1.38.2SDK 与“用户机器上从源码构建”彻底解耦——预构建的sdk/dist/随父包 tarball 发行gsd-sdk变成父包里的bin/gsd-sdk.jsshim同版新增/gsd-ingest-docs扫描含 ADR/PRD/SPEC 的仓库并一次性引导或合并.planning/三桶冲突报告INGEST-CONFLICTS.md单次上限 50 篇文档和/gsd-plan-review-convergence跨 AI 计划收敛循环--codex/--gemini/--claude/--opencode/--all--max-cycles N默认 3v1.39.1hotfix 版/gsd-reapply-patches第 5 步闸门改为确定性校验——用 Node 脚本 diff 备份与 pristine 基线、断言用户新增的每一条显著行都存在于合并结果中替代原先靠 LLM 填表的“Hunk Verification Table”。3.5 v1.41.0技能面整合与发布管线升级2026-05-07v1.41.0CHANGELOG.md是 changelog 中条目最长的一个 minor 版本四条主线技能面从 86 个整合到 59 个#2790新增capture、phase、config、workspace四个聚合技能吸收微技能update --sync/--reapply、sketch --wrap-up、code-review --fix、progress --do/--next等六个父技能把子操作收编为 flag31 个微技能被删除且“零功能损失”。配套地discuss-phase改为惰性文件加载入口 token 从 ~13k 降到接近 0所有commands/gsd/*.md的 description 被裁到 ≤100 字符并由 scripts/lint-descriptions.cjs 在 CI 里卡死上限对应 tests/enh-2789-description-budget.test.cjs。六命名空间元技能#2792模型看到的不再是 86 个平铺条目而是 6 个路由器gsd:workflow、gsd:project、gsd:review、gsd:context、gsd:manage、gsd:ideate两阶段路由把冷启动系统提示词开销从 ~2,150 token 降到 ~120对应实现可见 commands/gsd/ 下的ns-workflow.md等文件回归测试为 tests/enh-2792-namespace-skills.test.cjs。--minimal安装标志别名--core-only只写主循环核心技能与零个子 agent冷启动开销从 ~12k token 降到 ~700面向 32K–128K 上下文的本地 LLM安装清单记录mode: minimal | full。发布管线新增手动触发的 canary 工作流{base}-canary.{N}构建发到canarydist-tag并把 canary 的发布守卫从main切到dev分支确立dev → canary、main → next/latest的分支→tag 策略策略文档见 docs/CANARY.mdhotfix 流程升级为自动 cherry-pickmain上所有未发布的fix:/chore:提交最旧优先、git cherry跳过补丁等价物、冲突即停并列出 SHAhotfix 分支还要打包sdk-bundle/gsd-sdk.tgz保证与正式 release 对齐。3.6 v1.42.1当前 stable2026-05-15最新 stable 只有两条修复但都是“静默数据损坏”级别的CHANGELOG.mdproject_code前缀一致性#3287配置了project_code的项目此前会积累“两头命名”01-foundation/与XR-02.1-spike/混用。init.phase-op与init.plan-phase现在在 JSON bundle 里直接暴露带前缀的expected_phase_dir工作流的 fallback mkdir 一律消费该值phase.scaffold phase-dirCJS 与 SDK 两侧同步修复buildStateFrontmatter计数嵌套 plan 文件#3261使用嵌套布局plans/N-PLAN-NN-slug.md的仓库每次 state 变更都会把progress.*计数器静默改写回低值——修复后与 #3115/#3139/#3191 同族闭环。四、版本策略changelog 与 VERSIONING.md 的互证VERSIONING.md 声明 GSD 遵循 Semantic Versioning 2.0.0并用三个发布层级映射到 npm dist-tag。把该文档与 changelog 实际条目对照可以确认策略是真实执行而非纸面约定层级内容版本格式npm tag分支安装方式Patch仅修复1.27.1latesthotfix/1.27.1npx get-shit-done-cclatestMinor修复 增强1.28.0latestRC 之后提升release/1.28.0npx get-shit-done-ccnextRC 期Major修复 增强 特性2.0.0latestbeta 之后提升release/2.0.0npx get-shit-done-ccnextbeta 期预发布推进规则minor 只用rc1.28.0-rc.1 → rc.2 → 1.28.0major 只用beta2.0.0-beta.1 → beta.2 → 2.0.0一个版本周期内固定一种预发布类型。仓库里 docs/RELEASE-v1.39.0-rc.4.md 到 docs/RELEASE-v1.39.0-rc.7.md 连续四个 rc 发布文档正是这一规则的执行现场。hotfix 的语义在 VERSIONING.md 中被精确定义为累积修复锚点vX.YY.ZvX.YY.{Z-1}的全部内容 该基线之后main上的全部fix:/chore:提交git cherry $BASE_TAG main精确揭示尚未发布的提交集合新 tag 自动成为下一次 hotfix 的基线。changelog 中能看到这一策略的两次实际应用v1.34.12026-04-06条目自述 “v1.33.0 and v1.34.0 were tagged but never published to npm; this release makes all changes available”——tag 存在但 npm 缺位的补救发布v1.39.12026-05-01条目开篇即 “Hotfix release. Cherry-picks user-facing fixes frommainonto the v1.39.0 stable line”并给出固定安装命令npm install -g get-shit-done-cclatest或1.39.1钉住。此外v1.41.0 引入的canarydist-tag 是第三档它不属于 VERSIONING.md 的原始两级模型而是后来叠加的“手动触发、仅dev分支、带dry_run开关”的实验通道适用于愿意尝鲜但想避开next稳定承诺链的使用者。五、changelog 是如何被维护的changeset 片段工具链GSD 没有靠人手编辑 CHANGELOG.md——scripts/changeset/ 实现了一套“片段 → 折叠”的自动化管线对应 issue #2975这也是阅读本仓库 changelog 可信度的来源。5.1 片段脚手架npm run changesetnew.cjs 生成.changeset/形容词-名词-名词.md随机三段式文件名40×40×40 ≈ 64,000 种组合lint 再拒绝重名用法npm run changeset -- --type Fixed --pr 1234 --body fix the thing片段格式由 parse.cjs 的解析器约束--- type: Fixed pr: 2975 --- markdown 正文其中type必须是Added、Changed、Deprecated、Removed、Fixed、Security六类之一parse.cjs 的ALLOWED_TYPES白名单pr为 PR 号正文不得为空解析失败返回冻结枚举错误码如missing_frontmatter、invalid_type测试只断言稳定错误码而非自由文本——这与 CONTRIBUTING 规范中“禁止对测试输出做裸文本匹配”一致。另一个细节是!-- docs-exempt: reason --标记parse.cjs声明该变更豁免“docs-required lint”reason 是必填的审计纸面记录正则被刻意锚定到独占整行且带^...$ multiline 语义行内提及不会被误判字符类[^\r\n]保证线性时间且 CRLF 作者与 LF 作者产出同样的正文形状。5.2 折叠渲染npm run changelog:rendercli.cjs 的render子命令把.changeset/*.md折叠进 CHANGELOG.md 并删除已消费片段node scripts/changeset/cli.cjs render --repo . --version 1.43.0 --date 2026-05-20 [--json]关键行为见 cli.cjs 的splitChangelog把# Changelog标题与导言第一个## [version]之前的所有内容作为 lead 保留现存的## [Unreleased]区块被视为占位符被新版本区块替换--json输出结构化报告是“唯一被测试断言的契约”人类可读格式化输出仅供操作员使用。serialize.cjs 负责把片段正文 (#NNNN)PR 后缀序列化为最终条目github-release-notes.cjs 则从同一批片段渲染 GitHub Release Notes对应 scripts/changeset/ 与 tests/changeset-cli.test.cjs、tests/changeset-render.test.cjs、tests/changeset-github-release-notes.test.cjs 等成组回归测试。package.json 中登记的三个 npm script 即完整工作入口lint:changeset: node scripts/changeset/lint.cjs, changeset: node scripts/changeset/new.cjs, changelog:render: node scripts/changeset/cli.cjs render因此 CHANGELOG.md 里每条变更尾部的(#NNNN)后缀不是手写习惯而是渲染器按片段 frontmatter 的pr字段统一追加的——这也解释了为什么 v1.30.0 之前的早期区块没有 PR 后缀那批版本早于该工具链。5.3 发布文档的分层changelog仓库根 CHANGELOG.md记录“全部”而 docs/RELEASE-*.md 系列是面向单次发布的“发布公告”以 docs/RELEASE-v1.42.1.md 为例它在 changelog 条目之外补充了发布定性“safety and control-surface release”、安装命令npx get-shit-done-cclatest与新增特性的使用者视角说明package legitimacy gate、--profilecore/standard/full技能面预算、installer migration 框架。两套文档同源不同粒度配合 docs/RELEASE-v1.40.0-rc.1.md、docs/RELEASE-v1.42.0-rc.1.md 等 rc 文档完整覆盖了 pre-release 周期。六、changelog 与回归测试的交叉引用GSD 的 tests/ 目录采用bug-issue号-slug.test.cjs命名现存数百个与 changelog 条目的#NNNN形成一一对应的可验证闭环。挑几条可现场核对的changelog 条目版本编号回归测试config-schema 变异测试加固v1.41.0#2986tests/bug-2986-config-schema-mutation-killers.test.cjshotfix 只 cherry-pick 影响 tarball 的提交v1.41.0#2980tests/bug-2980-hotfix-only-picks-shipping-changes.test.cjs分类器退出码语义与 base-tag 暂存v1.41.0#2983tests/bug-2983-classifier-exit-codes-and-base-tag-staging.test.cjsdry-run 校验在 reconciliation 时跳过v1.41.0#2987tests/bug-2987-dry-run-validation-skip-on-reconciliation.test.cjsgsd-pristine/由安装器填充v1.41.0#2998tests/bug-2998-pristine-dir-populated.test.cjs陈旧已删命令引用清理v1.41.0#2950tests/bug-2950-stale-command-refs.test.cjsshell hook 版本头修复v1.38.4#2136tests/bug-2136-sh-hook-version.test.cjs技能 description ≤100 字符预算v1.41.0#2789tests/enh-2789-description-budget.test.cjs命名空间元技能v1.41.0#2792tests/enh-2792-namespace-skills.test.cjs阅读 changelog 时的实用姿势看到#NNNN直接ls tests/ | grep NNNN即可定位该修复的可执行证据。七、实操如何查询 changelog 并选择安装版本在仓库内检索版本历史的常用命令# 列出全部 198 个版本区块行号 标题 日期 grep -n ^## \[ CHANGELOG.md # 查看 v1.41.0 单版本条目全文16 行到 336 行之间 sed -n 16,336p CHANGELOG.md # 查找提及某个子系统的条目例如 worktree grep -n -i worktree CHANGELOG.md # 查看某条 issue 的全部足迹changelog 测试 文档 grep -rn 2986 CHANGELOG.md docs/ tests/ --include*.cjs --include*.md -l版本选择建议以本仓库实际状态为准生产/日常使用npx get-shit-done-cclatest当前指向 v1.42.12026-05-15 发布的 stable尝鲜 RC/betanpx get-shit-done-ccnext仅在明确接受 pre-release 时canary 通道canarydist-tag 对应dev分支手动触发的构建当前仓库版本为1.50.0-canary.0见 docs/RELEASE-v1.50.0-canary.1.md面向希望参与早期验证的维护者最小安装--minimal别名--core-only只装主循环核心技能适合 32K–128K 上下文的本地模型之后重跑不带--minimal的gsd update可扩展回完整技能面。运行环境前提Node 22 及以上v1.34.2 曾把engines.node从24.0.0回调回支持 Node 22CI 矩阵同时覆盖 Node 22/Node 24。八、小结CHANGELOG.md 的价值不止于“发布记录”它是一份带根因分析的故障数据库每条修复写清机制与影响面、一份与 VERSIONING.md 严格互证的版本策略执行日志semver 三级 latest/next/canarydist-tag 累积式 hotfix 锚点、以及一套可复现工具链的产物scripts/changeset/ 的片段→渲染管线保证(#NNNN)后缀、类型分类与 Unreleased 折叠全部机械化。配合bug-NNNN命名的回归测试与docs/RELEASE-*.md发布文档从 v1.0.0 的四条核心命令到 v1.42.1 的 30 项修正GSD 的每一次演进都留下了可检索、可验证、可交叉引用的完整轨迹。【免费下载链接】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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考