Commit Graph

12 Commits

Author SHA1 Message Date
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不止语
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 均已入包
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不止语
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不止语
af4c03c1e0 feat(kimi): 新增 Kimi Code harness 支持(对齐上游 v6.0.0 集成模型)
issue #37:Kimi Code 已支持 Skills 能力,希望原生支持。上游 obra/superpowers
在 v6.0.0 已用插件清单模型原生集成 Kimi,本提交把同样的集成方式落到本 fork。

Kimi 走插件清单模型(与 CC plugin 同类),直接指向仓库现有 skills/,
不复制 skill、不建 symlink、不装 hook、无运行时依赖,因此无需改 npx
安装器(安装器面向需要复制 skills 的工具)。

- .kimi-plugin/plugin.json:fork 品牌清单,skills 指向 ./skills/,
  sessionStart.skill = using-superpowers(会话开始自动加载 bootstrap),
  skillInstructions 提供 Kimi 工具映射(AskUserQuestion/TodoList/Agent/
  Skill/Read/Write/Edit/Bash/Grep/Glob/FetchURL/WebSearch,保留上游权威
  英文映射以免破坏真实工具名)
- 版本同步:.version-bump.json 与 scripts/sync-plugin-version.js 双向接入
- docs/README.kimi.md:中文安装/工具映射/排错指南;README.md 工具列表加链接
- tests/kimi/:清单结构测试(适配 fork:name=superpowers-zh、校验版本同步条目)

验证:bash tests/kimi/run-tests.sh 通过;manifest 合法 JSON;版本同步双机制
均含 kimi 条目;scripts/audit.sh 静态校验 0 FAIL;README→docs/README.kimi.md
链接可解析。

注:Kimi 实际 skill 自动触发需在 Kimi Code 内验证(与本 fork 其它 harness
同样限制),清单结构已对齐上游 v6.0.0 经过验证的集成方式。
2026-06-20 02:37:31 +08:00
AI不止语
725977b422 feat: 加 Qoder 适配(第 18 款工具)— skills + always_on bootstrap rule
closes #26, closes #34

## 改动

- bin/superpowers-zh.js: TARGETS 加 Qoder (`.qoder/skills`, detect `.qoder`),
  TOOL_ALIASES 加 `qoder`,新增 `generateQoderBootstrap()` 生成
  `.qoder/rules/superpowers-zh.md`(`trigger: always_on` + `alwaysApply: true`)
- scripts/audit.sh: TOOLS 加 qoder,17→18
- 3 个 plugin manifest(.claude-plugin/{plugin,marketplace}.json、.cursor-plugin/plugin.json)
  description 同步到 18 款
- README、CLAUDE.md、package.json 文案对齐 18
- docs/README.qoder.md: 新增完整安装/使用/卸载指南,附 schema 说明

## 设计要点

Qoder Rules 的 frontmatter schema(`trigger: always_on` / `model_decision` /
`manual`)官方 docs.qoder.com/zh/user-guide/rules 未公开,来自 GitHub 上
4 份真实社区样本(python-office、termiClaude、QoderTest、TelegramFileServer)
的交叉验证。

按 Trae 模式生成 always_on bootstrap 而非 Cursor/Windsurf 的"裸 skill"模式,
是为了确保核心规则(先 brainstorming / 先 TDD / 先验证)在每个会话都自动加载,
不依赖模型对 description 文本的隐式匹配。

## 验证

- 端到端:--tool qoder 装、自动检测、二次幂等、卸载(20 skills + 1 bootstrap
  全部清掉,0 残留)
