Commit Graph

177 Commits

Author SHA1 Message Date
AI不止语
8a2f37071a feat(installer): 新增 Crush 适配(23 款工具,#40);补齐 verify-release 覆盖盲区
## Crush(#40)

查权威源(charmbracelet/crush repo 文档)确认:Crush 遵循 Agent Skills 开放标准,
项目级**自动发现** .crush/skills、.agents/skills、.claude/skills、.cursor/skills
四个目录,无需任何配置;用户级为 ~/.config/crush/skills。

重要副作用写进了 docs:已经为 CC / Cursor / Codex / Antigravity 装过的用户,
Crush 现在就已经能读到那些 skills,此时不要再装 --tool crush,否则同一批
skills 会有两份、被重复加载。docs 里给了确认命令。

- TARGETS 加 Crush(detect: .crush / crush.json / .crush.json),支持 --global
- CLI_PROBES 加 crush(它是 CLI,PATH 探得到)
- skills-only 适配,不需要 bootstrap;不动用户的 crush.json
- 新增 docs/README.crush.md
- 计数 22 -> 23(installer TARGETS 22 条 + Copilot CLI 单独计)

实测:装 20 skills / 二次装幂等 / 卸载零残留且正确保留用户的 crush.json;
--global 装到 ~/.config/crush/skills 并可干净卸载。

## audit Category 5 当场抓到我漏改的 5 处

加计数时忘了 site/build.mjs 的 5 个位置(三语言标语 + FAQ 枚举)。上个版本
新加的计数一致性检查直接 FAIL 拦下 —— 这是它第一次在真实改动中生效。已补
site 18 处并重建,三语言首页 23 计数、0 残留、Crush 均已出现。

## verify-release.sh 有同样的漂移问题,已修

它有自己独立的覆盖清单,加新工具时不进去就静默不测(本次 Crush 就是:
分数仍是 82,因为压根没测它)。

- SPEC / DETECT / GLOBAL_OK 三处补 Crush
- 顺带发现 B 段还漏了 3 个工具的检测标记:DeerFlow(deer_flow)、
  VS Code(.github/copilot-instructions.md)、Gemini CLI(GEMINI.md)——
  后两个是文件而非目录,DETECT 循环原先一律 mkdir,现按扩展名区分创建方式
- 新增 G 段自检:SPEC 覆盖数必须等于 installer 宣称的工具数;
  DETECT 覆盖的工具名集合必须包含全部 TARGETS 名字(用集合比对而非数条数 ——
  一个工具可以有多个检测标记,数数会误判)

覆盖从 82 项升到 90 项。

回归:audit.sh 152 pass / 0 warn / 0 fail、verify-release.sh 90 pass / 0 fail
2026-08-08 06:14:48 +08:00
AI不止语
d1ac51e450 chore(release): v1.7.6 —— 上游 v6.2.0 对齐完成,漂移告警清零
版本号:7 份声明文件 1.7.5 -> 1.7.6(只动 "version" 行)。

C 块(说服性段落 -> rationalization 表)收尾,#19 的 A/B/C/D 四块全部完成。
scripts/audit.sh 的上游结构漂移告警从 3 条降到 0 条。

内容见 RELEASE-NOTES.zh.md v1.7.6 条目。要点:盘点先行发现 14 个
refactor commit 里有 3 项是实质改动而非风格瘦身(新增 rationalization 表、
executing-plans 加隔离工作区步骤、using-git-worktrees 规则等价压缩),
其余各项逐条核实规则在别处仍在之后才删。

发版前门禁
- audit.sh 150 pass / 0 warn / 0 fail
- verify-release.sh 82 pass / 0 fail
- 行为 eval 两轮共 11 题全对(专门考被删段落里的规则是否仍生效)
- dry-run:1.7.6 / 107 文件 / 468.6 kB
v1.7.6
2026-08-08 00:22:39 +08:00
AI不止语
02d255102c refactor(skills): 同步上游 C 块 —— 说服性段落改为 rationalization 表(#19 收尾)
对齐上游 14 个 refactor commit 中尚未同步的 11 个(另 3 个已随 A/B 块完成)。
audit 上游结构漂移告警由此清零:150 pass / 0 warn / 0 fail。

## 盘点先行:不是所有改动都是风格性的

C 块开工前做了逐 commit 盘点,判定标准定为「删掉的文字里有没有别处没写的
规则」。结论纠正了我之前的假设 —— 其中 3 项是实质改动,不是纯瘦身:

- cfb6281 新增了一张 rationalization 表(2 行全新规则),替换掉
  「与工作流的集成」那份工作流清单
- 03147d2 给 executing-plans 加了「先确保隔离工作区」作为步骤 1
  (SDD 那一半已随 A 块完成)
- bc86802 把「常见错误」5 个小节 + 「红线」Never/Always 双清单压成 5 行表,
  规则一条不少 —— 这也是此前唯一有客观漂移证据的 skill

## 逐项核实后才删

每处删除都先确认规则在别处仍在:
- receiving-code-review「底线」:概述已有「核心原则:先验证再实施。先提问再假设」
- writing-skills「总结」:铁律节 + TDD 循环表已完整承载
- writing-plans「注意事项」:精确路径 / Run: / 预期输出 三条都内建在任务结构
  模板里 —— 上游是把「告知」改成「示范」
- brainstorming「核心原则」6 条:5 条已在流程详述里逐条体现(每次一个问题、
  优先选择题、2-3 种方案、增量验证、回头澄清),YAGNI 按上游移到「探索方案」
  的使用现场
- systematic-debugging / dispatching-parallel-agents / verification-before-completion
  删的是「实际效果」「核心优势」「为什么这很重要」这类社会证明与说服段,
  核心原则行全部保留
- systematic-debugging 的「相关技能」块折入第四阶段「验证修复」
- executing-plans 删掉的质量宣称按上游改写为平铺的平台清单

## 验证

结构
- 10 个 skill 的 H2 数与上游逐一对齐(8 个完全相同、2 个差 1)
- executing-plans / using-git-worktrees / requesting-code-review 的
  superpowers: 引用集与上游完全一致

行为 eval —— 两轮共 11 题全对
专门考被删段落里的规则是否仍生效:
- 原生 worktree 工具 vs git worktree add(答出「第一大错误」与「幽灵状态」)
- 跳过 check-ignore 的后果、目录名优先级顺序
- 基线测试失败能否继续、能否无证据宣称完成
- 审查建议技术上有疑问时该照做还是反驳
- 能否先打补丁再查根因
- 能否自己读 diff 代替派审查者(命中 cfb6281 新增的表行)
- 方案里的「以后可能用得上」功能怎么处理(命中 YAGNI 的新落点)

回归:audit.sh 150 pass / 0 warn / 0 fail、verify-release.sh 82 pass / 0 fail

注:audit PASS 由 152 降至 150 —— 上游有意删除的两个「集成」节里各有
superpowers: 引用,Category 4b 因此少 2 项检查;引用集已核对与上游一致。
2026-08-08 00:21:39 +08:00
AI不止语
9022c6fcc0 chore(release): v1.7.5 —— 上游 B + D 块(worktree bug、Gemini 勘误、测试参考重构)
版本号:7 份声明文件 1.7.4 -> 1.7.5(只动 "version" 行)。

内容见 RELEASE-NOTES.zh.md v1.7.5 条目。三项面向用户的实质改动:

1) worktree 清理静默空转(真 bug,已复现验证)
2) 更正「Gemini 不支持子智能体」的错误说法 —— 原说法会让 3 个 skill
   在 Gemini CLI 上瘸腿
