3 Commits

Author SHA1 Message Date
AI不止语
43edf34b2c fix(installer): Windsurf 全局装错目录(装了不生效)+ 两个静默失效的检查
## Windsurf --global 一直装在 Windsurf 不读的地方

官方文档(docs.windsurf.com/windsurf/cascade/skills)写明两个路径**不同构**:

    项目级:.windsurf/skills/<skill-name>/
    用户级:~/.codeium/windsurf/skills/<skill-name>/   ← 在 .codeium 下

我们的 --global 装到 ~/.windsurf/skills —— Windsurf 不读那里。又一个 Hermes 同款
「装了完全不生效」。项目级路径是对的,只有全局错。

Cursor 一并核实:cursor.com/docs/skills 确认 .cursor/skills/<name>/SKILL.md
启动时自动发现,无需配置 —— 我们装的是对的。

## 测试为什么没抓到:只验退出码,不验落盘位置

verify-release 的 C 段对全局白名单只断言「退出码为 0」。装到错目录退出码照样是 0。
**「跑通了」不等于「装对了」。** 新增 GLOBAL_DIR 断言:10 款全局工具逐个断言
skill 真的落在官方读的那个目录,外加一条自检(GLOBAL_DIR 必须覆盖 GLOBAL_OK 全部,
以后加全局工具不能漏断言)。

双向验证:把 Windsurf 全局路径改回旧值,立刻报
「--global windsurf: .codeium/windsurf/skills 里是 0 个 skill,期望 20」。

## 两个我自己写出来的静默失效

**① `grep -P` 不可移植。** 新加的「变量后紧跟多字节字符」检查第一版用了 grep -P,
在交互 shell 里(ugrep)看着能用,进了脚本跑的是 /usr/bin/grep(BSD grep,不支持
-P),配上 2>/dev/null 就成了永远匹配不到的死检查 —— 正是我这两天一直在修的那类
bug,自己又造了一个。改用 LC_ALL=C + ERE:C locale 下多字节按单字节处理,>0x7F
的字节落在 [^ -~] 之外,BSD/GNU 都支持。

**② 同一个全角括号坑又踩一次。** `期望 $EXPECT_SKILLS(…)` 里全角括号被吞进变量
名,set -u 下脚本半途崩掉。这已经是本仓第二次(第一次是死链检查的 $code)。所以
把它固化成 audit 1e,注释行排除,双向验证过。

## 一次操作事故(记下来)

用 /tmp 备份做变异测试时,把 verify-release.sh 的未提交改动整段覆盖没了,
git diff 才发现。变异测试应该用 git 保护现场,不该用 /tmp 拷贝。

## 其它

- 外链验活跳过分支补 ok,否则 PASS 总数随网络漂移、发版记录对不上(实测连跑两次
  稳定 111)
- docs/README.windsurf.md 重写:两个路径不同构、渐进式披露(默认只给模型 name +
  description,不造成常驻开销)、跨工具发现(也扫 .agents/skills 与 .claude/skills,
  装过 Antigravity 或 CC 的不必重复装)

audit 168 pass / 0 warn / 0 fail;verify-release 111 pass / 0 fail。
2026-08-12 20:42:21 +08:00
AI不止语
033adc3768 fix(docs): 4 条死链,其中 2 条是编造的仓库地址;新增外链验活门禁
核查 OpenClaw 时发现 docs/README.openclaw.md 链的是
github.com/anthropics/openclaw —— **那个仓库不存在(404)**,真正的是
openclaw/openclaw。顺手全仓扫了一遍外链,45 条里 4 条是死的。

## 修掉的 4 条

| 原链接 | 状态 | 改为 |
|---|---|---|
| github.com/anthropics/openclaw | 404,仓库不存在 | github.com/openclaw/openclaw |
| github.com/anthropics/antigravity | 404,且 Antigravity 是**谷歌**的产品不是 Anthropic 的 | antigravity.google |
| huaweicloud.com/product/codeartsdoer.html | 404,产品页改版 | codearts.huaweicloud.com |
| docs.codeium.com/windsurf | Windsurf 已从 codeium.com 迁走 | docs.windsurf.com/... |

前两条是**编造出来的出处**。这比没有出处更坏:它让人以为核实过了。

## OpenClaw 本身:路径是对的

顺带核实完了。docs.openclaw.ai/tools/skills 确认 `<workspace>/skills` 为最高
优先级、`~/.openclaw/skills` 为全局,自动发现无需配置,与我们装的一致。

## 固化成检查(verify-release H 段)

编造链接不该靠人肉发现。新增外链验活,两遍制:

- 第一遍 xargs -P 10 并行快扫,只产出「嫌疑名单」,**不下结论**
- 第二遍对嫌疑名单串行复核,放宽到 25s 并让 curl 自己重试;两遍都判死才算死

两遍制不是过度设计 —— 第一版单遍串行把整个脚本拖到超时跑挂了;改并行后又实测
到 docs.codeium.com 在 8s 上限下偶发超时、误报成死链。**一个会误报的门禁比没有
门禁更糟:人会学会忽略它。** 连跑 3 次确认稳定,全绿。

无网络时整段跳过,不阻塞离线发版。

顺带修了个 bash 坑:`bad "死链($code): $u"` 里全角括号会被当成变量名的一部分,
报 `code�: unbound variable`。改用 ${code} 花括号界定。

双向验证:塞一条 github.com/anthropics/this-repo-does-not-exist 会被抓出并 FAIL,
移除后恢复全绿。

verify-release 108 -> 109 pass;audit 166 pass / 0 warn / 0 fail。
2026-08-12 19:34:16 +08:00
jiangnan
c2ab9e653b feat: add Windsurf, Gemini CLI, Aider, OpenCode, Qwen Code support — 14 tools total
- Add 5 new tool targets to installer (bin/superpowers-zh.js)
- Gemini CLI detects GEMINI.md to avoid conflict with Antigravity
- Aider detects .aider/ directory for broader compatibility
- Add installation docs for Windsurf, Gemini CLI, Aider, Qwen Code
- Update README with full 14-tool support table and usage guide
- Fix skills count: 20 (14 translated + 6 Chinese-original incl. workflow-runner)
- Fix OpenClaw doc linking to wrong upstream repo
- Align gemini-extension.json name/version with package.json
- Add docs/ to package.json files array for npm installs
- Add install script validation step to CI
2026-03-26 22:33:15 +08:00