用途
yzr-coding-style 是一个公共代码风格规则集技能,面向 AI 代理使用。当代理需要编写或修改代码、需要自行决定代码怎么写时使用,包括新功能、修 bug、重构、重写、补测试等;当用户提到 review、巡检、看看代码有没有问题、代码味等时,也使用该技能作为检查标尺。
主要能力
规则集按以下维度给出具体约束:
- 命名与签名:名表意、同概念全文同叫法、不用含混缩写与单字母;函数名与行为一致。
- 函数粒度:函数超 50 行或内含多个语义段,抽具名函数;难读表达式先用具名局部变量;名字不比函数体多信息时内联。
- 参数与接口:参数超 5 个或同组参数跨函数重复成簇,封装成结构;bool 参数控制分支的拆成具名函数;近似函数仅字面量不同,把差异提成参数。
- 职责与归属:一个单元一个变化理由;只转发不增值的中间层删除。
- 条件逻辑:嵌套超 3 层抽具名函数;正常路径提前返回;同一特殊值检查散落多处时收敛到一处。
- 死代码:没被调用的变量、函数、类,注释掉的代码,走不到的分支,删除;公共出口先确认无外部调用。
- 重复代码:相同或近似块重复出现,抽公共实现、差异参数化;各自独立演化的巧合相似、仅两处且不超过 5 行的短小块,不报。
- 魔法值:承载业务含义的裸字面量提成具名常量;业务配置走配置,不写死在代码里。
- 注释:默认不写,只留删掉会踩坑的 why 与外部契约;复述代码、叙述改动过程、段头横幅、复读签名的 docstring 删除。
- 错误处理:不空捕获、不吞错误返回值、不只记日志后继续;同一模块统一错误传递机制。
- 边界与校验:外部输入在入口校验、非法输入快速失败;内部已校验的不重复校验。
- 接口语义:返回值能区分关键状态,查不到与已失效是两种结果;统计与结果走返回值,不能只打印;可变数据不裸暴露给外部直读直写。
使用方式
技能区分两种工作流:
写代码:明确需求边界与交付位置,需求留白的决策点先列给用户再按最合理默认继续;按规则集编写;交付前逐条对照规则集自查。
巡检:只检查、不修改,输出对话内报告与修改方案。通读目标代码;输入为 git diff / patch 时,发现只落在改动范围,必要时读上下文;超 500 行或多文件、整仓的,先与用户确认分批粒度(按文件 / 按类 / 按函数),发现分批呈现。项目配有 lint 的先跑一遍拿机械命中,命中只作背景;行数、参数个数、嵌套层数等数值阈值先 grep 或 AST 速算拿计数,不凭目测;再对照规则集逐条补齐设计层发现。报告开头 2-4 句理解复述(代码在做什么、结构怎么走,拿不准标存疑);每条发现附规则名、位置与建议;lint 能判定的机械项与琐碎项(个别命名口味、单行写法)不进清单;疑似正确性、性能、安全等集外问题单列一行、指引另行专项,不展开修法;涉及行为变化或已发布 API 破坏性变更的,标注影响。报告交用户,同意后按确认方案修改。
用户显式要求多模型 / 交叉评审时,评审发现改由多模型编排产生,报告与确认步骤不变。
执行原则与立场
按生产代码的维护成本判断;问题根因在结构而不在局部写法时,明确指出局部修补不够并给出方向。写代码照规则集,规则未覆盖的情形按立场裁量;巡检只以规则集为发现依据,集外问题不报。
适用场景
新功能开发、bug 修复、重构、重写、补测试;代码 review、巡检、检查代码问题等。
限制
巡检只交付对话内报告与修改方案,不直接修改代码;集外问题(正确性、性能、安全等)不展开修法,仅单列指引;规则未覆盖的情形需按立场裁量。其余具体平台兼容性、安装方式等暂未提供。