3) testing-anti-patterns.md -> writing-good-tests.md:5 个反模式清单
   重构为两条原则 + 变异检查

外加 audit 结构漂移度量修正(此前把围栏内 shell 注释当标题,虚报了 2 条
假阳性漂移;#19 里引用的欠账数字此前是虚高的)。

发版前门禁
- audit.sh 152 pass / 1 warn / 0 fail(唯一 warn 是 using-git-worktrees 真漂移)
- verify-release.sh 82 pass / 0 fail
- 行为 eval 8/8(B 块)
- 包内容核对:writing-good-tests.md 已入包、testing-anti-patterns.md 已移除、
  re-review-prompt.md 在包内
- dry-run:1.7.5 / 107 文件 / 468.1 kB
v1.7.5
2026-08-07 23:35:09 +08:00
AI不止语
2b1ced6365 feat(tdd): 同步上游 B 块 —— testing-anti-patterns 重构为 writing-good-tests(#19)
对齐上游 5 个 commit(e74961c / 9d8630d / e8a9748 / 50025d1 / caa1826 / 517a9c6)。
我们的 testing-anti-patterns.md 是上游 v6.1.1 的纯翻译(「铁律」= The Iron Laws,
非 fork 自加),因此整体重译为新文件。

## 从「5 个反模式清单」重构为「2 条原则」

上游把 299 行的反模式枚举(测 mock 行为 / 生产类加测试方法 / 不懂依赖就 mock /
不完整 mock / 集成测试事后补)重写为 198 行的两条原则:

- 原则 1「点名它要抓的破坏」:写测试体之前先答"什么生产改动会让它失败,那是
  bug 还是决定"。含镜像断言、变更探测器、测行为不测文本、测你的代码不测框架
- 原则 2「跑真东西」:mock 不配拥有断言、在正确层级 mock、替身要具体、
  完整镜像真实数据、生产类只承载生产方法、宁可真实组件也不要复杂 mock
- 新增「变异检查」:收尾前在脑中变异生产代码,每种现实变异都应至少让一个测试失败
- 触发条件放宽:从"添加 mock 或测试工具时"扩到"编写或修改任何测试时"

## TDD SKILL.md 三处同步

- 删掉「为什么顺序很重要」整节长散文,替换为指向 writing-good-tests.md 的
  四条短指引(上游 b9e75dd 把这些论点折进了合理化借口表)
- 合理化借口表 5 行按上游扩写,把被删散文的论点吸收进「现实」列
- 删掉末尾「测试反模式」一节(引用的文件已不存在)
- git rm testing-anti-patterns.md,全仓确认无残留引用

## 验证

结构与完整性
- 两个文件章节均与上游一一对应
- writing-good-tests.md 指标与上游精确一致:12 个 bold 要点 / 11 行快速参考
  表格 / 11 条危险信号;14 项代码标识记号(buildSearchQuery、MAX_RETRIES、
  ToolCatalog、vi.mock、destroy() 等)全部存在

行为 eval —— 8 个判断场景
先跑了一次意外有价值的对照:agent 因权限拿不到 writing-good-tests.md、
只能退回 SKILL.md 的四条摘要时,得分 6/8 —— 错的恰好是只存在于参考文件里的
两条规则(部分 mock 会静默失败、琐碎转发 getter 不配有测试)。
放开读取权限后重测:8/8 全对,且两题的理由直接引用了新文件的原文依据。

这说明参考文件承载着摘要覆盖不到的承重规则 —— 符合上游设计(那四条是指针
而非摘要),但值得记录:agent 读不到参考文件时,这两类判断会出错。

回归:audit.sh 152 pass / 1 warn / 0 fail、verify-release.sh 82 pass / 0 fail
2026-08-07 23:33:39 +08:00
AI不止语
a662295898 fix: 同步上游 D 块 —— worktree 清理静默空转 + Gemini 子智能体支持勘误(#19)
## 1) finishing-a-development-branch:worktree 清理静默空转(上游 0b47219)

真 bug,我们这边与上游同样存在。步骤 6 在步骤 5 已经 cd 到主仓库根之后才用
`git rev-parse --show-toplevel` 重算 WORKTREE_PATH,于是拿到主根路径 ——
`.worktrees/` 溯源判断永远匹配不上,清理静默空转,随后分支删除还会因为
worktree 仍挂着而失败。上游记录说测试对象不得不偏离 skill 原文才能跑通。

修法(4 处):
- 步骤 2 趁还在工作区内就捕获 WORKTREE_PATH
- 步骤 6 改为消费步骤 2 的值,并加显式警告说明为什么不能在此重算
- 步骤 6 去掉冗余的 MAIN_ROOT 推导与 cd(两个调用方都已切好目录)
- 选项 2 补上菜单已声称的分离 HEAD 推送变体

已实际复现验证(临时仓库 + .worktrees/feature):
- 旧逻辑:WORKTREE_PATH 算得 "main" -> 溯源未命中 -> 清理空转
- 新逻辑:捕获到 "main/.worktrees/feature" -> 命中 -> worktree remove 成功、
  branch -D 成功(旧逻辑下会因 worktree 仍挂着而失败)

上游第 4 处改动(rationalization 表里"测试早先通过"那行的措辞)本次不适用 ——
我们还是「红线」清单,那张表属 C 块。

## 2) gemini-tools.md:我们错写成「不支持子 Agent」

我们的版本称 Gemini CLI 没有 Task 等价物、依赖子智能体的 skill「退化为
executing-plans 单会话执行」。实际上 Gemini CLI 通过 `invoke_agent`
(`agent_name: "generalist"`,也可用 `@generalist` 聊天语法)支持子智能体,
并且支持在同一响应里发多个调用做并行分派。

这个错误会让 Gemini CLI 用户的 subagent-driven-development /
dispatching-parallel-agents / requesting-code-review 全部瘸腿。

按上游新版重写(33 行 -> 62 行),补齐:动作导向的映射表、指令文件
(GEMINI.md 层级加载)、个人 skills 目录(~/.gemini/skills 与 ~/.agents/skills
的优先级)、子智能体支持与模板填写、并行分派,以及 tracker_* / complete_task /
update_topic / read_mcp_resource 等此前缺失的 20 个工具名。

已全仓扫描,确认没有别处重复这个错误说法。

## 3) audit.sh 结构漂移度量修正(顺带发现的假阳性来源)

3c/3d 用 `grep -cE '^#{1,4} '` 数标题,但这会把 ``` 围栏内的 shell 注释
(`# 运行测试`)当成 markdown 标题 —— 一个 skill 里多几行 bash 注释就能
凭空造出「结构漂移」。

用正确口径(排除围栏)重算 14 个 skill,3 条告警里 2 条是假阳性:
- executing-plans            9/16 WARN -> 9/11  pass
- finishing-a-development-branch 21/31 WARN -> 14/17 pass
- using-git-worktrees        21/28 WARN -> 14/21 WARN(真漂移,保留)

这点很要紧:#19 里引用的上游欠账数字此前是被虚高的。

改为 awk 逐行跟踪围栏状态。双向验证:给 brainstorming 加 5 个真标题会触发
告警(7 vs 13),加 5 行围栏内 shell 注释不触发。

回归:audit.sh 152 pass / 1 warn / 0 fail(原 150 pass / 3 warn)
      verify-release.sh 82 pass / 0 fail
2026-08-07 23:10:24 +08:00
AI不止语
eadc83b64b chore(release): v1.7.4 —— SDD 同步上游 v6.2.0(附行为 eval 证据)
版本号:7 份声明文件 1.7.3 -> 1.7.4(只动 "version" 行,已 diff 确认)。
包内文件 106 -> 107(新增 re-review-prompt.md)。

内容见 RELEASE-NOTES.zh.md v1.7.4 条目。

按 CLAUDE.md「改 skill 需要 eval 证据」的要求,本次补了两层行为验证 ——
结构性核对不足以证明译文真的传达了新规则:

1) 新机制 7 个场景 eval:7/7 正确
   考察第 2 轮该唤回还是换新、第 4 轮模型档位、第 5 轮能否再开一轮、
   承重发现该搁置还是停下、Minor 走哪条路、遇到别的计划的账本怎么办、
   控制者能否自己修。连「运行环境无法唤回时才改派全新实现者」都答出。

2) 集成 eval:用 tests/subagent-driven-dev/go-fractals 脚手架跑真实
   执行的准备阶段,验证 agent 是否按新签名调脚本(旧习惯可能省掉 PLAN_FILE)
   - 实际调用 sdd-workspace plan.md,带上了 PLAN_FILE
   - 同时检查了 plan 作用域账本和旧扁平路径的游离账本
   - 账本第一行为正确的身份行;工作区落在 .superpowers/sdd/plan/
   - 起飞前冲突扫描产出 5 条打包成一次的提问,而非逐条打断
   - 建 10 条待办并按指令在分派实现者前停下

回归:audit.sh 150 pass / 0 fail、verify-release.sh 82 pass / 0 fail
dry-run:1.7.4 / 107 文件 / 464.0 kB
v1.7.4
2026-08-07 22:36:38 +08:00
AI不止语
0ab24dee8e feat(sdd): 同步上游 v6.2.0 —— plan 作用域工作区 + 基于唤回的修复循环(#19 A 块)
对齐上游 v6.1.1 -> v6.2.0 中 subagent-driven-development 的 6 个 commit
(6df8ba1 / b8a2d84 / 2dbbaed / 87e4050 / ebdd4ec / 28882fc)。

这是 #19 拆分后的 A 块。注意 v1.7.1 刚对齐过 SDD,本次是那之后的新增量。

## 为什么必须整块一起改

我们的 SKILL.md 里写的是旧脚本签名(review-package BASE HEAD)。脚本换成
plan 作用域签名后若不同步改文档,agent 会照旧签名调用直接吃 usage 错误 ——
比不同步更糟。所以脚本 + 文档 + 模板同批落地。

## plan 作用域工作区(结构性修复)

原先所有计划共用 .superpowers/sdd/ 一个目录,一份过期账本被误读成当前进度,
会让控制者跳过整段任务序列 —— 上游称这是观察到的最昂贵失败。现在每个计划
一个 .superpowers/sdd/<计划文件名>/,从结构上消除这种误读。

- scripts/sdd-workspace 改为接收 PLAN_FILE,自忽略 .gitignore 上移到
  .superpowers/sdd/;scripts/review-package 前置 PLAN_FILE 参数
- 两个脚本在我们这边与上游 v6.1.1 字节一致(从未汉化),直接取上游版
- scripts/task-brief 只手工应用上游那两处改动,保留我们的 fork 适配
  (awk 同时匹配 "Task N" 与 "任务 N",因为本仓库 writing-plans 产出中文标题)
- 账本新增身份行 `# SDD ledger — plan: <路径>`,并明确「第一行点名别的计划、
  或旧扁平路径下的游离账本」都不是你的进度

实测(临时 git 仓库):两个计划各得独立目录;往 A 计划写 ledger 后 B 计划
目录仍为空(关键回归);.gitignore 落在 .superpowers/sdd/ 且 git status 干净;
中文「任务 2」经新路径抽取成功;review-package 旧签名正确报 usage 错误。

## SKILL.md 全面重写(14 章 -> 生命周期结构)

上游把平铺的 14 节重组为「任务循环」五步 + 熔断机制,Red Flags / Advantages /
Integration / File Handoffs / Durable Progress 等并入使用现场。逐节重译:

- 修复循环:一轮 = 一次修复分派 + 一次定向复审,每任务上限五轮
  第 1-3 轮唤回原实现者(context 完整),第 4-5 轮换全新实现者 + 高一档模型
- 熔断:第 5 轮仍有未解决发现则停止分派,逐条裁定 —— 搁置(附裁定)或在
  承重项上 BLOCKED。只在上限处裁定,提早裁定等于换名字的预先定性
- Minor 发现与「计划要求的」发现两条路在循环外
- 新增「常见的合理化借口」表取代原「红线」清单

新增 re-review-prompt.md(106 行全文翻译):定向复审只核实发现是否解决 +
只看修复 diff 的新破坏,范围外观察进账本不延长循环。

implementer-prompt.md「审查发现之后」改写为基于唤回的修复轮次;
task-reviewer-prompt.md 更新脚本签名并删除被 re-review-prompt.md 取代的结尾两句。

## 顺手修掉一个既有缺陷

三个 SDD 文件末尾都残留着 `</content>` —— v1.7.1 那次重写(PR #108, d7885ca)
留下的生成产物,上游没有。这些文件会整体进 agent 的 prompt,属于污染。已全部清除,
并全仓扫描确认无同类残留。

## 验证

- 章节结构与上游 14 节一一对应;superpowers: 引用集与上游完全一致
- 26 项关键技术记号(脚本签名、账本行格式、四种状态、ADDRESSED/NOT ADDRESSED、
  数值门槛)逐一确认存在,无漏译
- 两个 dot 图节点/边数与上游精确一致(6/6 与 23/28),且无幽灵节点、无孤立节点
  (手工翻译 dot 标签最易在边里写错,会静默产生幽灵节点)
- audit.sh 150 pass / 0 fail;verify-release.sh 82 pass / 0 fail
- SDD 已从 audit 的上游漂移警告里消失(结构层级现已对齐)

注:audit PASS 由 153 降至 150,是上游有意删除 Integration 一节
(原列 executing-plans / test-driven-development / writing-plans 三个引用)
导致 Category 4b 少 3 项引用检查,非静默跳过 —— 已核对我们的引用集与上游一致。
2026-08-07 22:29:04 +08:00
AI不止语
78457e5bc3 chore(release): v1.7.3 —— 上游纯代码修复同步 + 工具计数一致性检查
版本号:7 份声明文件 1.7.2 -> 1.7.3(只动 "version" 行,未重排 JSON,已 diff 确认)。

内容见 RELEASE-NOTES.zh.md v1.7.3 条目:
- 同步上游 Windows SessionStart hook 分发修复与 find-polluter.sh 三处路径 bug
- audit 新增 Category 5 工具计数一致性检查(+24 项,已验证会拦漂移)
- 修 bash 3.2 下 CJK 报错信息乱码(3 处)
- .gitignore 补新工具安装产物;官网计数 20 -> 22
- 简繁 README 亮点更新至 v1.7.3,补上 Windows 修复一条

发版前门禁
- scripts/audit.sh: 153 pass / 0 fail(3 warn 为上游漂移,见 #19)
- scripts/verify-release.sh: 82 pass / 0 fail
- npm publish --dry-run: 1.7.3 / 106 文件 / 457.6 kB
v1.7.3
2026-08-07 21:59:56 +08:00
AI不止语
073a743ce7 fix: 同步上游两处纯代码修复(Windows hook 分发 + find-polluter 路径匹配)
对齐上游 v6.1.1 -> v6.2.0 时挑出的两处「无需翻译、无需 eval」的修复。
两个文件在我们这边都与上游 v6.1.1 字节一致(从未汉化改动),所以可直接取上游版。

1) hooks/hooks.json 加 "shell": "bash"(上游 5151e7a)

SessionStart hook 在 Windows 上原先不经 Git Bash 分发。我们的 hooks.json 与上游
除这一行外完全相同。这条直接改善 Windows 用户的 bootstrap 可靠性 —— 而 bootstrap
不加载 skill 就是死重。

冒烟测试:CLAUDE_PLUGIN_ROOT 指向仓库跑 run-hook.cmd session-start,
退出码 0,输出正确的 SessionStart JSON(含中文 using-superpowers 正文)。

2) skills/systematic-debugging/find-polluter.sh 取上游修复版(上游 6015d37、c8921b5)

修三个真 bug,已逐个实测新旧版对比:
- pattern 带 ./ 前缀时匹配不到(find . 输出 ./ 前缀路径):旧 1 个 -> 新 2 个
- -path 的 **/ 无法匹配零层目录,src/**/*.test.ts 漏掉 src/top.test.ts:
  旧 1 个 -> 新 2 个
- 完全无匹配时计数为 1 而非 0(echo 空串仍算一行):旧 1 -> 新 0

验证:audit.sh 153 pass / 0 fail、verify-release.sh 82 pass / 0 fail。

注:audit 的上游漂移 warn 从 2 条变 3 条(新增 using-git-worktrees),
且 executing-plans / finishing-a-development-branch 的上游 H 值有变化 ——
这是本次 git fetch upstream 把对比基准从旧快照更新到 v6.2.0 导致的,
不是本提交的改动引起。三个 SKILL.md 本提交都没碰。漂移详情见 #19。
2026-08-07 21:58:12 +08:00
AI不止语
1321cc65fb test(audit): 新增工具计数一致性检查;修 bash 3.2 下 CJK 报错信息乱码
审核 v1.7.2 时发现三个问题,一并修掉。

1) 工具计数散落十几处,没有任何检查兜着(audit 新增 Category 5,+24 项)

加一款工具要同步简繁 README(各 6 处)、package.json、CLAUDE.md、
site/build.mjs(三语言 15 处)、3 份 plugin manifest —— 这次全靠人工 grep 才
没漏。现在改为从 installer 的 TARGETS 推导期望值并逐处断言。

口径写进注释:TARGETS 是「安装目标」共 21 个;Copilot CLI 与 CC 共用
.claude/skills(别名 copilot 映射过去)不占独立条目,但文案里作为独立产品
单独计数,所以「文案数 = TARGETS 数 + 1 = 22」。

除逐处计数外还加了两条结构性断言:
- README 工具表的实际表格行数必须等于宣称数(防漏加/多加行)
- Category 2 实际回归测试的工具数必须等于宣称数(宣称了就必须测)

已验证这个检查真的会拦:把标题改成 23 款、删掉一行工具表,两种漂移都被抓到。

2) bash 3.2 下 CJK 报错信息乱码(真 bug,只在检查失败时才暴露)

