mirror of
https://github.com/jnMetaCode/superpowers-zh.git
synced 2026-09-02 22:54:06 +08:00
起因是核对首页:统计块写着「20 支持工具」,同一屏下面的标题写着「一套 skill, 23 款工具通用」,FAQ 里又老老实实枚举了 23 款。三处自己打自己。 根因:文案计数早就跟着 installer 改到了 23,但 `site/build.mjs` 的 `TOOLS` 数组从来没人补 —— audit 只校验文案里的数字,不校验列表本身。 ## 1. 工具列表补 3 款 + 修 4 处错的 `TOOLS` 20 条 -> 23 条(= TARGETS 22 条 + Copilot CLI 单独计数)。 统计块的 `20` 是硬编码的,改成 `TOOLS.length`。 漏的三款(installer 一直支持,官网从没有过):Cline、Kilo Code、Crush。 已有条目里查出的错(逐条实测过命令): | 条目 | 原来 | 现在 | 依据 | |---|---|---|---| | Claw Code | `--tool claw` | 直接 `npx superpowers-zh` | detect 是 `.claw` / `CLAW.md`,实测能自动检出 | | Hermes Agent | `--tool hermes` | `--global --tool hermes` | 官方只自动加载 `~/.hermes/skills/`,项目级要手写 config.yaml,给项目级命令等于给「装了不生效」 | | Qwen Code | 类型 IDE | CLI | 它是 QwenLM/qwen-code 命令行工具,不是通义灵码 | | Antigravity | 类型 CLI | IDE | Google 的 AI IDE,docs/README.antigravity.md 里本来就这么写 | `auto: true/false` 两态不够用了(Hermes 是「能检出但项目级不生效」),换成 `mode: auto / manual / global`,三语各补一条对应说明文案。 ## 2. FAQ 的「支持全局」清单少了 4 款 写着 7 款,installer 实际 11 款 —— CodeArts / Crush / Hermes / CodeBuddy 陆续拿到 `--global` 之后这句话没跟。三语同步补齐。 两版 README 的同一句也少了 CodeArts(v1.7.11 补 --global 时漏改),一并修。 ## 3. skill 详情页有 6 条死链 `SKILL.md` 里指向兄弟文件的相对链接(`implementer-prompt.md`、 `../requesting-code-review/code-reviewer.md` 等)站点上根本没有这些 .md: `../` 开头的直接 404,不带 `./` 的被 md.mjs 的 scheme 白名单打成 `href="#"` —— 点了没反应,比 404 还难查。 `renderMarkdown(src, base)` 加基址参数,相对链接解析到 GitHub 源文件。 5 个目标地址逐个 curl 过,都是 200。全站扫描:死链 0、`href="#"` 0。 ## 4. 加两条门禁,堵住这次的漏法 audit 原来只数文案里的数字,这次两个问题它一个都发现不了。补: - 官网 `TOOLS` 条目数必须 = TARGETS + 1 - 官网 FAQ 全局清单必须包含 installer 里每个带 `global:` 的工具 反向验证过:删掉 Crush、去掉 CodeArts,两条各自报错。 audit 170 pass / 0 fail(新增 2 条);verify-release 114 pass / 1 fail, 唯一那条是 windsurf.com 返回 429 限流,改动前的干净树上同样失败,与本次无关。
170 lines
5.9 KiB
JavaScript
170 lines
5.9 KiB
JavaScript
// 零依赖 Markdown → HTML 渲染器,够用于本项目的 SKILL.md。
|
||
// 支持:ATX 标题、代码围栏、表格、有/无序列表(含嵌套)、引用、分隔线、
|
||
// 行内 code/bold/italic/link,原生 HTML 行透传。
|
||
|
||
function escapeHtml(s) {
|
||
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
||
}
|
||
|
||
// 行内:先保护代码片段,再处理粗体/斜体/链接
|
||
// base:当前文档在仓库里的 URL(如 .../blob/main/skills/<name>/),用于把
|
||
// SKILL.md 里指向同目录/兄弟目录的相对链接(code-reviewer.md、../x/y.md)
|
||
// 解析成 GitHub 上的真实地址 —— 站点上没有这些 .md 文件,不解析就是死链。
|
||
function inline(text, base) {
|
||
const codes = [];
|
||
// 行内代码 `...`
|
||
text = text.replace(/`([^`]+)`/g, (_, c) => {
|
||
codes.push('<code>' + escapeHtml(c) + '</code>');
|
||
return ' |