用途
在仓库中写入一条长期有效的架构指令:在架构层面应用 SOLID,并以“童子军规则”限定范围。整段规范只作用于当前正在编写的代码,以及当前流程已经流经的代码,绝不作用于整个仓库;代码库通过一次次的改动逐步收敛。每个仓库只需运行一次。
主要能力
- 探索仓库:写作前先阅读仓库,不臆测。需要弄清:语言与代码分组方式(packages、文件夹、服务);哪些文件夹存放策略(领域/业务规则),哪些存放细节(数据库、HTTP、SDK、文件系统);根目录的 CLAUDE.md 与 AGENTS.md 是否存在、是否互为符号链接、是否已有 SOLID 段落或与之重叠的架构/编码规范段落;monorepo 信号(pnpm-workspace.yaml、package.json 的 workspaces 字段、带各包 CLAUDE.md 的 packages/*);GLOSSARY.md 中的领域词汇;ADR(.agents/adr/、docs/adr/);依赖当前如何注入、测试当前如何替换。完成条件是能用仓库自身的路径指出策略在哪、细节在哪、两者如何接线、测试如何替换细节。
- 判断是否适用:如果没有策略/细节的划分就停止,不写该段落(文档仓库、薄脚本仓库、提示词文件仓库都没有需要塑造的 IO 边界);如果划分存在但很薄,提供精简版(仅 SRP 与 OCP,不含“In this repo”块,并说明删减了什么)。
- 起草并确认:向用户展示填好占位符的完整段落;只询问真正需要分支的问题(哪个文件、含糊之处);主动暴露重叠的规范段落和 ADR 冲突,而不是悄悄解决。
- 写入:优先编辑 CLAUDE.md,否则 AGENTS.md,否则用户指定的文件;已有其一则不创建另一个;互为符号链接时只写一个路径。若已存在 SOLID 段落(任意标题层级或大小写),就地更新而不追加第二份。
- 收尾提示:告知用户编辑了哪个文件、SOLID 现已作用于新代码和每次改动触及的代码、其他技能的行为会随之改变(审查类技能会把文档化的仓库标准视为优先于自身基线,实现类技能写代码时会读取这些条目)。
段落结构
写入的段落包含:架构层面的 SOLID 总述;“Scope: boy scout rule”范围说明;“In this repo”块,填入仓库真实的策略路径、细节路径、接线约定和测试替换约定(用具体 glob,如 src/domain/**,而非类别);以及作为架构规则的 SRP、OCP、LSP、ISP、DIP 五条原则和应用要点(跨 IO 边界时从策略侧定义接口并注入实现;只有在测试会替换时才值得引入接口;模块与接口命名使用仓库领域词汇)。若 ADR 覆盖某原则,保留该条并在行内注明例外及所引 ADR。
使用方式
安装并运行一次即可;只需在需要重塑段落本身时重新运行,直接编辑段落也可以。
限制
- 正文始终为英文,与其余编码标准一致,无论仓库散文使用何种语言。
- 不适用于没有策略/细节划分的仓库。
- 不进行仓库级 SOLID 重构,除非明确要求。
适用场景
希望把架构级 SOLID 以渐进方式固化到单个仓库,并让后续技能与改动一致遵循的项目。