architecture-docs · git:20261011.d6d08d8 · 2026-10-11 · sha256 d9c7d2a46922e3c7
architecture-docs git:20261011.d6d08d8A
Immutable. This exact content never changes and is served at /api/v1/blob/d9c7d2a46922e3c7.
--- name: architecture-docs description: >- 判断项目是否需要架构文档,或生成、完善、审查 ARCHITECTURE.md 及已有架构说明。用于模块分工、状态归属、依赖关系或核心流程需要梳理时;依据项目证据记录结构,区分当前实现与已确认设计。 --- # 架构文档 先判断是否需要,再处理文档。目标是让接手者理解系统、判断修改影响;本 Skill 不替项目制定新的架构规范或改造代码。 ## 1. 判断是否需要 读取已有入口、架构说明和本次相关资料;有代码时核对关键入口、配置、调用与状态写入,尚未开发时核对已确认设计。 - **需要新建**:模块分工、共享状态或跨模块流程不直观,接手或修改前需要反复探索,而现有资料没有可靠说明。 - **沿用现有文档**:已有可定位的架构主记录,先检查它是否够用,缺什么补什么,不因文件名不同再建一份。 - **暂不需要**:结构简单,现有入口和代码已能说明关系;简述依据及未来需要补充的信号。 - **证据不足**:列出影响判断的未知项;不要凭目录名猜结构,也不把缺少资料直接判为“不需要”。 例如:单个脚本读表后导出结果,通常不需要;订单横跨 API、队列和库存服务,状态由谁修改说不清,就值得记录架构。 输出结论、依据和建议位置。用户只问是否需要或要求审查时保持只读;生成、完善在既有授权范围内执行。 ## 2. 写清关键关系 复用已有主记录;确需新建时可用根目录 `ARCHITECTURE.md`,参考 `templates/ARCHITECTURE.example.md`,只保留适用部分。模板中的分层和约束是示例,不是目标项目事实。 | 内容 | 写到什么程度 | |---|---| | 模块分工 | 关键模块各负责什么、真实入口在哪;不逐项登记普通目录 | | 状态归属 | 关键数据由谁保存、谁能修改、通过什么路径修改;现有多方写入如实记录,问题另列 | | 对外接口 | 调用方需要知道的接口入口和约束链接;字段、错误码留在机器契约或代码定义 | | 依赖关系 | 记录实际依赖;已确认的允许/禁止依赖单独标明,不把建议当既有规则 | | 核心流程 | 只解释不直观的主要链路;图中注明箭头含义,代码依赖与运行时数据流分开 | | 可替换实现 | 确实存在多个实现或明确替换点时再记录,不为完整而补出抽象层 | 每项关系应能追溯到代码、配置或已确认设计。未实现的设计标为计划,证据不足标未验证;现状与约定冲突时分别记录,不替任一方编造一致性。 选择理由链接到 ADR,详细接口链接到契约;从项目现有入口或 MAP 链接架构主记录。内容过长时下沉模块细节,主记录保留总览和指针。 ## 3. 模块文档与代码边界一致性 模块建档与约定维护的编排由 [module-governance](../module-governance/SKILL.md) 按用户意图选择;本 Skill 只承担架构说明和以下边界核对,纯审查不启动写入,也不定义领域词义。 ### 证据核对步骤 模块入口写法委托 `agent-entrypoints`,术语与决策委托 `context-and-decisions`,契约委托 `contract-first`。根 MAP/已有架构总览只保留模块路径和关系,不额外强制创建 CONTEXT-MAP。按本次影响范围执行以下核对,先只读,不凭实现反向批准设计: 1. **固定范围。** 记录提交或工作区版本、受影响模块及直接消费者;读取根/父级/模块入口及其契约、术语和生效决策。源码与说明缺失分别标未验证,不以目录名猜上下文。 2. **提取约定。** 找到职责、公开入口、私有实现、状态拥有者、允许/禁止依赖与跨上下文映射。区分 accepted、proposed 和历史决策;没有明确禁止规则时只报新增依赖待确认,不擅自判违规。 3. **逐条找代码证据。** 从实际导入、调用、路由/消息配置与数据写入追踪到目标定义,核对是否越过公共入口、修改他模块拥有的状态、遗漏消费者或改变契约。`rg` 命中仅是线索:补查重导出、路径别名、依赖注入和异步调用;动态路径无法确认就保留缺口。不要只检查文件名或注释。 4. **核对业务语义。** 对照术语适用范围、状态流转及测试,不把不同上下文合理的同名词判成冲突。代码与约定冲突同时展示两方证据;未经业务确认不改文档迁就代码,也不借审计重构实现。 5. **执行已有验证。** 复用项目已有依赖约束检查、契约测试和相关模块测试,记录命令、环境、范围、版本与退出码。入口长度用已有计数脚本。没有边界检测器时做明确范围的证据审查,不把全量文档审计通过等同于依赖/状态隔离通过;不自动安装新工具或 hook。 6. **交付并复验。** 每项写“模块/约定位置 → 代码证据 → 一致/冲突/未验证/不适用 → 建议与验证”。修复在已有授权内进行;业务取舍待确认。实际改动后由 `change-impact` 核对受影响关系、`docs-maintenance` 同步主记录,避免把本流程再次递归启动。 场景与预期结论见 [模块边界核对示例](examples/module-boundaries.md)。这是 Agent 证据审查工作流,不是通用 DDD 静态分析器;文档不能替代领域模型中的业务行为和可执行测试。 ## 4. 核对是否有用 - 从一个关键业务流程出发,能否找到涉及的模块、状态和接口,并说明修改会影响哪些关系? - 抽查关键关系与当前代码或确认材料是否一致;过时模块、漏记依赖和状态归属冲突列出具体位置与依据。 - 路径和链接是否有效,是否重复了其他主记录,是否混淆现状、计划与建议? 完成时返回必要性结论、采用的主记录、检查范围与发现。只读审查给建议;已授权修改后复核受影响关系与链接,明确剩余未知项。文档正确不等于代码架构合理,也不代表业务测试通过。