Skills · Claude Code · Agent Skills

已有的 C 代码不能变成漏洞,没有商量余地。

用于维护现有 C 代码的防御性底线:CI 中运行 sanitizer、-Werror、明确所有权以及解析器模糊测试。新组件用 Rust 或 Zig 编写,C 只能通过例外 ADR 引入。

v0.4.0Disciplina · C defensivogithub.com/schematizeme/skill-c

维护者 Lucas Andrade

schematize-c · v0.4.0bash
$ schematize install c
GitHub →下载技能 (.zip)/c-help · github.com/schematizeme/schematize-cli

不可妥协的底线

绝不为了“更快”而关闭。完整清单见该技能本身。

新组件用 Rust 或 Zig

C 只能通过例外 ADR 引入,不能凭适配度选择,或仅用于已有代码。

CI 中运行带 sanitizer 的测试

有线程时使用 ASan、UBSan 和 TSan;UBSan 加 -fno-sanitize-recover=all,避免缺陷已在日志中而 CI 仍显示通过。

会认真对待警告的构建

-Wall -Wextra -Werror -Wconversion;_FORTIFY_SOURCE 需要 -O1 及以上,否则不起作用。

所有权与返回值检查

每个 malloc 都有明确的所有者,free(p); p = NULL;,并检查所有返回值,包括部分 write 和 snprintf。

禁用函数

禁止 gets、无长度限制的 strcpy/strcat/sprintf、不带宽度的 scanf("%s")、可变大小的 alloca 以及 system()。

模糊测试与正确的原子操作

解析器在 CI 中使用带版本的语料库做模糊测试;使用 stdatomic.h,绝不用 volatile。

命令

安装在 .claude/commands/。随时运行 /c-help。

/c-cc上下文压缩:将交接文档(上下文+清单)写入 archive,并运行 /compact。
/c-claude在仓库根目录创建或合并 schematize-c 的常驻 CLAUDE.md,不覆盖其他技能的区块。
/c-handoff不压缩,将上下文交接文档写入 archive:用于会话结束或切换任务。
/c-help列出该技能的所有命令。
/c-load强制加载 schematize-c 的全部规范内容,并在本次会话中应用。
/c-review对照底线审查 .c/.h 与构建:运行 gate(代码+构建),并阅读机器读不出的部分(sanitizer、内存、外部输入、适用范围)。

面向 AI 代理

无需人工介入即可安装。元数据见 llms.txt。

  • 运行:git clone https://github.com/schematizeme/skill-c.git && ./skill-c/install.sh
  • 或下载 https://github.com/schematizeme/skill-c/releases/latest/download/skill-c.zip 并解压到 .claude/skills/。
  • 将 assets/CLAUDE.md 复制到仓库根目录(常驻规则)。
  • 用 /c-help 确认。

不想安装?

阅读完整规范并直接复制到你的项目——或安装该技能,让智能体自动执行。