| name | ccdawn-code-structure-guard |
| description | Use when active development or explicit refactoring has concrete code-structure risk: a source file is accumulating independently changing responsibilities, a class/component/function is hard to navigate or test, repeated changes touch distant sections, or the user asks to split a giant file; do not use for line count alone, generated/vendor/migration/schema/fixture files, or cohesive modules that remain easier to maintain together. |
| license | MIT |
CCDawn 代码结构守卫
目标
防止本轮开发继续制造多职责巨型文件。只提取稳定职责,不为压低行数制造薄包装、转发层或碎片目录。
BRT interface
- Context Boundary: 已对齐结果、当前开发 owner、目标文件、相邻模块、调用方、测试和允许写入范围。
- Output Contract:
STAY / CHECK / SPLIT 判断;必要时完成最小职责拆分,并保持公共行为和验证证据。
- Allowed Action: 读取目标、调用方和测试;在授权 scope 内提取代码并验证;不重写模块、改变公共行为或全仓扫描。
- Success Evidence: 目标行为保持,提取单元具有可说明的职责和依赖边界,相关测试/类型/构建检查通过,且没有新增无价值抽象。
- Stop Condition: 行数是唯一信号、文件仍保持单一内聚职责、拆分会扩大用户范围、缺少行为保护,或需要公共 API/架构取舍。
- Route Out: 当前开发 owner、
ccdawn-planning、ccdawn-pr-review、ccdawn-simplification-review、ccdawn-development-cleanup、ccdawn-brt 或 BLOCKED。
统一调用契约
- 只处理 BRT interface 范围;不匹配时回
ccdawn-brt 或当前 owner,不接管功能、Bug、性能或普通审查。
- 用户可见内容默认中文,只报结构决策、修改、证据和风险;保留代码、命令、路径、API、skill 名和枚举;Route Out 仅以 BRT interface 为准,末行写
下一步建议: <一个具体动作>。
三档结构闸门
STAY:职责内聚且修改位于同一行为边界。继续开发,不输出结构报告。
CHECK:接近项目阈值、修改跨远距离区段或可能形成第二职责。检查 imports/exports、状态所有权、调用方和测试;证据不足即 STAY。
SPLIT:至少存在两个独立信号,例如多个领域/层/生命周期混在一起、不同部分独立变化或复用、测试与所有权边界可分、反复修改造成导航或合并冲突。由本 skill 完成最小拆分。
优先使用项目规则;没有规则时,函数约 75 行、类/组件约 300 行、源文件约 500 行 只能触发 CHECK,不能单独触发 SPLIT。手写源文件超过约 800 行时优先检查,仍按职责判断。
默认排除 generated、vendor、migration、schema、fixture、快照、声明式数据和明确的单文件产物。
最小拆分
- 读目标、直接调用方和最近测试,只定位本次职责,不扫描全仓排行榜。
- 候选单元须能用一句话说明职责;仍共享大量私有状态时不拆。
- 优先提取完整行为、领域服务、独立组件或适配边界。类型、常量和 helper 只有独立消费者或所有权时才成文件。
- 保持公共 API、导入路径、错误语义和顺序;一次只移动解除当前风险的部分。
- 运行最近行为测试及必要类型/构建检查;纯移动也检查 imports、初始化和 mock/patch 路径。
拆分没有降低耦合、认知负担或未来冲突时,撤销本轮自己的结构修改并保持 STAY。
低噪声约束
- 不默认生成规划文档、结构评分、长度榜、worktree、子 Agent 或严格 TDD。
- 不设统一行数硬门槛;普通 PR 仍由
ccdawn-pr-review 主责。