用途:为 C11 及更高版本的库、系统代码和原生扩展提供编码规范与审查依据;C++ 相关(RAII、模板、移动语义)请参考 ia-cpp-systems 技能。
主要能力:规定工作规则,包括保留仓库既有惯用法与 ABI、明确所有权、检查可失败调用、校验公共边界、断言内部不变量;保护优化器假设之外的可恢复路径,将可恢复检查保留为运行时分支,诊断性断言置于调试预处理守卫之后,并在优化发布构建中验证回退路径;对分阶段初始化做重入防护,在可回调工作前设置进行中标记,失败后需完全释放并重置部分状态才允许重试;对外部输入的遍历设界,分配或窄化前检查大小;仅在命名概念、拥有错误或隔离副作用时引入辅助函数;验证实际重建产物,安全用插桩测试,性能用代表性发布构建。
使用方式:先阅读仓库的 AGENTS.md/CLAUDE.md、公共头文件和两个相邻 .c 文件,仓库惯例优先于本技能规则。若目标是 PHP 扩展(php_*.h、PHP_FUNCTION、zend_、config.m4),先加载 php-extension-c.md,其布局、宏、错误模型、内存与断言均有扩展专属覆盖,内存方面扩展使用请求作用域分配器而非 malloc/free。按主题查阅 implementation-structure.md、runtime-safety.md、build-and-measurement.md,以及 php-extension-c.md、memory-safety.md、correctness-traps.md、legibility-standard.md。
验证要求:在仓库警告配置下零新增警告(全新项目用 -Wall -Wextra -Werror -Wconversion -Wshadow 且零警告);测试套件在 -fsanitize=address,undefined 下零报告;套件链接时 valgrind --leak-check=full --error-exitcode=1 干净;每个新可失败调用点被检查,每个新错误值可追溯到唯一生产者;每个新状态变更叶子带断言;不新增未经许可的 goto、不对外部输入递归、不无命名边界地循环外部输入。
限制:不得将局部修复扩大为全仓库重排风格;具体平台、收费与价格信息暂未提供。