macOS 自带 bash 3.2.57 解析标识符时不识别多字节字符,`$file「` 会把「的首字节
(0xE3) 吞进变量名,导致变量展开为空且字符被截断 —— 报错信息变成
「计数不一致: ����= ��应为 22」。写检查的人看不到,因为只有失败时才打印。

复现:bash -c 'f=README.md; echo "文件: $f「标签」结束"' -> 文件: ��标签」结束

修法是给紧跟 CJK 标点的变量加花括号。全仓扫描 `$var` 紧跟非 ASCII 字节的模式,
命中 3 处:audit.sh 2 处(本次新增)、verify-release.sh 1 处(上个提交带进来的,
因为检测项一直全通过所以从没暴露)。修后报错信息可读:
  计数不一致: README.md「工具表标题」= 23,应为 22
  检测 .clinerules/ -> 得到「Cline」,期望「错误期望值」

3) .gitignore 漏了新工具的安装产物

.trae/、.qoder/ 等都在忽略列表里,但 .cline/、.clinerules/、.kilocode/ 没加 ——
在本仓库内跑安装器自测会留一堆未跟踪文件。已补上并验证 git status 干净。

验证:audit.sh 154 pass / 0 fail(原 130,+24 为 Category 5)
      verify-release.sh 82 pass / 0 fail
