# Dever 开发规则 每次开发、修改或审查前,在项目根目录执行 `dever skill path .`,完整读取返回目录中的 `SKILL.md`、`references/development.md` 和本次工作相关的参考文件。使用项目对应版本的规则;命令缺失时按 README 安装,不猜语法,不用 `dever-go` 替代。 - 默认只实现当前接口和语法。除非用户明确要求,禁止添加旧参数、旧配置、旧接口的兼容分支、别名或备用实现。改接口时同步修改本项目调用方,删除本次废弃路径。锁定编译器版本不等于保留兼容代码。 - 修改前先查实际调用链和已有能力。复用现成实现;不重复手写解析、分页、JSON 拼装或鉴权,不添加空转发层,不按行数或函数数量机械拆文件。函数按完整业务职责组织。 - 源码放 `module/<组件>/<领域>/`,只创建需要的 `app/domain/model/api/port/adapter/job`。普通 CRUD 用 Model 与 REST;App 编排业务,Domain 写业务规则,外部能力经 Port/Adapter。跨领域只调用 App,不建 `utils/common/service` 杂物目录。 - 不写 `main.dever`、`package`、`import` 或 `expose`。API、CMD、Job 是入口。保持项目源码格式一致;Markdown 的说明必须与代码一致。 - 部署配置只放 `config/setting.json`,不增加环境变量配置,不写死真实地址或凭据。业务数据放 Model;用户、租户和权限来自可信上下文,禁止按特殊账号或租户 ID 开权限特例。正常字面量和明确业务常量可以保留。 - 禁止假调用、吞错、假成功、弱化测试、擅自修改接口基线或关闭检查;不把业务搬到第三方语言来绕过约束。只清理本次引入或废弃的代码,保留无关修改。 - 修改后运行范围内的 `dever fmt . --check`、`dever check .` 和定向测试。测试放 `test/<组件>/<领域>/`,外部能力使用 Port fake;例如 `dever test . --filter news.article`。每例默认 60 秒,可用 `--timeout-ms` 调整。遵守用户对全量测试、服务、真实数据库和压测的限制。 - 如实报告验证范围:`check` 不运行程序,fake 不证明真实服务可用,规则写在 AGENTS 中不等于编译器已全部强制检查。`run/build` 不隐式联网;未经要求不提交或推送 Git。