32 Commits

Author SHA1 Message Date
AI不止语
932ffdcd01 feat(site): 官网补上「本版谁该重装」和 22 份工具文档入口——此前这两件事站上一个字都没有
上一轮我把官网审计做成了纯技术体检(robots / CSP / 图片字节 / og 标签),扫的是
「哪里不对」,没扫「访客需要什么、站上却没有」。按内容维度重查,查出两个比那些
重得多的空洞。

## ① v1.7.11 的核心信息,官网完全没有

这个版本的全部意义是一句话:Codex CLI / VS Code / Windsurf / Qwen Code / DeerFlow /
Claw Code 六款此前装了不生效,请重装。而官网上关于这件事的表述实测为零:

    重新安装 / 变更 / 更新日志 / Release / RELEASE-NOTES   首页出现 0 次
    重装                                                   1 次,但在全局安装 FAQ 里,与本事无关
    v1.7.11                                                1 次,就是统计块里那个数字

**上周装过的用户今天来站上,没有任何途径知道自己装的那份是坏的。** README 顶部有
整块更新亮点,官网一个字都没有。

hero 下方加一条可点的版本提示条(三语),点进 RELEASE-NOTES。版本号不手写:从
RELEASE-NOTES.zh.md 的最新条目解析,再与 package.json 交叉校验 —— 两边漂了直接
构建失败。需要重装的工具列表抽成 REINSTALL_TOOLS 常量,三语共用一份。

## ② docs/ 里 22 份工具安装指南,官网零暴露

全站链接到它们的次数:0。而官网「安装」区全文只有 378 字,内容就是「选工具 →
复制命令」。那 22 份文档里装的恰恰是这里缺的:

    docs/README.codex.md    ## ⚠️ v1.7.10 及更早的项目级安装装错了地方
    docs/README.kiro.md     ## ⚠️ v1.7.9 及更早版本请重新安装
    docs/README.windsurf.md > 📌 --global 装到了 Windsurf 不读的目录,等于装了不生效

Kiro 用户想知道「为什么要重装、旧布局怎么清」,站上没有出口。

工具墙的 pill 改成:有专属文档的 20 款直接链过去(带 ↗ 与 title 提示),没有文档的
3 款(Claude Code / Cursor / Copilot CLI)保持纯文本,不造不存在的链接。

## 新增三条构建期门禁(都反向验证过)

| 门禁 | 造错 | 实际拦下 |
|---|---|---|
| release notes 与 package.json 版本一致 | 把条目改成 v1.7.12 | `版本漂移:package.json 是 1.7.11,RELEASE-NOTES 最新条目是 v1.7.12` |
| 工具文档必须存在 | doc 改成 windsurfff | `工具 Windsurf 的文档不存在:docs/README.windsurfff.md` |
| release notes 结构可解析 | 抹掉版本标题 | 退回上一条目并报版本漂移,而不是静默渲染空版本 |

第二条尤其必要:官网链到 GitHub 上一个不存在的 docs 文件,就是又一条「编造出处」,
而本仓已经因为编造链接栽过一次(033adc3)。

## 验证

- 三语版本条渲染正确,链接指向 RELEASE-NOTES.zh.md
- 工具墙:可点 20 款 / 纯文本 3 款,与 docs/ 实际拥有的文档一一对应
- **20 条文档链接逐条 curl,全部 200**(不抽样);RELEASE-NOTES 链接 200
- 官网 66 页构建,站内死链 0、无效 href="#" 0、缺 height 的 img 0
- audit 170 pass 0 fail;verify-release 115 pass 0 fail
- tests/kimi · pi · opencode · brainstorm-server 全 PASS
2026-09-02 22:45:22 +08:00
AI不止语
1081cefc42 fix(docs,site): README 把 2 个上游 skill 算成「中国特色」;二维码缺 height;官网外链没人验活
按主站逐项核对时查出的三处,都不是新引入的,是一直没人发现。

## ① README 的「中国特色 Skills(6 个)」与官网自相矛盾

三处口径本来就不一致:

