ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ECC 规则体系(Rules)解析:Common 通用规则与语言专属规则的加载、扩展与优先级机制

ECC 规则体系(Rules)解析:Common 通用规则与语言专属规则的加载、扩展与优先级机制 ECC 规则体系Rules解析Common 通用规则与语言专属规则的加载、扩展与优先级机制【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC本文以 docs/es/rules/README.md 为核心结合其指向的英文原文 rules/README.md 与仓库中真实的规则文件讲清 ECCThe agent harness performance optimization system的 Rules 规则系统common/通用规则层与 TypeScript/Python/Go 等语言专属规则层如何组织、如何通过 YAML frontmatter 的paths模式按文件路径自动加载、语言专属规则如何在冲突时覆盖通用规则以及如何在 Claude Code 中安装与扩展这套规则。一、两层架构Common 通用层 语言专属层ECC 将编码约定和最佳实践组织为「common 通用层 语言专属目录」两层结构。通用层包含语言无关的原则不出现任何语言特有的代码示例语言目录则在通用规则之上叠加框架/语言特有的模式、工具链和代码示例且每个语言文件都会显式引用其对应的 common 文件。当前仓库rules/目录下的实际结构如下来自 rules/README.mdrules/ ├── common/ # 语言无关的通用原则所有项目必装 ├── typescript/ # TypeScript/JavaScript 专属 ├── angular/ # Angular 专属 ├── vue/ # Vue 3 专属 ├── nuxt/ # Nuxt 4 专属 ├── python/ # Python 专属 ├── golang/ # Go 专属 ├── web/ # Web 与前端专属 ├── react-native/ # React Native / Expo 专属 ├── swift/ # Swift 专属 ├── php/ # PHP 专属 ├── ruby/ # Ruby / Rails 专属 ├── arkts/ # HarmonyOS / ArkTS 专属 └── ... # 另有 cpp、csharp、dart、java、kotlin、rust、perl、fsharp 等语言目录说明docs/es/rules/README.md 以 TypeScript/JavaScript、Python、Golang 三个语言集为重点展开介绍而英文原文和仓库实际目录显示规则集已扩展到 Angular、Vue、Nuxt、Swift、PHP、Ruby、ArkTS 等更多技术栈每个语言目录都是按同一套分层模式组织。1.1 common 通用规则集9 个核心文件西语文档以及 rules/common/ 实际目录列出的通用规则文件及其职责文件职责agents.md代理agent编排与使用方法coding-style.md通用代码风格不可变性、文件组织、错误处理development-workflow.mdFeature 开发流程调研、计划、TDD、代码审查git-workflow.mdGit 提交与 PR 工作流hooks.mdHooks 体系PreToolUse、PostToolUse、Stoppatterns.md通用设计模式Repository 模式、API 响应格式等performance.md性能优化模型选择、上下文窗口管理security.md安全规则密钥管理、安全校验testing.md测试要求TDD、最低 80% 覆盖率这些规则是「硬性标准」性质的例如 rules/common/coding-style.md 要求始终创建新对象、绝不修改已有对象不可变性被标记为 CRITICAL文件组织遵循「多小文件优于少大文件」典型 200–400 行800 行为软上限rules/common/testing.md 规定单元测试、集成测试、E2E 测试三类全部必需并强制执行 RED → GREEN → IMPROVE 的 TDD 循环。二、语言专属规则路径匹配与extends约定西语文档指出的关键机制是规则基于路径path-based应用规则只作用于匹配其 YAML frontmatter 中paths模式的文件。这一点在规则文件源码中可以直接验证。例如 rules/golang/coding-style.md 开头--- paths: - **/*.go - **/go.mod - **/go.sum --- # Go Coding Style This file extends [common/coding-style.md](https://link.gitcode.com/i/22280543644bd7eb2ed4fdc6bdf772e9) with Go specific content.两个关键约定由此确定路径路由frontmatter 的paths字段使用 glob 模式只有当被编辑/被分析的文件命中该模式时这条规则才会被 Claude Code 自动注入。rules/typescript/hooks.md 的paths为**/*.ts、**/*.tsx、**/*.js、**/*.jsx即 TypeScript 专属钩子规则只在这类文件上生效。显式继承声明每个语言专属文件首段都以 This file extends common/xxx.md with specific content 的形式声明它扩展了哪个通用文件既保留了通用原则的上下文又让读者能回溯到通用规则原文。此外英文原文 rules/README.md 还定义了一个「可覆盖标记」约定rules/common/中可能被语言规则覆盖的条目会标注Language note: This rule may be overridden by language-specific rules例如通用层默认推荐不可变性而 Go 层可以声明「惯用 Go 使用指针接收者修改 struct」来合法地覆盖该默认值。2.1 TypeScript/JavaScript 规则集coding-style.md类型系统、不可变性、错误处理、输入校验hooks.mdPostToolUse 钩子——Prettier 自动格式化、编辑.ts/.tsx后运行tsc类型检查、对console.log发出警告Stop 钩子在会话结束前审计所有被修改文件中的console.logpatterns.mdAPI 响应格式、custom hooks、Repository 模式security.md密钥管理、环境变量testing.md基于 Playwright 的 E2E 测试2.2 Python 规则集coding-style.mdPEP 8、类型注解、不可变性、格式化工具hooks.mdblack/ruff 格式化mypy/pyright 类型检查patterns.mdProtocol鸭子类型、dataclasses、context managerssecurity.md密钥管理、bandit 安全扫描testing.mdpytest 框架、覆盖率、测试组织仓库中另有 fastapi.md 覆盖 FastAPI 框架专属约定2.3 Golang 规则集coding-style.mdgofmt/goimports 强制、设计原则接受接口、返回结构体、接口保持 1–3 个方法的小而精、错误处理必须用fmt.Errorf(...: %w, err)包装上下文hooks.mdgofmt/goimports 格式化、go vet、staticcheckpatterns.mdFunctional options、小接口、依赖注入security.md密钥管理、gosec 安全扫描、context 与超时testing.mdtable-driven 测试、竞态条件检测、覆盖率三、规则如何被加载与应用的优先级按 docs/es/rules/README.md 的「Uso」章节这套规则由 Claude Code 自动加载并应用遵循三条规则语言无关common/目录的规则应用于所有项目无条件加载的基线语言专属扩展typescript/、python/、golang/等目录的规则扩展通用规则通过各自的paths模式按文件类型触发路径驱动规则仅作用于命中 frontmatterpaths模式的文件。rules/README.md 进一步明确了冲突时的优先级当语言专属规则与通用规则冲突时语言专属规则胜出specific overrides general这是标准的分层配置模式类似 CSS 特异性或.gitignore的优先级。common/定义普适默认值语言目录在语言惯例不同之处覆盖这些默认值——前文 Go 指针接收者覆盖不可变性原则即为官方给出的示例。四、Rules 与 Skills 的分工docs/es/rules/README.md 所在的整个规则体系需要与 ECC 的skills/目录区分开英文原文 rules/README.md 中的「Rules vs Skills」一节**Rules规则**定义广泛适用的标准、约定和检查清单例如测试覆盖率 80%、禁止硬编码密钥**Skills技能**为具体任务提供深入、可操作的参考资料例如仓库中真实存在的skills/golang-patterns/、skills/python-testing/等目录。语言专属规则文件会在合适处引用相应技能——rules/golang/coding-style.md 末尾即有 See skill:golang-patternsfor comprehensive Go idioms and patterns。规则告诉你做什么技能告诉你怎么做。五、安装方式按英文原文 rules/README.md即西语文档标注的原始文档提供两种安装路径方式一安装脚本推荐一次安装 common 一个或多个语言规则集# 安装 common 一个或多个语言专属规则集 ./install.sh typescript ./install.sh python ./install.sh golang # 一次性安装多个语言 ./install.sh typescript python方式二手动安装将目录整体拷贝到 ECC 专属命名空间用户级# 创建 ECC 规则命名空间仅一次 mkdir -p ~/.claude/rules/ecc # 安装通用规则所有项目必需 cp -r rules/common ~/.claude/rules/ecc/ # 按项目技术栈安装语言专属规则 cp -r rules/typescript ~/.claude/rules/ecc/ cp -r rules/golang ~/.claude/rules/ecc/重要警告原文强调必须整目录拷贝不能用/*打平。common 与语言目录中存在同名文件如都是coding-style.md打平后语言文件会覆盖通用规则同时破坏语言文件内部使用的../common/相对引用。使用~/.claude/rules/ecc/这一 ECC 专属命名空间也可避免与项目中其他规则包命名冲突。项目本地规则同理在项目根目录下使用相同命名空间mkdir -p .claude/rules/ecc后拷贝rules/common与所需语言目录。六、为 ECC 添加新的语言规则集docs/es/rules/README.md 以现有三种语言为示例而英文原文给出了完整的扩展流程——以新增rules/rust/为例创建rules/rust/目录添加扩展通用规则的文件coding-style.md格式化工具、惯用法、错误处理、testing.md测试框架、覆盖率工具、测试组织、patterns.md语言专属设计模式、hooks.mdPostToolUse 的格式化/lint/类型检查钩子、security.md密钥管理、安全扫描工具每个文件以标准的继承声明开头 This file extends common/xxx.md with Rust specific content.若已有相关技能则引用之否则在skills/下新建。对于web/这类非语言领域同样遵循这套分层模式——当某个领域积累了足够的可复用专属指导时即可独立成一个规则集。七、小结结构common/9 个语言无关文件含 coding-style、hooks、security、testing 等 各语言/框架专属目录typescript、python、golang、vue、rust 等语言文件以 extends common/xxx.md 声明继承加载Claude Code 自动加载pathsfrontmatter glob 决定规则作用于哪些文件优先级冲突时语言专属规则覆盖通用规则specific overrides general分工Rules 定标准whatSkills 给操作手册how二者在规则文件中互相引用安装./install.sh language或手动拷贝到~/.claude/rules/ecc/命名空间切勿打平目录。想深入单条规则的具体条款如 Go 错误包装示例、TypeScript 钩子配置可直接阅读 rules/common/ 与各语言目录下的同名文件西语文档中提到的原始英文文档统一位于 rules/ 目录。【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表