Repository navigation
Releases
v1.5.2 — 社区健康文件与依赖自动更新;修一处版本漂移
v1.5.2 — 社区健康文件与依赖自动更新;修一处版本漂移
概览
按「谁会读它、读完会做什么不同的事」逐个判过之后,只加必要的三个文件,刻意不加 CoC / PR 模板 / issue 模板。
判据是本仓库的实际协作面:issues 开着,但历史 issue 与 PR 都是 0 条,0 fork、9 star、discussions 关闭 —— 基本是单人仓库,社区治理类文件没有可治理对象。
GitHub 的社区健康度:42% → 71%(剩下的 29% 正是刻意不加的那四项)。
| 组件 | 版本变化 |
|---|---|
根快照(pyproject.toml + package.json) |
1.5.1 → 1.5.2 |
| 插件 | 不变(本次没动任何插件的 skills) |
新增 SECURITY.md
理由不是"别人都有",而是自相矛盾:本仓库的旗舰技能就是 code-security-audit,它自己的「不算 Finding 判别表」会把"缺漏洞披露渠道"记成一条问题。安全工具仓库没有披露政策,是可信度上的硬伤。GitHub 也只有存在这个文件时才显示 Report a vulnerability 按钮。
内容刻意诚实:
- 不假装运营 PSIRT —— 写明单人维护、没有 SLA、修复偏保守(本仓库的产物是给 agent 读的指令,改一句措辞的影响面比改一行代码更难评估)
- 划清范围:你用本仓库技能审出来的、别人项目里的漏洞请报给那个项目;第三方技能报给各自上游;
plugins/superpowers/继承自上游的内容报给 obra/superpowers - 点明这个仓库最隐蔽的一类问题:工具给出的假保证(校验器声称拦住了某件事、实际没拦 —— 用户会因此信任一个不成立的结论)。上一版修的 META-2 正是这一类
新增 CONTRIBUTING.md(索引,不是复述)
真正的问题不是"没人知道怎么 fork",而是本仓库有若干 CI 强制的隐性契约散在 README / VERSIONING.md / LICENSING.md / skeleton.md / 三份 CLAUDE.md 里 —— 不知道的人(或 agent)只会拿到一个看不懂的红 CI。
所以它写成「规则 → 权威文档」的索引,并明确声明:
若本页与链接文档不一致,以链接文档为准 —— 重述必然漂移。
另含:本地门禁命令、三条最容易踩的(技能目录必须单层 / description 有 500 上限且它就是触发词 / ## 自进化日志 必备 + 归档而非删除)、PR 期待,以及这个仓库大概不会合的东西(纯格式化全仓库重排、与现有技能高度重叠的新技能、"第二份真相"式结构)。
新增 .github/dependabot.yml(只配 github-actions)
刻意窄范围,文件注释里写清了为什么排除另两个生态,免得后人「顺手补上」:
- npm 不加:唯一依赖
@deepseek-ai/dsh-skill-filesystem是 caret 范围,且仓库里没有提交 lockfile(.gitignore明确忽略package-lock.json—— 这些 node 依赖只服务于本地/CI 的插件校验)。范围本就浮动到最新兼容版,再提一个「调高下限」的 PR 近乎无意义 - pip 不加:Python 依赖全是可选 extras + 宽松
>=下限("核心命令零第三方依赖"),CI 本身只用标准库
github-actions 才是真有价值的:工作流按大版本 tag 固定(actions/checkout@v7 之类),dependabot 会在上游发大版本时提 PR。按月分组,一次 PR 覆盖全部 action。
修掉两处漂移
package.json的version卡在 1.3.0,跨 v1.4.0 / v1.4.1 / v1.5.0 / v1.5.1 四次发布没动。dev-workflow的 bump 清单里明确列了这一项 —— 是漏了,已同步。本次发版因此两个版本号一起改LICENSING.md没进package.json的files(v1.5.0 新加时漏的),而README.md与THIRD-PARTY-NOTICES.md都引用它 → 分发包里会是悬空引用。已补
刻意没做
| 没做 | 为什么 |
|---|---|
CODE_OF_CONDUCT.md |
0 贡献者 / 0 issue / 0 PR / discussions 关闭 —— 没有社区可治理。3 KB 样板没人读,还会暗示一个不存在的社区、揽下一份不会执行的承诺。等真要收外部贡献时与 CONTRIBUTING 一起加 |
| PR 模板 | 历史 0 条 PR;且必须防它与 dev-workflow 的 reviewer 侧清单漂移,要加只能是指针 |
| issue 模板 | 0 条 issue。skill 类报障确实需要结构化字段,但等有外部报告再加不迟 |
homepageUrl |
查过仓库里没有可当落地页的目标(无 index.html / docs 站 / Pages)。指回仓库自己比留空更差,故留空 |
门禁
compileall / check_skills --strict(29 技能 0 错误 0 警告)/ test_bin_contracts /
security_audit_tools.py validate(13 findings)/ verify-plugin.mjs / check_external 全绿;
CONTRIBUTING.md 的 13 条相对链接逐一验证存在;两条 workflow 与 dependabot.yml 的 YAML 均经解析校验。
自 v1.5.1 的完整提交
b35c92adocs(community): 加 SECURITY.md + CONTRIBUTING.md(索引式)+ dependabot;修 package.json 版本漂移3cb7e62fix(packaging): 改用 PEP 639 许可证 + 记录产物不可复现这一限制
Full Changelog: v1.5.1...v1.5.2
v1.5.1 — 发布改由 CI 负责:Release 开始带产物
v1.5.1 — 发布改由 CI 负责:Release 开始带产物
概览
本仓库过去的 Release 全部是 0 产物(v1.0.1 到 v1.5.0,一个不落)。pyproject.toml 早就声明了一个正经的包
(agent-useful-skills + 13 个 console script),却从来没构建、也没挂过任何 sdist / wheel。
本版把发布改由 CI 负责:推 tag → 构建 → 建 Release → 挂产物。这也是本仓库第一个带产物的 Release。
| 组件 | 版本变化 |
|---|---|
根快照(pyproject.toml) |
1.5.0 → 1.5.1 |
插件 dev-workflow |
2.0.1 → 2.0.2(见上一提交) |
新增 .github/workflows/release.yml
推 tag 触发,做三件事:
- 复用
verify.yml的全部门禁 —— 不在红的提交上发版。之所以用workflow_call复用而不是抄一份检查清单:
抄的话,verify.yml以后加了新门禁,发版这条路会静默不跑它 python -m build产出 sdist + wheel 并挂到 Release- notes 优先读
release-notes/<tag>.md(就是本文件),找不到则--generate-notes
为什么必须是 CI 建,而不是手跑
这条来自另一个项目的真实事故,本版把它固化成了工作流的写法:
手跑
gh release create与 tag 触发的 workflow 抢跑。workflow 的创建步骤看到 Release 已存在便跳过
(幂等本身没错),但上传产物那步挂在创建步骤的输出上(if: steps.create.outputs.upload_url)
→ 一并跳过,最终留下一个有 notes、看着正常、却没有任何产物的 Release —— 而且不报错。
所以本工作流刻意写成两条规则:
- ① 创建幂等:Release 已存在就跳过创建,不算失败
- ② 上传无条件:
gh release upload ... --clobber独立成步,绝不挂在创建步骤的输出上
推论:不要手动 gh release create。要发版就推 tag。若已抢跑,gh release delete(不会删 tag)+ 重跑本工作流即可修好。
配套改动
release-notes/(新):notes 落点 + 约定说明。必须在打 tag 之前提交 —— CI 是在 tag 指向的
commit 上 checkout 的,之后补的文件这次读不到verify.yml:加workflow_call,供 release.yml 复用.gitignore:补build/与dist/(开始构建了;*.egg-info/原本就已忽略)- 根 README 新增「发布」一节;
VERSIONING.md写明发版方式,并修掉两处陈旧的release-skill引用
(该技能 2026-09-12 已并入dev-workflow;根级.md不在校验器扫描范围内,所以一直没被抓到) dev-workflow的release.md:新增「发布机制:先确认由谁创建」一节、
第 5 步「核对产物(必做)」、恢复步骤与 Edge cases —— 并把本仓库标注为其「CI 自动」型的实例
本地验证
python -m build 的等价链路已在本地实测通过(pip wheel --no-build-isolation 出 whl、build_meta.build_sdist 出 tar.gz):
agent_useful_skills-1.5.1-py3-none-any.whl(约 52 KB)agent_useful_skills-1.5.1.tar.gz(约 55 KB)
门禁
compileall / check_skills --strict(29 技能 0 错误 0 警告)/ test_bin_contracts /
security_audit_tools.py validate(13 findings)/ verify-plugin.mjs 全绿;
两条 workflow 的 YAML 均经解析校验(on 键未被 YAML 当成布尔真)。
自 v1.5.0 的完整提交
8c32052fix(dev-workflow): 发布流程补「先确认 Release 由谁创建」——修掉一条静默出错的路径(2.0.2)- 本版提交:发布改由 CI 负责(
release.yml+release-notes/+ 文档同步)
Full Changelog: v1.5.0...v1.5.1
v1.5.0 — 嵌套单元授权策略 + 第三方来源说明重写
概览
两件事:更新第三方来源说明,以及定下嵌套单元的授权策略。
| 组件 | 版本变化 |
|---|---|
根快照(pyproject.toml) |
1.4.1 → 1.5.0 |
| 插件版本 | 不变(本次不动任何插件内容) |
一、第三方来源说明(重写为三类)
原文件只有 4 条、没有分类,读起来分不清「借鉴了思想」与「随仓库分发」。现按 ①设计来源(未使用代码)/②随本仓库分发/③外部依赖(不分发) 组织。
- 新增
cloudflare/security-audit-skill(MIT,Copyright (c) 2025-2026 Cloudflare, Inc.)—— 本轮借鉴最多的来源,之前完全没有登记。记为「设计来源、未使用其代码」,并写明明确未采纳的部分(132 KB 校验层 / 覆盖率账本 JSON / 11 步 promotion / OS 沙箱前置)与理由 - 更正
diagram-design的许可证:原写「Apache-2.0 / MIT」,按其 LICENSE 与 plugin.json 核实为纯 MIT(Copyright (c) 2025 Cathryn Lavery) diagram-design状态从「仅文档引用」改为「产出随仓库分发」:audit-workflow/verdict-model两张图依其设计系统自绘。同时检索确认我们未引用其打包的 Tabler Icons / Simple Icons / log-z 素材,故无需转承那三项许可- 补齐
fireworks-tech-graph:本地副本 git remote 为 ninehills/fireworks-tech-graph,其 README 内又指向更上游 yizhiyanhua-ai/fireworks-tech-graph(MIT) - 补齐
wiretext:公开身份是 Daniel Howells 的「Figma, but everything is text」文本线框图工具,未找到公开仓库与许可声明;未安装未使用
收编 md-format-fixer
它此前按外部依赖声明,但实为本仓库作者自研 —— 这是把「自研但不在仓库内」误当成「第三方外部依赖」。根因之一是 skills.external.json 的 upstreamLicense 字段名:该文件里的 external 指发现路径在仓库外,与版权归属无关(已在三处写明)。
- 新增
skills/md-format-fixer/,加入skills.manifest.json默认清单,从skills.external.json移出 - 收编时修掉两处既有缺陷:
description由 532 → 439 字符(DSH catalog 上限 500,它原先正是截断反例之一);补上正文引用却一直不存在的references/fix-log.md ## Self-Evolution改名为## 自进化日志(The Fix Log),对齐本仓库技能契约
顺带发现的空洞
bin/check_external.py 根本不读 upstreamLicense —— 它与说明文件是否一致没有任何门禁校验,那个挂了很久的「建议补」永远不会被抓到。已在两处注释写明该字段靠人工维护。
二、授权策略:大 monorepo 是 MIT,里面的小 repo 呢
新增 LICENSING.md,一句话:
根 MIT 覆盖全仓库;只有「可能被单独拿走的单元」才自带一份 LICENSE;fork 来的上游内容永远保留上游许可。
| 单元 | 授权 |
|---|---|
bin/ tests/ assets/ archive/ latex-templates/ skills/* |
随根 MIT,不各自放 LICENSE —— 铺二十份相同副本只会改一次要改二十处 |
plugins/code-security-skills/、plugins/dev-workflow/ |
本次各补一份与根逐字一致的 MIT LICENSE —— 它们可被单独安装(claude plugins install <repo> --path plugins/X),授权要随代码走 |
plugins/superpowers/ |
保留上游署名:MIT © 2025 Jesse Vincent(obra/superpowers 的 fork),不覆盖成本仓库署名 —— MIT 要求保留版权声明 |
| 第三方内容 | 按各自许可,登记于 THIRD-PARTY-NOTICES.md |
判据写成了可执行规则(「接收方有没有可能只拿到这个目录?」)+ 一张「新增内容时怎么办」表。
顺带查清 latex-templates/ 的许可状况(此前不明)
它是自写的最小骨架:main.tex 几百字节,靠 \usepackage{neurips_2025} 之类引用官方样式;ICML / NeurIPS 官方 .sty 刻意不 vendoring(其 README 写明「避免过期」),sjtuthesis/ 只是一份指路 README、真工程在独立 clone。
⇒ 不涉及 IEEE / ICML / NeurIPS / SJTU 的模板许可,也没有转载其条款的义务。
补上一个真实的打包缺口
pyproject.toml 此前没有 license 字段(package.json 有、三份 plugin.json 都有)。现补 license = { text = "MIT" },用经典形式匹配 build-system 声明的 setuptools>=61 下限(PEP 639 的 license = "MIT" 需要 setuptools>=77),注释里写明升级路径。已验证 tomllib 与 setuptools 都能读取。
门禁
compileall / check_skills --strict(29 技能 0 错误 0 警告)/ check_external(3 项外部依赖就绪)/ test_bin_contracts / security_audit_tools.py validate(13 findings)/ verify-plugin.mjs(14 技能)/ export_diagram.py --check(3 图)全绿。
自 v1.4.1 的完整提交
d23b989docs(license): 定下嵌套单元的授权策略 + 补 pyproject license 字段(根 1.5.0)bb9e567docs(third-party): 补登 cloudflare 来源、更正 diagram-design 许可、收编 md-format-fixer
Full Changelog: v1.4.1...v1.5.0
v1.4.1 — 重验轮收口:独立复核修复 5 条 + 两张图
概览
对 v1.4.0 的三件事:删除竞品调研底稿、对 8 条旧 finding 做一次真正的重验、用 diagram-design 重制/新增配图。
过程中按新规则「发现者不得复核自己」请独立 agent 复核了我刚写的代码 —— 它报出 5 条真问题,并纠正了我自己重验时的 2 处误判。
| 组件 | 版本变化 |
|---|---|
根快照(pyproject.toml) |
1.4.0 → 1.4.1 |
插件 code-security-skills |
1.5.0 → 1.5.1 |
一、重验:祖先检查失败 → 全量重验
git merge-base --is-ancestor 9e705ad7 HEAD → 失败
原始基线 commit 与全部三个修复 commit(3cf0fa8 / 27efcf3 / 1c6d560)都不在 HEAD 祖先链上(历史被重写)。按 reaudit-modes.md Mode 1:跳过 diff-filter,全量逐条回读当前源码,重新建立基线。
基线链:9e705ad(不可达)→ eff13f4 → 96fa48b(→ 本版 d454b29)。**Provenance:** baseline-rewritten 豁免已撤销 —— validate 的 COMMIT 祖先校验重新生效,本次通过即是证据。
二、独立复核:报出 5 条 + 纠正我 2 处误判
复核对象是我在 v1.5.0 新增的代码(validate 等)。由未参与改动的独立 agent 扫描,每条都有可执行证据。
| ID | 严重度 | 问题 |
|---|---|---|
| META-2 | Medium | 一条解析不了的注解会让该 finding 整条跳过全部逐条检查,而 validate 仍打印 PASS —— 门禁退化成摆设 |
| PATH-3 | Low | 路径围栏只报错不拦读:validate 成了任意可读文件的「存在性 + 行数」oracle |
| CMD-1 | Low | --commit=--output=… 被当成 git 选项:写文件 + diff-filter 静默返回「0 个变更」 |
| RES-1 | Low | LINES 无位数上界:py3.11+ 抛异常把门禁搞崩、py3.9 二次方 |
| META-3 | Low | prose 声称 validate 会抓出「标记了 fixed 但改的是另一个文件」,实际只查 COMMIT 是不是 HEAD 祖先 |
它同时纠正了我自己的重验误判
我上一轮判「8/8 已修」,其中 2 条是错的:
- PATH-2 —— 我只在
reaudit-modes.md写了格式约定,agent 的读取路径上根本没有包含性指令;那层自动化自身还可被 META-2 绕过、也不门住校验器自己的读(PATH-3)。 - DEP-1 —— 该 finding 点名两个文件,我只核了一个;
security-fix-skill速查表仍写着atexit清理 "even on crash paths"。
教训已入档:只核对注解里那一个 FILE/LINES,会漏掉「同一句话在别处还有一份」—— 多文件 finding 必须逐个文件核。
有价值的否定结果同样留档
复核逐条排除了 10 类候选,包括:报告 COMMIT= 注入 git merge-base(本就 fail-closed)、FILE= 的词法逃逸(禁 \ : 前导 / ~ ..,且 \S+ 让空白不可能)、CI 步骤静默跳过(退出码传播是对的,是「空转」不是「可绕过」)等 —— 免得下一轮重打。
三、配图(diagram-design)
audit-workflow按当前流程重制:Phase 1 补 Agent D;Phase 2 改为有序五道闸(判别表 → 回读去重 → Self-Check → 独立性复核 → 定级+ID+VERDICT),review.py降为「叠加手段 · 非必过闸门」;Phase 3 要求## Coverage非空并新增## Needs Validation;Phase 4 以祖先检查开头,失败分支写明全量重验+重新基线;工具框补validate。verdict-model新建:注解的两条正交轴(认识态VERDICT× 修复态STATUS)状态机,含「只有confirmed进修复队列」「不确定是一条合法出口,不是失败」,以及validate门带。
两图均过 export_diagram --check / self_check.py / verify-geometry.py(0 finding);coral 各 2 处;无障碍契约(role/aria-labelledby/<title> 首位/带前缀 id/三 marker)逐一核过。
图初版有一处不实文案已修:写「7 条契约检查」,但 META-2 的修复加了第 8 条(标题↔注解对账)—— 与本轮 META-3 属同一类错误。现两图均作 8 条,并把对账呈现为第 0 条、先于逐条校验(零基编号让「先跑」是结构性的,不只是措辞)。
四、顺带修的既存 bug
bin/export_diagram.py的 PNG 导出在 Windows 上恒失败:shutil.which("rsvg-convert")返回…rsvg-convert.EXE,而判据是conv.endswith("rsvg-convert")→ 恒假 → 走成 magick 的 argv 形式(把输出路径当输入文件)。改用 basename 小写前缀判断,并把失败时的 stderr 尾部带进提示。bin/check_skills.py悬空引用检测去盲区:原检测器有意写窄(只认「反引号 + 紧跟 skill/技能」),于是code-review这种漏网引用长期存在 —— v1.4.3 声称修过,实际只改了 SVG 没改正文。改为只认反引号即可覆盖,且经正反双向验证(仓库全量 0 噪声 / 合成坏引用会报 / 上游 superpowers 按策略跳过)。- README 那段 stale Mermaid 声称「Phase 4 只验证变更文件」,与技能现在的行为矛盾 —— 换成实图,并修掉「覆盖范围远超单一 agent」的过度声明。
五、回归测试
tests/test_bin_contracts.py +8 条,其中 PATH-3 用成对用例(陷阱 + 对照)避免空转 —— 复核指出原测试只断言报错文案、从不断言「文件没被读」:
- 解析不了的注解不得静默放行、不得打印
PASS - 不安全
FILE被拒且不再 stat/读(对照组证明读取通道本身是通的) - 超长
LINES报契约错误而非崩溃 --commit选项注入被拒且未产生文件
六、门禁
全部离线、无需密钥,四组合矩阵(ubuntu/windows × py3.9/3.11):compileall / check_skills --strict(28 技能 0 错误 0 警告,含图同步门)/ test_bin_contracts.py / security_audit_tools.py validate(13 findings)/ export_diagram.py --check(3 图)/ verify-plugin.mjs / check_external.py / redeploy-skills.ps1 -Check。
自 v1.4.0 的完整提交
d454b29feat(diagram): 重制工作流图 + 新增注解状态模型图;重验轮收口(1.5.1 / 1.4.1)96fa48bfix(security): 独立复核发现的 5 条 + 两处"半修" + 校验器去盲区eff13f4对标 cloudflare/security-audit-skill 的轻量升级:只取认识论,不取工程学
Full Changelog: v1.4.0...v1.4.1
v1.4.0 — 审计结论契约化:认识态 VERDICT + validate 门禁
概览
本版把代码审计技能的结论形态从"散文 + 只能记状态的注解"升级为"带契约的注解",并对标 cloudflare/security-audit-skill 做了一次刻意克制的升级:只取它的认识论,不取它的工程学。
| 组件 | 版本变化 |
|---|---|
根快照(pyproject.toml) |
1.3.0 → 1.4.0 |
插件 code-security-skills |
1.4.3 → 1.5.0 |
核心:认识态与修复态拆成两条正交轴
注解新增 VERDICT(缺省 confirmed,旧报告零改动兼容):
| VERDICT | 含义 | 允许 SEVERITY | 进修复队列 |
|---|---|---|---|
confirmed(缺省) |
源码证据 + 有界本地验证齐全 | ✅ | ✅ |
needs-validation |
源码路径成立,卡在仓库外的事实上(写 BLOCKER=) |
❌ | ❌ |
rejected |
已被推翻的候选,留档以免下轮重打同一枪(写 REASON=) |
❌ | ❌ |
STATUS 仍是修复态。deferred 不再兼背"测不出来" —— 后者属于认识态。
不确定就不许定级。 把"证据不足的严重问题"改写成"证据充分的轻微问题",是审计里最贵的错误。
validate 契约校验接 CI
bin/security_audit_tools.py 新增 validate 子命令,七类检查:
- ID 唯一且前缀在表内
VERDICT/SEVERITY互斥(confirmed必须有,其余禁止)needs-validation必须有BLOCKER;rejected必须有REASONFILE是安全的仓库根相对 POSIX 路径且真实存在LINES合法且不超出文件实际行数(支持逗号分隔多段)STATUS=fixed必须有COMMIT,且该 commit 是 HEAD 的祖先(provenance)- 报告必须有非空
## Coverage段
"历史被重写"留唯一显式豁免:报告须写明 **Provenance:** baseline-rewritten,validate 会打印 NOTE —— 不可能静默通过。
其余变更
vulnerability-patterns.md:新增「不算 Finding 判别表」17 行 + 4 条全局规则。实测误报率 30–40% 的瓶颈不在"读得不够多",而在每类模式没有排除条件。audit-report-template.md:必填## Coverage、新增## Needs Validation、Re-Audit 加「未重验,沿用旧结论」表。audit-workflow.md:Phase 2 独立性硬化(发现者不得复核自己,Critical/High 换新 agent 回读源码,review.py改为喂 finding + 被引用源码而非散文草稿);Phase 4 两个洞;ID 前缀表补齐。reaudit-modes.md:修 Phase 4 两个洞(修复落在别的文件时fixed认不出、静默沿用旧结论)+ prior-run 纪律表。attack-surfaces.md(新):AI/LLM、供应链/CI、桌面-本地 IPC、资源耗尽、数据隔离 —— 主流程三域不覆盖的面。懒加载,只在侦察发现对应边界时才读那一段。- Agent D(新):业务逻辑 / 功能滥用 / 链式信任边界 / Wildcard。仅 L2/L3 启用,独立于前三个 agent。
- 修
review-skill悬空引用 ×3(该技能已归档 →dev-workflow);CLAUDE.md更新过期依赖链。
validate 上线当天在自身仓库抓出的 3 个真 bug
SECRET-3被静默丢弃 —— 它的LINES=475,510用了逗号,旧正则[\d-]+匹配不上,于是status/list/计数全都少一条(8 条只报 7 条)。纯数据丢失。- 报告
FILE全是子目录基准 —— 而契约要求仓库根相对。这正是reaudit-modes.md早已警告过的"匹配不上 → 静默判为未变更 → 漏报"的来源。 PATH-2行号失效 ——SKILL.md从 300 行瘦到 116 行,LINES=212-216已越界。
明确未采纳(有意为之)
findings.json + JSON Schema + 两个 30 KB 校验器(合计 132 KB)、覆盖率账本 JSON 与 canonical coverage_id(NFC + RFC 3986 百分号编码 + 碰撞检测)、coverage-critic 独立波次与 attempts 存档、预算门禁与四个 incomplete_reason、11 步 artifact promotion、OS 沙箱前置、10 份域伴读(170 KB)。
那套是给"全公司舰队 + 不受信目标代码 + CI 产品"设计的;本仓库的威胁模型是"在已受信的仓库里做审计"。其中 OS 沙箱前置那条照字面执行会封掉读 lockfile、跑已有单测这类零风险高价值检查,属设计缺陷而非严谨。
门禁
全部离线、无需密钥,四组合矩阵(ubuntu/windows × py3.9/3.11):compileall / check_skills --strict(28 技能 0 错误 0 警告)/ test_bin_contracts.py(含 validate 8 组用例)/ security_audit_tools.py validate / verify-plugin.mjs / export_diagram --check / check_external.py / redeploy-skills.ps1 -Check。
自 v1.3.0 的完整提交
eff13f4对标 cloudflare/security-audit-skill 的轻量升级:只取认识论,不取工程学11d9e2dfeat(external): 外部 skill 依赖声明化 + 可校验 + 纳入部署(软失败)bbfde00revert: 撤销"superpowers 不在校验范围"的错误策略c33f678feat(ci): 补 CI badge;校验器不再对上游 superpowers 内容提内容质量意见d1562b1ci: 升级 action 版本消除 Node 20 弃用告警feaa9f4fix(ci): Windows runner 上 UnicodeEncodeError4667fcdci: 加入 GitHub Actions 门禁(4 组合矩阵)+ 一次性自测固化为离线契约测试
Full Changelog: v1.3.0...v1.4.0
v1.3.0 — 全量 DSH 适配 + 技能精简到 12 + 原生视觉适配
v1.3.0 — 全量 DSH 适配 + 技能精简到 12 + 原生视觉适配
⚠️ 破坏性变更
默认注册技能 18 → 12。 四个协作类技能合并为一个,audit / reaudit 合并进审计技能:
| 不再存在的注册名 | 现在用什么 |
|---|---|
issue-skill / pr-skill / review-skill / release-skill |
dev-workflow(场景 A/B/C/D + references/) |
audit / reaudit |
code-security-audit(Phase 4 与状态追踪,见 references/reaudit-modes.md) |
触发词(/issue、/pr、/review、/release、/audit、/reaudit)仍由合并后的技能承接。
被合并的六个技能移入 archive/,每个附 README.md 说明合并原因与原件,内容零丢失(git rename)。
技能精简(18 → 12)
先量化再决定:18 个技能两两的触发词重叠实测 153 对里只有 1 对真冲突,所以问题在结构不在措辞——
同一个工作流被切成多个同级技能,每条都占 catalog、每次都抬高「我该调哪个」的决策成本。
using-superpowers退出 catalog:其 description 是"任何对话开始时",每轮必然命中,
而它本质是元纪律(触发词数 0)。设disable-model-invocation: true——仍可手动调用。
这是本仓库首次使用该字段;verify-plugin.mjs加了断言防止它被静默改回。- 安全簇 4 → 2:
audit(15 行前言,无独立流程)与reaudit(Phase 4 + 状态操作)
合并进code-security-audit。保留security-fix-skill(它是"写代码修复"而非审计)。 - dev-workflow 4 → 1:issue/pr/review/release 本是一条链,共享同一套 remote 约定与
push 权限判据。合并后第 0 步共用判据只写一次。 - 配图边界:
office-tools明确"只处理已有文件",新建图走figure-drawing。
效果:catalog 18 → 12 条,description 合计 4122 → 2942 字符(~1030 → ~735 tokens)。
DSH 兼容适配
对照 DSH 0.1.5 加载器契约逐个校验 27 个技能:0 个会被静默丢弃(无 legacy camelCase 键、
布尔合法、name 与目录名一致)。修掉的实际问题:
security-audit-tools控制台命令此前从未可用:文件名为连字符,无法作为
security_audit_tools导入,导致pip install -e .整体失败 → 改名并补依赖分组
([office]/[plot]/[all])bin/gen-image-mcp.cjs重命名入库(仓库为"type": "module",同名.js必抛
require is not defined)- 新增根级
.gitattributes:此前无根级规则且core.autocrlf=true,导致 SDD 三个无扩展名
bash 脚本被检出为 CRLF 而无法执行;同时补上它们的可执行位 node_modules依赖改用npm install解析(替代会随运行时更新失效的 pnpm 哈希 junction),
白盒自检verify-plugin.mjs恢复可用
引用与内容修复
- 幽灵依赖
code-review:review-skill与code-security-audit此前委托一个全仓库
不存在的技能,PR 级代码评审是死路 → 自带code-review-checklist.md并 rewire origin语义冲突:pr-skill与release-skill对origin的定义相反,同一句
git push origin vX.Y.Z会推往不同仓库 → 统一为origin=你 clone 的那份、
upstream=权威仓库,角色改用gh api .permissions.push判- 按 gh 2.92 实测修正:
issue close --reason "not planned"(原not-planned非法)、
issue develop --checkout/--branch-repo、fixes #N位置、默认分支检测
(原命令返回当前分支) review.py:--json现在显式带出截断状态,截断时 exit 3(此前自动 gate 无法区分
"完整评审"与"只看了头尾")figure-drawing与其自身 reference 就 gpt-image-2 路由的矛盾、本地场景判定表与上游
reference 红线的冲突,均改为显式优先级声明
原生视觉适配(DeepSeek V4.1+)
宿主模型已自带原生视觉,"模型无视觉、靠 vision 代理"的前提失效。vision.py 未删除,
而是角色改变——从"代眼"转为跨模型独立复核:验证环要的是独立性,同模型自评会继承
同一套盲点。(能力被宿主吸收 ≠ 工具作废。)
配图
- 四张图全部核对:
verification-loop重制(画出 native self-review vs cross-model)、
audit-workflow重制(修图里的幽灵引用)、push-access-flowchart按 diagram-design
规范重制(补xmlns——旧.svg缺它导致<img>不渲染)、paper-pipeline确认仍准确 - 新增
bin/export_diagram.py:配图导出固化为可复现链路(HTML 图源 →.svg/.png),
并接入校验器查漂移
工具
check_skills.py升级为清单感知校验器:DSH frontmatter 契约、manifest↔目录一致、
跨文件引用解析、幽灵技能引用、孤儿 reference、插件版本一致、配图漂移、description 上限fig2drawio/consistency_check加固:参数校验、失败可见、结构 JSON 可核对- ✅ 校验器 0 错误 0 警告(含
--strict)· 插件自检通过 · 部署完整性 12/12
v1.2.1 — 归档技能物理移出默认目录
v1.2.1 — 归档技能物理移出默认目录
- 9 个归档/可选 skill 从
plugins/superpowers/skills/移入archive/,默认目录现只保留 18 个默认技能。 index.mjs增加archivedSkillRoots(),验证脚本区分默认目录与归档目录。check_skills.py仍校验全部 skill(含归档),确保归档内容不腐化。- README / skeleton / superpowers CLAUDE.md 同步归档路径。
v1.2.0 — Skill 默认集做减法 + 长文拆分
v1.2.0 — Skill 默认集做减法 + 长文拆分
核心变化
- 默认注册技能 27 → 18:新增
skills.manifest.json,DSH 插件与redeploy-skills.ps1统一按清单注册/部署;9 个 meta/流程 skill 归档默认不注册。 - 长文拆分
references/:TDD、systematic-debugging、subagent-driven-development、code-security-audit、paper-reading、figure-drawing 的完整细节外移,主SKILL.md更轻。 - 场景轻重分级:生产/共享代码走完整流程;个人业余/低风险/探索性项目走轻量路径,不强制全套测试与反复验证。
- 修正若干 description:去掉工作流摘要,改为触发条件 + 能力名。
插件
code-security-skillsv1.4.1:审计主文件瘦身,详细阶段外移references/audit-workflow.md。dev-workflowv1.0.1:review-skill去除对归档流程 skill 的依赖。superpowers本地改版 6.2.0-local:科研自定义 skill 同步瘦身。
其他
- README / skeleton / VERSIONING 同步默认清单与插件版本。
v1.1.0 — 科研骨架基础设施 + 打包 + 多供应商识图
核心重构
llm.py共享 LLM 客户端:统一 key 解析 / 端点覆盖 / 5xx 重试 / 结构化 JSON 输出,4 个脚本去重 117 行review.py结构化 JSON + kill-argument:commit 到单一最强拒绝理由(逼承诺),--json输出纯 JSON 供自动 gate
打包与命令
pip install -e支持:review/vision/office-tools/latex-build等 9 个脚本成 console 命令,不再依赖 junction- 输入截断守卫:超长文本保留头尾截断、超大图片(>15MB)告警
多供应商识图
VISION_PROVIDER一键切换:sensenova/siliconflow,自动带出 URL + 模型 + key;文本/评审不受影响
文档与自进化
skeleton.md全貌索引:8 模块 → skill → 脚本 → 验证方式,作为第一入口self-evolveskill:自进化日志从被动记录转主动闭环- 架构图(figure-drawing 直绘 + vision 验证 9+/10)+ skill 文档迁 console 命令
Claude Useful Skills v1.0.1 — 开源发布(monorepo)
模块化 AI 科研/工程技能集合(MIT)。
结构(monorepo): plugins/(code-security-skills + superpowers fork)· skills/(storage-analyzer)· bin/(共享脚本)· latex-templates/
设计原则: 验证环(跨模型复核)· 场景判定+自进化日志 · 工具不堆积 · 配置走 env
内容: 系统化安全审计 skill + 4 个科研骨架 skill(制图/论文阅读/写作)+ 9 个辅助脚本 + LaTeX 模板库