| 位置 | 原来的说法 |
|---|---|
| 官网统计块 | 4 中国原创 |
| `.claude-plugin/plugin.json` | 20 个 skills(14 翻译 + 4 中国原创 + 2 上游历史保留)|
| 两版 README | **6 个中国特色 Skills** ← 只有它是 6 |

README 把 `mcp-builder` 和 `workflow-runner` 也算进了「中国特色」。用 GitHub API 核过:
**上游 obra/superpowers 现有 14 个 skill,本仓 20 个,多出的正是 4 个 `chinese-*` 加这两个。**
它们来自上游、上游后来移除、本 fork 保留继续维护 —— 跟中国特色没有任何关系,把它们
算成中国原创等于虚报了 50% 的原创量。

改:规模表列名改「中国原创 Skills」值改 4(附注另有 2 个上游历史保留);小节标题拆成
「中国原创(4 个)· 上游历史保留(2 个)」;表格里这两行的「上游有吗?」由「无」改为
「曾有,上游已移除」——原来写「无」会被读成「我们原创的」,正是错误的来源。简繁同步。

(`using-superpowers` 正文里的「中国特色技能路由」是真实存在的小节名,不动。)

## ② 页脚三个二维码缺 height,加载时把页脚顶下去

`<img width="158">` 没有 height,浏览器算不出宽高比,图一到位就发生布局偏移(CLS)。
赞助商 banner 和 logo 都是齐的,只有二维码漏了。

没有写死数字,而是新增零依赖的 `imageSize()`(PNG 读 IHDR、JPEG 逐段找 SOFn),
构建时从文件读真实尺寸:258×258 / 1125×1680 / 316×316,与 `sips` 实测逐一吻合。
换二维码时属性自动跟随,不会悄悄退回错的比例。

顺带用同一个函数补了一条门禁:**赞助商声明的 `w`/`h` 必须与素材真实尺寸一致** ——
换了 banner 忘了改数字,页面就会按错的宽高比预留位置。

## ③ 外链验活门禁扫不到官网,三条付费展位链接一直无人看守

`verify-release` H 段只扫 `docs/*.md` 与两版 README,`site/build.mjs` 不在列。也就是
旗舰赞助商与两个常规位的推广链接挂掉了不会有任何人知道 —— 而这是要赔的。

扫描范围加上 `site/build.mjs`,并把 `compshare|cubence` 移出排除名单(原来被当噪音跳过),
正则补 `?=&` 让带 aff/referral 参数的推广链接被完整验证而不是截断到路径。
覆盖链接 45 → 52 条。

排除名单新增 `googletagmanager|google-analytics`:它们在 build.mjs 里是 **CSP 白名单条目
不是链接**,裸域 `googletagmanager.com` 实测返回 404,纳入等于凭空造一条误报 ——
这条门禁最忌讳的就是误报。

## 反向验证(三条逐一造错,必须拦下)

- 把官网的 book.aibuzhiyu.com 改成不存在的路径 -> `死链(404)`,FAIL 1
- 把 infistar banner 的 w/h 改成 800×368 -> 构建退出码 1,
  `banner 尺寸对不上:声明 800×368,实际 1269×337`
- 二维码尺寸不再有写死数字(`width="158"` 已从源码消失)

## 全量测试

官网 66 页构建 / 站内死链 0 / 无效 href="#" 0 / **缺 height 的 img 0**(原为 3);
audit 170 pass 0 fail;verify-release 115 pass 0 fail;CI 等价 20 skills 0 错误 v1.7.11;
tests/kimi · pi · opencode · brainstorm-server 全 PASS。
2026-09-02 21:19:58 +08:00
AI不止语
293b300365 refactor(sponsors): 旗舰赞助商文案改回分段展示,压成一整段把结构揉没了
赞助商给的原文本来是三条并列要点( 稳定承载 / 🧠 一个 Key 接入 / 🛠️ 赋能工作流),
上一版为了塞进卡片压成了一整段 —— 信息没丢,但骨架没了:卡片里是一堵 140 字的墙,
README 里也是。付费展位应当按赞助方的文案结构呈现,读者也更容易扫。

## 改法

