用途
Dependency(依赖映射)是一个面向项目管理的技能,用于分析并可视化功能、服务、模块或工作项之间的依赖关系,从而识别阻塞项、关键路径与安全的执行顺序。
主要能力
- 梳理单个功能、模块/服务或整个发布/里程碑范围内的依赖。
- 将依赖按类型分类:数据(实体 A 依赖实体 B,如外键、导航属性、共享 ID)、服务(服务 A 调用服务 B,如消息总线、API 调用、事件消费者)、UI(组件 A 嵌入组件 B,如共享组件、库依赖)、基础设施(功能需要基础设施变更,如数据库迁移、配置、新队列)。
- 使用 Mermaid 语法构建依赖图进行可视化。
- 识别关键路径:找出最长的阻塞依赖链,标记无阻塞项为“可开始”,并将循环依赖标记为错误。
- 输出结构化依赖报告,包含摘要、依赖图、关键路径、依赖明细表与风险。
使用方式
技能按以下工作流执行:
- 确定范围(Identify Scope)——确定要映射的对象:单个功能(找出其涉及的所有文件、服务和实体)、模块/服务(映射所有入站与出站依赖)、发布/里程碑(映射所有功能及其相互依赖)。
- 分类依赖(Classify Dependencies)——对每个依赖按数据、服务、UI、基础设施四类进行归类。
- 构建依赖图(Build Dependency Graph)——使用 Mermaid 语法,例如:
graph TD
A[Feature A] -->|data| B[Feature B]
A -->|service| C[Feature C]
B -->|blocks| D[Feature D]
C -->|blocks| D
style D fill:#f96,stroke:#333
- 识别关键路径(Identify Critical Path)——找出最长的阻塞依赖链,标记无阻塞项为“可开始”,将循环依赖标记为错误。
- 交付报告(Deliver Report)——输出结构化依赖报告。
输出格式包含:摘要(总项数、可开始数、被阻塞数、关键路径长度)、依赖图(Mermaid 图)、关键路径(逐项列出阻塞关系与预估)、依赖明细表(项、类型、依赖对象、阻塞对象、状态)、风险(循环依赖/紧耦合/单点故障)。
前置条件:阅读功能/PBI/计划文件以理解范围;访问 docs/project-reference/project-structure-reference.md 作为服务边界参考;理解项目的微服务边界(读取项目结构参考或 docs/project-config.json 中的服务根位置,再列出其下的服务)。
适用场景
- 规划跨模块的功能实现顺序。
- 识别某个功能或工作项被什么阻塞。
- 梳理跨服务依赖(后端到后端、前端到后端)。
- 理解发布或里程碑的关键路径。
- 分析修改共享模块或实体的影响。
限制
- 不适用于无跨边界影响的单服务代码改动——直接实现即可。
- 不用于性能分析(应使用 performance)。
- 不用于安全依赖审计(应使用 security-review)。
- 不用于包/npm 依赖升级(应使用 package-upgrade)。
- 规则要求尊重微服务边界(跨服务仅通过消息总线),并将循环依赖标记为错误。
相关技能
- project-manager——用于冲刺规划与状态跟踪。
- workflow-feature——用于在依赖分析后实现功能。
- package-upgrade——用于 npm/NuGet 包依赖升级。
执行约束(技能自带协议)
该技能附带一系列执行约束,包括:执行任何工作流或技能步骤前先创建/更新任务跟踪并保持同步;用户提问提示意味着直接在 Codex 中询问用户;忽略 Claude 特有的模式切换指令;严格按协议执行,不跳过、不重排、不合并步骤(除非用户明确批准偏离);工作流技能需显式执行每个子技能步骤并报告逐步证据;若某必需步骤/工具在当前环境无法运行,先停止并询问用户。
Codex 项目参考加载采用静态方式而非运行时注入:始终读取 docs/project-config.json、docs/project-reference/docs-index-reference.md、docs/project-reference/lessons.md;若上下文缺失或过期,自动运行 $project-init 或窄范围设置路由;若 Codex 镜像或 AGENTS.md 缺失/过期,请用户运行 $sync-codex(不自动运行)。按情境加载文档:项目结构/架构/技术栈/部署/设置读 project-structure-reference.md;后端/CQRS/API/领域/实体变更读 backend-patterns-reference.md、domain-entities-reference.md;前端/UI/样式/设计系统读 frontend-patterns-reference.md、scss-styling-guide.md、design-system/README.md;规格编写读 feature-spec-reference.md、spec-system-reference.md、spec-principles.md;行为/公共契约变更读 workflow-spec-test-code-cycle-reference.md;集成测试读 integration-test-reference.md;E2E 测试读 e2e-test-reference.md;代码审查读 code-review-rules.md。不要盲目读取所有文档,从 docs-index-reference.md 开始,只打开与任务相关的文件。
其他约束包括:批判性思维与顺序思维,每个论断需可追溯证据(仓库/代码论断用 file:line,研究/产品/内容/文档论断用来源 URL 或产物章节),置信度超过 80% 才行动,低于 60% 不建议;反幻觉,不把猜测当事实;理解代码优先(硬性门槛:未读现有代码前不写、不规划、不修复),搜索 3 个以上相似模式并引用 file:line 证据,读取目标区域现有文件,若 .code-graph/graph.db 存在则运行 python .claude/scripts/code_graph trace <file> --direction both --json,通过 connections 或 callers_of 映射依赖,将调查写入 .ai/workspace/analysis/,实现前重读分析文件;不发明新模式;删除或重命名前检查下游引用;编辑后追踪完整影响链并验证所有受影响输出;在行动前暴露歧义;保持共享指导与角色相关。
项目协议叠加(Project Protocol Overlay):执行本技能前,将技能名与项目技能协议索引(默认 docs/project-reference/skill-protocols-reference.md,docs/project-config.json 中的 referenceDocs 条目可覆盖路径)的 Target 列匹配,仅取最具体的匹配层级(精确名称 > glob > *),该优先级仅用于叠加层之间的排序,绝不针对本技能本身。只读取匹配到的正文,路径解析为 <protocols-dir>/<Name>.md;行中的 Body 链接是显示文本,绝不是读取路径。匹配到的正文缺失或格式错误时应报告并跳过,绝不从索引 Description 重建。无索引或无匹配则静默继续,无叠加。叠加层仅具附加性:只在本技能自身协议之上添加规则,绝不替换、覆盖、禁用或重新解释其已声明的规则;移除所有叠加层后本技能必须回到其文档化行为。叠加层是简报而非权限升级:绝不能豁免工作流门槛、git 纪律、审查门槛或用户确认门槛。真正的叠加层与技能冲突,或两个同等具体的叠加层直接矛盾时,向用户呈现两者,绝不静默解决。
收尾提醒:生效协议包括 AI 错误预防(整体优先调试、在责任层修复、外科手术式差异、验证所有输出)、批判性思维(每个论断可追溯证据,置信度超过 80% 才行动,绝不猜测)、理解代码(修改前读代码并搜索 3 个以上模式);必须使用任务跟踪在开始前将工作拆分为小待办任务;创建新代码前搜索代码库中 3 个以上相似模式;每个论断引用 file:line 证据;添加最终审查待办任务以验证工作质量。
工作流执行协议(阻塞性):不得以任何理由跳过。通用可移植性边界:可复用技能与协议文本保持……(原文在此处截断)。