2026-08-07 21:54:48 +08:00
AI不止语
c6b741447b docs(site): 官网工具计数 20 -> 22,FAQ 补上 Cline 与 Kilo Code
v1.7.2 加了两款工具,但官网文案还在说 20 款 —— 已发版而站点没跟,
访客看到的数字和 README / npm 不一致。

site/build.mjs 三个语言块(zh / en / zh-Hant)各 5 处,共 15 处:
- meta description、toolsTitle、能力卡标题与描述
- FAQ「支持哪些 AI 编程工具」的枚举列表补入 Cline、Kilo Code
- FAQ「独特价值」里的适配数量

构建校验:63 页正常生成,三语言首页各 7 处新计数、0 处旧计数残留,
Cline / Kilo Code 均出现在枚举里;404.html 未受影响。

site/dist/ 是 gitignore 的构建产物,本提交只改源文件,
上线需另跑 npm run site:deploy。
2026-08-07 21:43:14 +08:00
AI不止语
da6c6b082d chore(release): v1.7.2 —— Cline / Kilo Code 适配 + 检测落空建议 + marketplace 文档
版本号:7 份声明文件全部 1.7.1 -> 1.7.2(按 .version-bump.json 逐一核对一致)。
注:本机没装 jq,scripts/bump-version.sh 跑不了,改用等价的逐字面量替换,
只动 "version" 那一行,未重排任何 JSON(已 diff 确认)。