- 官网旗舰卡:`desc` 整段 -> `points` 三条要点(图标 + 加粗小标题 + 说明),三语各一份;
  新增 `.flag-points` 样式,图标定宽一列、标题与说明纵向对齐,颜色走 --text /
  --text-dim,深浅主题都已定义
- 两版 README:改成「标题行 + 致谢行 + 三条 bullet + 🎁 福利行」,与赞助商原文一一对应,
  福利行补上原文的「superpowers-zh 用户专属福利」前缀
- 常规位不受影响,仍用整段 `desc`(卡片窄,四行截断的排版是为整段设计的)

## 门禁跟着分流

`assertSponsors()` 原来无差别要求每家都有 `desc`。现在按 tier 分:旗舰要
`img/w/h/points`,常规要 `logo/desc`;并新增一条 —— 三语要点**条数必须一致**,
每条的 `icon/t/d` 不能空。漏翻一条要点是最容易发生的漂移,页面上不会报错,
只会某个语言少一条。

反向验证:删掉繁體第三条 -> `points 三语条数不一致:zh/en/zht = 3/3/2`;
把简体第一条标题清空 -> `zh 要点缺 icon/t/d`。两条都按预期拦下。

## 验证

- 三语赞助页各渲染 3 条要点,图标 / 标题 / 说明逐条核对无误
- 官网 66 页构建通过,站内死链 0、无效 href="#" 0
- styles.css 改动后内容 hash 已变(?v=786ad3f27f),边缘缓存不会喂旧 CSS
- audit 170 pass / 0 fail;verify-release 115 pass / 0 fail
2026-09-02 18:03:43 +08:00
AI不止语
e77aaf6601 feat(sponsors): 新增旗舰赞助商 Infistar.cc 无限星河
旗舰位此前一直是「虚位以待」招商卡。Infistar.cc 上旗舰位,展示形式对齐
jnMetaCode/agency-agents-zh 的旗舰版式:整块大图 banner + 独立文案段 + 福利行,
排在两个常规位之前。

## 落位

| 位置 | 呈现 |
|---|---|
| 官网赞助商页(三语) | 顶部整块 banner(1269×337)+ 定位一句话 + 简介 + 福利 + 行动按钮;「虚位以待」卡自动消失,下面两家转入「更多赞助商」 |
| 福利汇总表 | 排第一行,优惠码列为 —(推广链接自带 aff,无需手填码) |
| 两版 README | 赞助商区块顶部 `<p align="center">` 整幅 banner + 文案段 + 🎁 福利行 + `<hr>`,与参考仓库同版式 |

## 文案口径

素材原文里福利写的是占位符 `[5美元等值测试额度 / 首充专属优惠]`,二选一未定 ——
这句会直接印在 README 和官网上,跟你确认后定为**「注册并完成首次调用领 5 美元
等值测试额度」**,不写没定下来的首充折扣。其余数字均照素材原文:一个 API Key 接入
Claude / ChatGPT / Gemini / Kimi / GLM / DeepSeek,价格低至官方渠道 1 折。

推广链接发版前实测 200(含 www 与裸域)。

## 顺带加一条构建期门禁

旗舰卡读 `img`,常规卡读 `logo` —— 两条渲染路径要的字段不一样。把 tier 从
flagship 改成 standard 而忘了配 logo,页面上就是个静默碎图,而赞助位是付费展示位,
图挂了就是事故。

`assertSponsors()` 在构建期校验三件事:字段按 tier 齐全、素材文件真的存在、
三语文案不缺。反向验证过 —— 把 img 改成不存在的文件、把 tier 改成 standard,
构建各自直接失败并指名道姓报出缺什么。

赞助素材规格说明(官网赞助 FAQ 三语 + site/README.md)同步更新为旗舰 1269×337 /
常规 800×368,并写明常规位还需方形小图标。

## 验证

- 官网 66 页构建通过,三语赞助页均渲染旗舰卡、「虚位以待」卡消失、福利表首行正确
- 全站链接扫描:站内死链 0、无效 `href="#"` 0;banner 落盘 dist 并本地预览 200
- README 引用的 3 个本地素材全部存在
- audit 170 pass / 0 fail;verify-release 115 pass / 0 fail(外链验活覆盖了新增的
  infistar.cc 推广链接)