- bootstrap 文件 skill 列表(20)与实际 skills/ 目录数(20)一致
- 全量 audit: 96 PASS / 0 FAIL(18 款工具完整 install + 幂等 + uninstall 跑通)
2026-05-21 00:56:18 +08:00
AI不止语
c5b4fa446b chore: release v1.4.0 — 上游漂移 P0 全量修复 + 防回归基建 (#32)
跟 PR #28 + #30 + #31 一起构成 v1.4.0 的完整内容。本 PR 仅做发布层
(版本号 bump + plugin manifest 同步 + release notes),不动 skill 内容。

版本号 1.3.0 → 1.4.0:
- package.json
- .claude-plugin/plugin.json + marketplace.json
- .cursor-plugin/plugin.json
- .codex-plugin/plugin.json
- gemini-extension.json(之前卡在 1.1.6,本次顺带追上)

工具链小修:
- scripts/sync-plugin-version.js TARGETS 加入 gemini-extension.json
  (之前漏掉,是 gemini-extension.json 长期卡在老版本的根因)
- package.json 的 version 钩子 git add 列表加上 gemini-extension.json

RELEASE-NOTES.zh.md 新增 v1.4.0 段,按"上游同步"性质分组列出 9 项
修复内容,明确标注每项的上游 ref + 本 fork PR 号。

注意:本 PR 应在 #28 + #30 + #31 merge 之后才 merge —— 顺序错了
会导致 release notes 描述的 PR 在 git log 里还没有。

不影响:
- 上游 marketplace 安装路径(仍按主站路径正常工作)
- 现有 npm 用户向后兼容(npx superpowers-zh 仍可用)
2026-05-12 18:14:02 +08:00
AI不止语
98ce004193 chore(ci): 加 audit 脚本 + workflow 自动检测上游漂移 (#31)
防回归基建:把本轮全量质量审计的 4 类检查打包成可重复运行的脚本,
每次 PR 自动跑,发现漂移立刻拦下。

scripts/audit.sh:
1. 静态校验:JSON parse、SKILL.md frontmatter、symlink、hook 可执行性
2. Installer 功能:17 款工具装 / 重装(幂等)/ 卸载全跑一遍
3. 上游对齐:hooks 4 文件 + brainstorm scripts 3 文件 + 14 翻译 skill
   结构层级(H1-H4 标题数)+ code-reviewer.md self-contained 版结构
4. 交叉引用:README → docs/ 链接、skill 间 superpowers:xxx 引用、
   装完后 .claude/skills/using-superpowers/SKILL.md 路径解析

支持 --quick(跳过 installer)和 --no-upstream(跳过对齐)两个开关。

.github/workflows/audit.yml:
- 触发:PR + push to main + 手动 dispatch
- 步骤:checkout(fetch-depth 0)+ setup node 20 + 加 upstream remote
  + fetch upstream main 浅克隆 + 跑 audit.sh
- FAIL > 0 → 整个 workflow 失败,PR 被卡

设计原则:
- 这次"4 个 P0 缺陷漂"事件(hooks-cursor + brainstorm + code-reviewer 引用 +
  code-reviewer.md 整合)如果当时有这个 audit 在 CI 跑,PR 阶段就会被拦下
- 用 H 数对齐而不是行数 diff 来判断结构漂移(避免翻译造成的假阳性)
- WARN(不阻塞)vs FAIL(阻塞)分级:主动扩写算 WARN,
  结构性落后上游算 FAIL

本地烟测:
- main 分支跑:92 PASS / 2 WARN / 8 FAIL(捕获到所有已知漂移)
- chore/sync-upstream-p0-drift(PR #30)跑:97 PASS / 2 WARN / 0 FAIL(PR 修复后全绿)

后续:PR #28 + #30 merge 后,main 上 FAIL 应归零(WARN 只剩 executing-plans
主动扩写一项)。
2026-05-12 18:13:12 +08:00
AI不止语
48c4d0d417 fix(scripts): sync-plugin-version 支持嵌套字段路径 (#23)
补上之前简化版未实现的 plugins.0.version 路径,把
.claude-plugin/marketplace.json 纳入版本同步目标。

修复 marketplace.json 卡在 1.1.8 的老漂移(自 v1.1.8 起没动过):
plugins[0].version 1.1.8 -> 1.2.1(追上其他 4 个 manifest)。

实现:
- TARGETS 改为对象数组 { path, field },对齐上游 .version-bump.json 格式
- field='version' 走顶层 regex(保留原行为)
- field='plugins.0.version' 走嵌套 regex(锚定到 plugins 数组首项)
- 都用 regex 替换而非 JSON.stringify,保持原文件格式(缩进/数组写法等)

测试:
- 升级场景 1.2.1 → 1.3.0:4 个 manifest 全部同步
- 幂等性:版本相同时输出 "already at"
- 边界:marketplace.json 其他字段完全未动(diff 仅 version 一行)
- npm pack:90 文件 228KB 不变
2026-05-10 22:48:09 +08:00
AI不止语
a9e02b501e chore: 跟上游 v5.1.0 对齐 (#22)
补齐上游漏的根级文件:CLAUDE.md(翻译 + 中文 fork 备注)、
AGENTS.md(symlink → CLAUDE.md,跟上游 mode 120000 一致)、
RELEASE-NOTES.md(上游英文原样 1180 行)、RELEASE-NOTES.zh.md
(新建中文 fork 自身 release log)、.codex-plugin/plugin.json
(中文化)、.version-bump.json、scripts/bump-version.sh、
assets/{app-icon.png,superpowers-small.svg}、4 个上游新增测试。

跟上游意图对齐,删上游已废弃流程:
- commands/ 全 3 个 deprecated stub(上游 #1188)
- agents/code-reviewer.md(已上升进 requesting-code-review skill,
  上游 PR #1299)
- bin/superpowers-zh.js 删 install agents 逻辑,保留 uninstall 用
  hardcoded LEGACY_AGENT_FILENAMES 列表清理已装用户残留
- .github/workflows/ci.yml 删 "Validate agents" 段
- package.json files 字段移除 agents/ commands/

主动修上游 v5.1.0 疏忽:
- .cursor-plugin/plugin.json 删 dangling 的 "agents": "./agents/"
  和 "commands": "./commands/"。上游删目录但忘同步 manifest
  (git blame 显示自 2026-02-13 起从未更新)。

配套:
- scripts/sync-plugin-version.js 扩到 .codex-plugin/plugin.json
- npm pack 校验 90 文件 228KB,agents/commands 残留 0 条

中文版"手动新增"叠加层全部保留:bin/ + npx 流程、docs/、
chinese-* skill、mcp-builder、workflow-runner、README 主推 npx、
各 INSTALL.md、.gemini/、sync-plugin-version.js。

详见 RELEASE-NOTES.zh.md v1.3.0 段。
2026-05-10 22:27:52 +08:00
AI不止语
bb9dc4950e chore: plugin manifest 版本号自动跟 package.json 同步
之前 .claude-plugin/plugin.json 和 .cursor-plugin/plugin.json 的 version
字段一直停在 1.1.8,落后于 npm 1.1.9 / 1.2.0 / 1.2.1——每次发版都要手改。

- 新增 scripts/sync-plugin-version.js:用正则替换 version 字段一行,
  保留两个 manifest 的原排版(数组单行/多行、缩进等),无 diff 噪音
- 在 package.json 挂 npm version 钩子:bump 后自动同步并 git add 到
  version commit 里,从此不会再漏
- 把当前两个 manifest 从 1.1.8 一次性修到 1.2.1
2026-05-05 19:32:20 +08:00