新增 scripts/verify-release.sh —— 发版前深度验证,82 项断言。
补 audit.sh 的盲区:audit 只看 installer 退出码,装完有没有东西落盘、卸载有没有
留垃圾它都不查。本脚本断言实际结果:
  A. 22 款工具:装 -> 断言 20 个 skill 落盘 -> 二次装幂等 -> 卸载零残留 + 无嵌套
  B. 19 个检测标记逐一验证只触发预期工具(防新增工具误触发既有工具)
  C. --global 7 款成功 / 14 款明确拒绝且退出码 1
  D. --global 拒绝信息引用的 8 份 docs 真实存在(防死链)
  E. rules 型工具索引断言:表 20 行、无空 description、Cline 无 frontmatter
  F. PATH 探测在 PATH 为空 / 畸形 / 未定义三种退化情形下的健壮性

文档
- RELEASE-NOTES.zh.md 加 v1.7.2 条目,含设计取舍与完整验证清单
- 简繁 README 更新亮点:v1.7.0 -> v1.7.2(1.7.1 时漏更新,一并修正)
- marketplace 示例里的 "Version: 1.7.1" 改为「<当前版本>」—— 写死版本号每次
  发版都会过期

发版前验证结果
- scripts/audit.sh: 130 pass / 0 fail(2 warn 为既有上游漂移,见 #19)
- scripts/verify-release.sh: 82 pass / 0 fail
- npm 包端到端:npm pack -> 包内 version 1.7.2 -> 从 tarball 安装 ->
  用打包后的二进制真实跑 Kilo Code 自动检测 -> 20 skills + 索引生成 ->
  卸载零残留
- engines >=20 与实际语法一致(仅用到 padEnd/ES2017,无 ?? 与 ?.)
- 包体 444K / 106 文件,docs/README.cline.md 与 README.kilocode.md 均已入包
v1.7.2
2026-08-07 20:00:51 +08:00
AI不止语
6cb1cd89bc feat(installer): 新增 Cline 与 Kilo Code 适配(22 款工具,#112、#88)
两款都是 VS Code 扩展,加载的是「rules」而非懒加载的 skills —— rules 会
并入每一轮 system prompt。所以照搬「把 20 个 SKILL.md 复制进规则目录」会
让每轮对话背着几万字常驻开销(Cline 官方也提示规则超约 300 行后遵守度下降)。

改用仓库既有的 Trae 模式:规则目录里只放一份小索引(核心规则 + 20 个 skill
的名称/触发条件表),skills 本体放各自的 skills/ 目录由 agent 按需读取。

Cline(#112)
- skills -> .cline/skills/,索引 -> .clinerules/superpowers-zh.md
- 不写 YAML frontmatter:Cline 目前只支持 paths 一个条件字段,
  无 frontmatter 即始终生效,正是所需
- 索引保持在 .clinerules/ 根层单文件 —— 子目录是否递归扫描官方未说明

Kilo Code(#88)
- skills -> .kilocode/skills/,索引 -> .kilocode/rules/superpowers-zh.md
- 走 .kilocode/rules/ 而非 v7 推荐的 .kilo/rules/ + kilo.jsonc:后者需要把
  路径登记进用户的 kilo.jsonc,那是带注释的 JSONC,安装器安全合并容易改坏
  用户配置。官方明确 .kilocode/rules/ 向后兼容且零配置生效,故选它。
  docs 里写了想迁到 v7 方式该改哪一行,以及万一没生效怎么反馈。

接入点(全部为新增,未改动任何既有工具的条目)
- TARGETS 加 2 条,检测标记 .clinerules / [.kilocode,.kilo,kilo.jsonc] 均唯一
- installForTarget 分发、TOOL_ALIASES(cline/kilocode/kilo/kilo-code)
- BOOTSTRAP_DELETE 加两份索引路径,--uninstall 能清干净
- --global 明确拒绝并指向 docs:Cline 全局 rules 路径随 OS 变
  (~/Documents/Cline/Rules,Linux/WSL 还有 ~/Cline/Rules 回退),
  Kilo 全局需改 kilo.jsonc,都不是通用 --global 能可靠命中的
- audit.sh TOOLS 数组加 cline kilocode,纳入 install/幂等/卸载回归
- 新增 docs/README.cline.md、docs/README.kilocode.md
- 计数 20 -> 22:简繁 README、package.json、CLAUDE.md、3 份 plugin manifest
  (RELEASE-NOTES 里的历史计数是过往版本记录,不动)

实测
- 两款均通过 装 / 二次装幂等 / 卸载无残留
- 检测隔离:.clinerules 只触发 Cline、.kilocode|.kilo|kilo.jsonc 只触发
  Kilo Code;.claude/.cursor/.trae/.qoder/.codebuddy 检测结果与改动前一致;
  .claude + .clinerules 共存时两款并行安装正常
- audit.sh: 130 pass / 0 fail(2 项 warn 为既有上游漂移,见 #19)

路径依据:docs.cline.bot/customization/cline-rules、kilo.ai/docs/customize/custom-rules

两款合并为一个提交:共用同一套「rules 型工具」机制与同一批计数改动,
拆开会产生 21 款的中间状态,audit 无法在中间提交上自洽通过。
2026-08-07 17:38:37 +08:00
AI不止语
23fc645402 fix(installer): 修正复制失败提示里的失效锚点
上一个提交给 README 插入「方式二:Plugin Marketplace」后,手动安装一节
顺延为方式三,installer 报错文案里硬编码的 #方式二手动安装 锚点失效。

改为指向父级 #快速开始 —— 章节编号以后还会变,锚点不该依赖它。
2026-08-07 17:34:21 +08:00
AI不止语
c2e8f6a67e docs(readme): 补充 plugin marketplace 安装方式 (#39)
.claude-plugin/marketplace.json 从 v1.7.x 起就存在且可用,但 README 从未
写过怎么用,用户无从得知 —— issue #39 请求的能力其实已经实现,只是没告知。

简/繁 README 新增「方式二:Plugin Marketplace」,原手动安装与配置文件
引用顺延为方式三 / 方式四。

已实测验证(用隔离的 CLAUDE_CONFIG_DIR,未污染本机配置):
- plugin validate                              → Validation passed
- marketplace add jnMetaCode/superpowers-zh    → 成功(GitHub 直连克隆)
- plugin install superpowers-zh@superpowers-zh → 成功,list 显示 v1.7.1 enabled
- 安装缓存内含全部 20 个 SKILL.md

文档同时说明取舍:marketplace 只服务一款 harness,其余 19 款工具仍需
npx 方式;两者可共存但同一项目内别重复装,否则 skills 会有两份。
2026-08-07 17:25:27 +08:00
AI不止语
08c5290ce6 feat(installer): 检测落空时扫 PATH,给出针对性的 --tool 命令 (#48)
用户装了 opencode/codex 但项目里没留下标记目录(没在该项目跑过、或配置
在别处),只报「未检测到任何已知 AI 编程工具」很让人懵 —— issue #48 报告
人 opencode 1.17.3 就是这种情况。

改为:检测落空时扫 PATH 找已安装的 CLI,直接打印可复制的 --tool 命令。

- 新增 CLI_PROBES(仅 CLI;IDE 装在应用目录里,PATH 上探不到)
- isOnPath() 只查文件是否存在,不 spawn 进程 —— 不在用户机器上执行
  探测命令;Windows 下遍历 PATHEXT
- --global 模式只建议 GLOBAL_TARGETS 内的工具,避免推荐装不了的
- 探到具体工具就不再列通用示例,别让用户在无关工具名里自己挑

仍然只提示、不自动安装 —— 自动装错工具正是 issue #33 修掉的问题:
PATH 上装了不代表这个项目要用它。

audit.sh: 126 pass / 0 fail(2 项 warn 为既有的上游漂移,见 #19)
2026-08-07 17:25:15 +08:00
AI不止语
402f7a3446 docs(copilot): 补 Windows powershell 工具面,修正 bash 唯一假设 (#93)
copilot-tools.md 原先只记了 bash + async:true + read_bash/stop_bash/
write_bash/list_bash 一套,并把上游的 Bash 工具名直接映射到 bash。
但 Windows 上实测(Copilot CLI 1.0.69-1 / Node v24.17.0)注册的是
powershell + detach 一套,完全没有 bash/async 家族 —— agent 照着不存在
的工具名调用会找不到工具然后即兴发挥。

- 异步 Shell 会话拆成 Unix/macOS(bash)与 Windows(powershell)两张表,
  并明确「两套不会同时出现,动手前先确认本 build 注册的是哪套」
- 标注 powershell 一套没有 write_* 等价物(无法向会话发送输入)
- 新增「Windows 上的两个坑」:.sh 需显式走 Git Bash;stop_powershell
  停不掉 detach:true 的进程,需按真实 Windows PID(非 MSYS PID)Stop-Process
- Bash 映射行补平台提示,指向该节

证据与环境均来自 issue #93 报告人的实测。
2026-08-07 17:25:04 +08:00
AI不止语
687a330dc7 docs(readme): Cubence 福利行补上注册链接,与其他赞助位保持一致
原文案只给了优惠码 AGENCY,没有可点击的注册入口。
现改为「通过此链接注册的用户,首次购买即可享受 9 折优惠」,
与优云智算的 🎁 福利行结构一致。
2026-08-07 16:00:05 +08:00
AI不止语
66fe0c5f31 docs(readme): 新增赞助商 Cubence,赞助位统一为 25%/75% 标准版式
- 新增 assets/sponsors/cubence.jpg(800px 宽,与 compshare.jpg 规格一致)
- 简/繁 README 赞助位从固定 400px 单元格改为 25%/75% 百分比表格,
  logo 用 width="100%" 自适应,文案统一为 Markdown 链接 + 🎁 福利加粗行
- Cubence 邀请链接:https://cubence.com/signup?code=SCW29JP9
2026-08-07 15:54:40 +08:00
AI不止语
c383440329 feat(site): 新增 404 页,返回真正的 HTTP 404 并 noindex
Cloudflare Pages 在根目录存在 404.html 时会对未匹配路径返回真正的
HTTP 404,避免默认把首页当 SPA 兜底返回 200 导致 Google 把大量不存在
的 URL 判为首页重复页/软 404。页面加 noindex 防止自身被收录,导航用
绝对路径以适配任意深度的未命中路径。
2026-07-31 16:12:07 +08:00
AI不止语
a1bb3e6aba docs(readme): 赞助商注册链接 ytag 更新为 superpowers-zh
优云智算注册链接的追踪参数 ytag 从 GPU_YY_YX_git_agency-agents
改为 GPU_YY_YX_git_superpowers-zh,referral_code 及其余不变。
简繁两版 README 同步更新。
2026-07-31 15:52:00 +08:00
AI不止语
12a4dc1f9a README(繁體):新增免費配套課程導流(連結繁體站雙課) 2026-07-23 19:40:40 +08:00
AI不止语
355a9ebe33 README:配套课程导流升级为双课并附6语言站入口;收敛「永久免费」表述 (#110) 2026-07-23 15:03:31 +08:00
AI不止语
c9d1539412 chore(release): v1.7.1 —— subagent-driven-development 对齐上游 v6 重写
npm 1.7.0 发布在 SDD v6 合并(#108)之前,tarball 不含新内容,故 bump patch 发版:
- 双审查者合并为 task-reviewer-prompt.md、新增 scripts/(review-package/sdd-workspace/task-brief)
- SKILL/implementer 补 v6 契约、删 v5 双 reviewer
- 7 个清单版本同步至 1.7.1

关联 #89 #19
v1.7.1
2026-07-17 21:15:10 +08:00
AI不止语
d7885ca062 feat(sdd): 同步上游 v6 子智能体驱动开发重写(合并审查者 + scripts/) (#108)
对齐 obra/superpowers v6.0.0+(当前 v6.1.1)对 subagent-driven-development 的重写:

- 双审查者(规格 + 代码质量)合并为单个 task-reviewer-prompt.md,一次读 diff 出两个结论
- 新增 scripts/:review-package(生成审查包)、sdd-workspace(工作树临时区)、task-brief(抽取单任务简报)
- SKILL.md 补齐 v6 新增章节:起飞前计划审查、处理审查者 ⚠️ 事项、构造审查者提示词、文件交接、持久化进度(ledger)
- implementer-prompt.md 改为简报文件 + 报告文件契约、model 必填、TDD RED/GREEN 证据
- 删除 v5 遗留的 spec-reviewer-prompt.md / code-quality-reviewer-prompt.md

中文 fork 适配:task-brief 的 awk 同时匹配英文 "Task N" 与中文 "任务 N" 标题,
使 writing-plans 产出的中文计划也能抽取任务。review-package / sdd-workspace 与上游逐字节一致。

关联 #89 #19
2026-07-17 21:04:07 +08:00
AI不止语
9abe32c1d7 docs(readme): 更新优云智算赞助文案至最终版 (#106)
- 补上赞助商最终文案中的「支持 GLM-5.2」卖点(#105 因暂存区失误合入的是上一版文案)
- 按原文断句改回短句,体验金一句用 <br><br> 单独成段
- 简繁两版同步
2026-07-15 19:39:15 +08:00
AI不止语
7126feff5e docs(readme): 新增赞助商 — 优云智算(UCloud) (#105)
- README.md / README.zh-Hant.md 恢复「❤️ 赞助商」版块(沿用 a65c3ed 的双列表格格式),首位赞助商优云智算
- banner 取自赞助商物料,压至 800×368 / 75KB(原图 1919×884 / 1.2MB),README 显示宽度 380px
- 原顶部「想赞助支持本项目」单行 callout 并入版块标题,避免同屏重复
2026-07-15 19:37:10 +08:00
AI不止语
970a4373b9 feat(site): 扫码关注区新增 X/Twitter 二维码 (#104)
- 官网页脚「扫码关注」由微信 + 抖音两张码扩为三张,新增 X/Twitter 二维码(扫码/点击直达 x.com/jnMetaCode)
- 三语(简/繁/EN)同步 qrX 文案;二维码卡与 figcaption 可点击
- 新增静态资源 qr-x.png(build 时拷入 dist/assets)
- qr-card 链接样式:继承色、hover 下划线,避免默认蓝色
2026-07-14 15:45:53 +08:00
AI不止语
26d581aa50 docs(readme): 顶部加 v1.7.0 更新亮点 + 工具表补齐至 20 款 (#103)
- README.md / README.zh-Hant.md 顶部新增「v1.7.0 更新亮点」callout(全局安装 / CodeBuddy+CodeArts / 繁体三语),链到 RELEASE-NOTES.zh.md
- 项目规模表的支持工具列表补上 CodeBuddy(腾讯)/ CodeArts(华为云码道),与标题「20 款」及 v1.7.0 一致
2026-07-14 15:38:49 +08:00
AI不止语
84026e5766 docs: 补全 v1.7.0 release note(CodeBuddy/CodeArts/繁体/赞助下架) (#102) v1.7.0 2026-07-14 05:30:47 +08:00
AI不止语
fe254ec35f docs: README 多语言支持 + 繁体(README.zh-Hant.md) (#101)
顶部加语言切换栏(简体中文 | 繁體中文 | English 上游),
新增完整繁体 README(353 行、与简体版对齐),台港自然术语
(程式碼/專案/除錯/計畫/全域/檔案/伺服器/相容 等)。

日文不纳入本仓库(仓库定位为「中文增强版」,chinese-* skill 与
中文 skill 正文对日本用户无意义;日文应作独立 superpowers-ja)。

维护说明:简体 README 改动时需同步繁体版。
2026-07-13 22:43:30 +08:00
AI不止语
6ba77fa64e feat(site): 多语言架构 + 繁体(zh-Hant)站点 (#100)
把站点从写死 zh/en 重构为语言列表 LANGS 驱动,新增语言只需加一项
+ 写一个 T.<code> 对象即可 drop-in。首个新增语言:繁体中文。

- LANGS 配置化:首页生成、skill 详情页、语言切换器、hreflang、
  sitemap 全部按 LANGS 循环
- 语言切换器从二选一(中文↔EN)改为多语言链接
- render 分支由 `=== 'zh'` 改为 `=== 'en'`,非英文语言默认走中文内容
  (繁体 skill 卡片/正文用中文,仅外壳翻译,与 en 站策略一致)
- T.zht:手写繁体(台港自然用词:軟體/程式碼/專案/預設/除錯/計畫/
  全域/使用者/檔案 等;处理 發/後/裡/雲/麵 等一简对多繁),不引入
  OpenCC 依赖
- 收尾日志按语言数动态输出

日文暂缓:公开营销文案需母语审校,避免机翻上线砸品牌。

测试:构建 63 页(3 语言 × (首页+20 skill));en/zh 站零回归;
繁体 htmlLang=zh-Hant、skill 卡片用中文标题、语言切换/hreflang/
sitemap 三语言齐全。
2026-07-13 22:33:08 +08:00
AI不止语
01319b5b02 feat: 新增华为云码道 CodeArts 支持(skills-only,关 #20) (#99)
华为云 CodeArts Doer 的 skills 目录为 .codeartsdoer/skills/(用户在 #20 确认)。
本次做 skills-only 适配:检测 .codeartsdoer/ 或 --tool codearts 安装,
靠 CodeArts 自身 skill 发现加载。其 bootstrap/指令文件约定未证实,
故不生成 bootstrap(docs 已说明,若不自动触发可手动点名 skill)。

- bin: TARGET(.codeartsdoer/skills,检测 .codeartsdoer)+ 别名
  (codearts/codeartsdoer/huawei)
- 工具数 19 → 20:README/站点/package/FAQ/stats 同步
- docs/README.codearts.md(含自动触发的诚实说明 + 求证请求)
- audit TOOLS 加 codearts

测试:audit 124 PASS/0 FAIL(含 codearts 装/幂等/卸载)、全局套件 50/50
回归、站点重建工具数 20。
2026-07-13 21:56:11 +08:00
AI不止语
cd651cd1c6 feat: 新增 CodeBuddy(腾讯 AI IDE)工具支持(关 #18 #75) (#98)
CodeBuddy 加载机制类似同类 IDE:项目根 CODEBUDDY.md 作 bootstrap,
skills 放 .codebuddy/skills/。仅项目级(用户级加载路径未证实,暂不做全局)。

- bin: 加 TARGET(检测 .codebuddy / CODEBUDDY.md)+ 别名(codebuddy/-cn/-code)
  + CODEBUDDY.md bootstrap 生成 + 卸载哨兵清理
- 工具数 18 → 19:README/站点/package.json/FAQ/stats 全量同步
- docs/README.codebuddy.md 中文使用文档;audit TOOLS 加 codebuddy
- 站点 FAQ 与工具列表补 CodeBuddy

测试:audit 122 PASS/0 FAIL(含 codebuddy 装/幂等/卸载)、全局套件 50/50
回归无破、站点重建 42 页工具数 19。
2026-07-13 21:43:56 +08:00
AI不止语
5d423a1aec docs(site): 部署文档域名更新为当前线上 sp.aiolaola.com
site/README.md 仍建议旧域名 superpowers.aibuzhiyu.com,
实际线上与 SITE_URL/sitemap/canonical 均已是 sp.aiolaola.com,统一。
2026-07-13 20:36:59 +08:00
AI不止语
9a50f0ae9d chore: 下架赞助商展示,仅保留赞助联系方式
移除 README 与官网的赞助商板块(含 5Cookie Code 展示卡、logo、
中英文案、.sponsor 样式、资源复制与图片文件)。按需求仅在 README
保留一行赞助联系方式(jnMetaCode@qq.com),官网 footer 联系邮箱不变。

站点重建 42 页正常、dist 零赞助残留、无悬空引用与破图。
2026-07-13 20:36:59 +08:00
AI不止语
b9c6ca7c89 feat: 支持全局安装 --global(关 #21)
多项目用户此前需逐个项目 npx 安装。新增 --global:一次装到工具的
用户级目录(如 ~/.claude/skills),所有项目共享,更新只需重装一次。
项目级(默认)优先、全局兜底,二者可共存。

- 支持全局的 7 款工具,均逐一核对各工具 docs 声明的真实加载路径,
  不臆造无效路径;其余工具明确报错并引导项目级安装
- Codex 全局装到 ~/.agents/skills(docs 确认其启动扫描该目录,
  而非 ~/.codex/skills)
- Gemini / Antigravity 有意不纳入通用 --global(各有专属全局方式),
  报错指向对应 docs,避免「装了不生效」的假功能
- 对称的 --global --uninstall,按哨兵精确清理,保全用户既有内容
- home 护栏:项目级仍拒绝在 ~ 裸装并引导 --global,全局模式跳过
- 版本 1.6.1 → 1.7.0,同步 6 个 plugin manifest
- 顺带修 package.json description 残留的 159k+ → 250k+

隔离自动化测试 50/50 通过:项目级回归、7 款全局工具装卸、数据保全
(含全局 CLAUDE.md 保留用户个人指令)、幂等性、非全局工具拒绝并
指向 docs、自动检测、home 护栏、参数健壮性。
2026-07-13 20:36:59 +08:00
AI不止语
cc2afbaf1b chore: 刷新上游 star 数 233k→250k(站点 + README)
obra/superpowers 已达 252k+,站点与 README 原写 233k+ 偏低。
统一改为 250k+(取整、随增长仍成立),site/dist 由 CI 部署时重建。
2026-07-13 20:36:59 +08:00
AI不止语
c3fe5ba31c chore: 同步上游 v6.1.0/v6.1.1(bootstrap 精简 + Codex 插件清单修复)(#94) 2026-07-13 20:30:53 +08:00
AI不止语
b72378bb1d Merge pull request #81 from jnMetaCode/feat/nav-tools-learn
feat(site): 导航补「支持工具」+「学习」入口
2026-06-23 23:29:43 +08:00
AI不止语
960bf78e68 feat(site): 顶部导航补「支持工具」+「学习」入口
- 支持工具(#tools):i18n 和区块本就有、但漏在导航里,补上
- 学习 ↗:链到 aiOlaOla 学习平台(带 utm_source=sp1 来源追踪)
导航:特性/安装/Skills/支持工具/FAQ/学习/GitHub/语言/主题
2026-06-23 23:29:30 +08:00
AI不止语
89f41829b2 Merge pull request #80 from jnMetaCode/fix/html-no-store
fix(site): HTML no-store 防边缘缓存
2026-06-23 04:52:31 +08:00
AI不止语
adcf60f4a5 fix(site): HTML 用 Cache-Control no-store,尝试绕过 zone Browser Cache TTL 覆盖 2026-06-23 04:52:20 +08:00
AI不止语
d9abe7191b Merge pull request #79 from jnMetaCode/fix/cache-clean-urls
fix(site): clean URL HTML 不再被边缘缓存
2026-06-23 04:29:07 +08:00
AI不止语
9bdec5dae7 fix(site): clean URL 的 HTML 不再被边缘缓存(修复看到旧内容)
之前不缓存规则是 /*.html,只匹配 .html 结尾路径;但 Cloudflare 服务的是
clean URL(/、/skills/x、/en/x,不带 .html),这些 HTML 没拿到 no-cache 头
→ 被边缘缓存 → 部署后用户仍看到旧内容(如刚加的 aiOlaOla CTA 不显示)。

改为:/* 默认 max-age=0 must-revalidate(覆盖所有 clean URL HTML);带版本
号的 styles.css/app.js 与 /assets/* 由更具体规则覆盖为长缓存 immutable。
2026-06-23 04:28:56 +08:00
AI不止语
5706d8d473 Merge pull request #78 from jnMetaCode/feat/aiolaola-cta-utm
feat(site): aiOlaOla 学习 CTA + utm_source=sp1 来源标记
2026-06-23 04:25:29 +08:00
AI不止语
18ff571551 feat(site): 加 aiOlaOla 学习平台 CTA + 来源标记 utm_source=sp1
- 首页 CTA 区新增"免费学 AI 编程 · aiOlaOla"主按钮(书改为次按钮)
- 页脚生态区 aiolaola 链接带 utm_source=sp1
- 全部用 apex aiolaola.com(避免 www→apex 308 跳转),UTM 让 aiOlaOla
  的 GA 能识别来自 sp.aiolaola.com 的流量(source=sp1)
2026-06-23 04:25:18 +08:00
AI不止语
5f0d0cec8d Merge pull request #77 from jnMetaCode/feat/baidu-verify
feat(site): 百度站长验证 meta
2026-06-23 03:55:25 +08:00
AI不止语
7ab4e55949 feat(site): 加百度站长验证 meta (codeva-5WLzyP9gcN) 2026-06-23 03:55:15 +08:00