- CI 等价检查 + tests/kimi · pi · opencode · brainstorm-server 全 PASS
2026-09-02 17:46:29 +08:00
AI不止语
1f66b091b7 fix(site): 官网工具墙停在 20 款 —— Cline / Kilo Code / Crush 的用户在下拉里找不到自己的工具
起因是核对首页:统计块写着「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 限流,改动前的干净树上同样失败,与本次无关。
2026-08-28 21:48:01 +08:00
AI不止语
c68725b4f6 feat(site): 导航栏补当前页高亮,赞助商入口不额外加粗
导航此前没有任何当前页标识。参考站看着「赞助商」更重,是因为停在
该页时的 active 态(其导航项统一 font-medium,active 只把颜色从
muted 提到 foreground,字重不变),并非给赞助位单独加粗。

照此实现:停在 /sponsors 时该项颜色提亮 + aria-current="page",
其余情况与其他导航项完全一致。不给商业位额外字重——导航里单独加粗
一项会被读成「当前页」,点进去发现不是反而困惑。

三语页面同步生效。
2026-08-18 19:30:31 +08:00
AI不止语
ae316d87f3 feat(site): 新增赞助商独立页;顺带修掉三处一直坏着的链接 / 布局
官网此前一条赞助商内容都没有。这一版把赞助内容全部收敛到独立页
/sponsors(中 / EN / 繁三语各一份),首页不放任何赞助位,入口进导航栏。

赞助商页结构:Hero → 旗舰位 → 当前赞助商 → 专属福利汇总 → FAQ →
赞助权益 → CTA。

- 分档由数据驱动:SPONSORS 里 tier: 'flagship' 的用大 banner 单独成块
  (读 img),其余是紧凑卡(读 logo,简介 CSS 截 4 行);当前无 flagship,
  该区块渲染成「虚位以待」招商卡
- 紧凑卡的简介可展开:JS 比对 scrollHeight/clientHeight,只有真被截断
  时才显示「展开全部」,避免出现点了没反应的死按钮
- 福利汇总表里的优惠码点一下即复制,复用站内已有的 copy 委托,未新增
  第三方依赖
- Hero 原文案写「不做付费墙也不接广告」,但赞助位本身就是付费展示位,
  自相矛盾。改为如实说明;外链一律 rel="sponsored nofollow noopener"

顺带修掉三处做入口时发现的老问题(都是线上正在坏的):

- 每个 skill 详情页的「← 返回全部 Skill」是 404:链接写的 index.html,
  从 /skills/xxx 解析成 /skills/index.html —— 该文件不存在。实测线上
  同样 404。60 个详情页全中,已改 ../index.html
- EN / 繁體页面的导航与品牌链接全部跳回中文首页:base 原本按「相对站点
  根」算,/en/index.html 的导航是 ../index.html。已改为相对当前语言根
- 导航栏在 900px 以下挤成两三行(「支持工具」被竖排拆开):原来跟着
  720px 断点走,721–900px 这段一直是坏的。现改为导航项永不折行 + 独立
  900px 断点 + 窄屏横向滚动

赞助商图标取自 ao.aiolaola.com(同一维护者的站、同一批赞助商)。
2026-08-18 18:56:03 +08:00
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不止语
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不止语
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不止语
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不止语
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不止语
960bf78e68 feat(site): 顶部导航补「支持工具」+「学习」入口
- 支持工具(#tools):i18n 和区块本就有、但漏在导航里,补上
- 学习 ↗:链到 aiOlaOla 学习平台(带 utm_source=sp1 来源追踪)
导航:特性/安装/Skills/支持工具/FAQ/学习/GitHub/语言/主题
2026-06-23 23:29:30 +08:00
AI不止语
adcf60f4a5 fix(site): HTML 用 Cache-Control no-store,尝试绕过 zone Browser Cache TTL 覆盖 2026-06-23 04:52:20 +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不止语
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不止语
7ab4e55949 feat(site): 加百度站长验证 meta (codeva-5WLzyP9gcN) 2026-06-23 03:55:15 +08:00
AI不止语
3e272c1dba feat(site): 补齐 SEO 基础设施(robots/sitemap/canonical/hreflang/og)
之前站点缺 SEO 基建,搜索引擎难发现/收录。本次补齐:
- robots.txt(allow all + Sitemap 指向)
- sitemap.xml(42 个页面:中/英首页 + 20 skill × 2 语言,带 lastmod/priority)
- 每页 <link canonical>(clean URL)
- hreflang 中英互链 + x-default(双语站正确归类)
- og:url / og:image / twitter:card

验证:重建 42 页;robots/sitemap 生成;详情页 SEO 标签齐全;CSP 126
内联脚本 0 缺失,不受影响。
2026-06-23 02:02:12 +08:00
AI不止语
d3e3b3684c fix(site): 资源用绝对路径,根治相对路径导致的样式丢失
详情页/子路径页面若相对引用 styles.css/app.js,在某些情况下(如缓存旧
HTML、Cloudflare 把不存在路径回退成 200-HTML)会解析到 /skills/styles.css
等不存在的路径,返回 HTML 而非 CSS,叠加 X-Content-Type-Options: nosniff
被浏览器拒绝应用 → 整页无样式。

站点部署在域名根,改为绝对路径根治:styles.css / app.js / favicon /
brand svg / 扫码二维码 全部 ${base}X → /X,与页面层级/缓存无关、永远正确。
页面导航链接保持 ${base}(跨语言导航逻辑不变)。

验证:重建 42 页,详情页/EN 资源均为 / 绝对路径,无相对 CSS 引用;
CSP 126 内联脚本 0 缺失。
2026-06-20 10:39:32 +08:00
AI不止语
cc1148887e feat(site): 页脚 + README 增加扫码关注(公众号 + 抖音二维码)
- 官网页脚新增"扫码关注"区块:公众号 AI不止语 + 抖音 @AI不止语(AIBZY)
  两张二维码并排展示(中英 i18n + 响应式)
- README 交流区在公众号文案处嵌入公众号二维码
- 二维码自托管于 assets/,CSP img-src 'self' 已允许,无需放行外域

资源:site/template/assets/qr-{wechat,douyin}.jpg(站点)、assets/qr-wechat.jpg
(README);build.mjs 增加拷贝逻辑 + 页脚 figure 区块 + i18n 文案;
styles.css 增加 .foot-qr/.qr-card 样式。

验证:重建 42 页;两张 QR 拷入 dist;页脚区块生成;CSP 不受影响。
2026-06-20 06:04:15 +08:00
AI不止语
6f494d818e feat(site): 接入 Google Analytics (gtag.js, G-L02QK4EVDL)
在每页 <head> 加入 gtag.js(异步加载器 + 内联 config)。

同步放行严格 CSP(否则 GA 被拦):
- script-src 增加 https://www.googletagmanager.com(加载器);内联 config
  块由 CSP hash 收集器自动加白名单
- connect-src 增加 google-analytics / analytics.google / googletagmanager
  (上报埋点)
- img-src 增加 google-analytics / googletagmanager(beacon)

验证:重建 42 页;GA 代码在 head;CSP 含上述域名;全站 126 处内联脚本
hash 全命中 CSP(0 缺失,站点不被打断、GA 内联可执行)。
2026-06-20 05:56:04 +08:00
AI不止语
3933c22858 fix(site): CSS/JS 加内容 hash 版本号,根治边缘缓存导致的样式不更新
问题:styles.css/app.js 设了 max-age=86400,Cloudflare 边缘缓存旧版,
部署 CSS 改动后用户仍看到旧样式(详情页排版修复一度不可见)。

修复:HTML 引用改为 styles.css?v=<hash> / app.js?v=<hash>,hash 取文件
内容 sha256 前 10 位。内容变→URL 变→边缘按新 key 取新文件(立即生效);
内容不变→URL 不变→继续命中长缓存。HTML 本身 max-age=0 始终新鲜,
保证总是引用到最新版本号。

验证:重建 42 页,首页与详情页 CSS/JS 引用均带 ?v=hash。
2026-06-20 05:52:31 +08:00
AI不止语
ceb92f3536 fix(site): 详情页排版居中 + star 数更新 233k + 页脚加 X/Twitter
- styles.css: .doc 容器补 margin:0 auto + 左右 24px 内边距,修复 skill
  详情页正文紧贴左边缘、右侧大片空白的排版问题
- build.mjs / README: 上游 star 数 159k+ → 233k+(实际 233,268)
- build.mjs: 页脚生态区新增 X / Twitter(https://x.com/jnMetaCode)

验证:重建 42 页;.doc 居中边距生效;无 159k 残留;X/Twitter 入页脚。
2026-06-20 05:47:50 +08:00
AI不止语
4340c987b2 docs(site): 去掉 fork 框定与上游链接,页脚增加生态/社区入口
按项目方要求,官网不再以"基于 obra/superpowers 的中文增强 fork"自我定位:
- 页脚版权改为 © 2026 superpowers-zh · MIT License(中英)
- 移除页脚资源区的"上游 obra/superpowers"链接(中英)
- FAQ"和上游关系"条改写为"superpowers-zh 有哪些独特价值",以独立中文
  项目视角介绍,不再用 fork 框定(中英)
- 页脚新增「生态」列:aiOlaOla(从零学会 AI 编程)、公众号 AI不止语、
  姐妹项目;「社区」列新增联系邮箱

验证:重建 42 页;页脚/FAQ 的 fork 字样与上游链接已清除;新链接均已注入。
2026-06-20 05:36:42 +08:00
AI不止语
0aa3344f6f harden(site): 站点安全加固——严格 CSP + 安全响应头 + 链接 scheme 净化
安全审核发现两处防御纵深缺口(当前内容可信、非活跃漏洞,但公开站应补齐):

1. 部署站 _headers 此前只有 Cache-Control,缺所有安全响应头。
   现新增全站 /* 头:
   - Content-Security-Policy:default-src 'self';script-src 'self' + 本站
     内联脚本的 SHA-256 hash(构建时从生成 HTML 实测,禁用 unsafe-inline/
     unsafe-eval 又不误伤自有脚本);style-src 'self';object-src 'none';
     base-uri 'self';frame-ancestors 'none';form-action 'self'
   - X-Content-Type-Options: nosniff / X-Frame-Options: DENY /
     Referrer-Policy: no-referrer / Cross-Origin-Opener-Policy: same-origin /
     Permissions-Policy(关闭定位/麦克风/摄像头)
2. md.mjs 链接渲染未校验 scheme。现仅放行 http/https/mailto/锚点/相对
   路径,阻断 javascript:/data:/vbscript: 等可执行 scheme,并转义引号防
   属性逃逸。

验证:重建 42 页成功;独立核验全站 84 处内联脚本的 hash 全部命中 CSP
白名单(0 缺失 → CSP 不会打断站点);链接净化单测 5/5(正常/锚点/相对
保留,javascript:/data: 中和为 #);站点正常外链完好。外部资源仅 <a>
导航链接,不受 default-src 影响。
2026-06-20 04:16:40 +08:00
AI不止语
c8a4ebd930 feat(site): 新增项目官网(静态站点生成 + Cloudflare Pages 自动部署)
为 superpowers-zh 增加官方站点:用 site/build.mjs 从 skills/ 与模板生成
中英双语静态站(42 页:中/英首页 + 20 skill × 2 语言详情),部署到
Cloudflare Pages。

- site/build.mjs + site/md.mjs + site/template/:站点生成器源码
- site/README.md:站点说明
- .gitignore:忽略 site/dist/(构建产物不入库,CI 重建)
- .github/workflows/deploy-site.yml:push 到 main 且 site/ 或 skills/
  变更时,构建并部署到 Cloudflare Pages 项目 superpowers-zh-site
  (需仓库 Secrets:CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID)
- package.json:加 site / site:deploy 脚本

验证:node site/build.mjs 构建成功,生成 42 页到 site/dist;
site/dist 已确认被 gitignore 排除、未入库;build.mjs 无硬编码密钥。
2026-06-20 04:06:02 +08:00