agentleFS
limoaCatherinelimoaCatherine/game-studio-harness/skills/dependency-map/SKILL.md

dependency-map

Skill4 starsChanged 53 days agoMITView on GitHub

用边表/图工具映射系统依赖契约,跑环检测算法并输出并行组与裁剪扇出。触发:依赖图、dependency map、循环依赖、拓扑排序。

4 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Files
SKILL.md

系统依赖怎么画与拆环

何时用

  • 系统索引有了但边与契约不清
  • 并行开发踩脚或疑似循环依赖
  • 裁剪范围需知连带断裂症状
  • 接口合同要对齐上下游读写方

怎么做

1. 锁范围、边类型与工具面

  1. 从 systems-index-map 截取本图系统集;写本图要回答的问题句(如「这三系统能否两人并行」)。
  2. 边类型固定四类并统一图例:DataIO(数据输入输出)/ Struct(B 插在 A 框架上)/ UIWrap(UI 包裹)/ Seq(必须先上线)。
  3. 声明不画的边(纯美术引用、纯文案),避免噪音;粒度统一为系统级或模块级——混粒度会假环。
  4. 选工具面:手写边表(Markdown/CSV)或图工具(Mermaid flowchart / graphviz / 项目依赖看板);节点 id=系统稳定名。
  5. 输出范围卡:systems_set | question | edge_types | tool | non_goals;缺档位/名单向用户索取。范围卡未冻结不得开始标边。

做到:范围与边类型固定;工具面已选;粒度统一。

2. 逐边填契约字段

  1. 边表列写死:from | to | type | event_or_table | key_fields | writer | reader | break_symptom | audit?。
  2. 契约最低字段集:事件名或表主键 | 写者 | 读者;空契约标 UNAUDITABLE,边必须带契约三件套,不只画盒子。
  3. 每个玩法系统至少检查是否有 UIWrap 边;缺失则补边或写「无 UI 风险+接受理由」。
  4. Struct 边写清「插在谁上」;Seq 边写清「为何不能并行」(数据未就绪/框架未挂)。
  5. 断裂症状写成玩家或制作侧可观察句(如「商店打开白屏 Missing 配置」)。
  6. 契约与代码/表对不上(grep 事件名或 sheet 主键):改边或开接口任务,统一命名。

做到:每边有契约三件套+断裂症状;UI 依赖未漏或已接受。

3. 拓扑排序与环检测算法

  1. 建邻接表:仅用有向边 from→to(依赖方向全文一致)。
  2. 跑 Kahn 拓扑:计算入度;队列入度为 0 的节点;弹出时减少邻接入度;若处理数 < 节点数 → 存在环。
  3. 环提取:在剩余入度>0 子图上 DFS 着色(白/灰/黑),灰遇回边即报环路径 n1→n2→…→n1。
  4. 对每个环给拆法选项:抽接口(倒转边+契约)/ 合并系统 / 降为弱依赖(事件异步);写选用后对并行面影响。
  5. 环未处置前,并行完工日保持未承诺;输出 layers | parallel_groups | serial_chains | cycles_and_fixes。
  6. 对照索引优先级:若依赖要求 A 先于 B 但优先级相反,列入矛盾表请用户当场裁一条并留记录。
  7. 算法结果与手画图不一致:以邻接表重跑为准,回步骤 2 改边。

做到:环已检出并拆或已决策;并行组/串行链可指;优先级矛盾已裁或已列。

4. 交付图、扇出与版本

  1. 导出依赖图(Mermaid/SVG)+ 边表路径;图版本与 systems-index-map 版本对齐。
  2. 对 scope-cut-decision 候选系统列下游扇出:cut_system | downstream | break_symptom | severity。
  3. UNAUDITABLE 与空契约汇总交 feature-gdd-slice 接口节补全。
  4. 加系统或改边类型后必须重跑步骤 3;不重跑不得沿用旧并行组。
  5. 涉及产品表字段的契约变更:沙盒 excel-com-write,晋升 tunable-table-diff。
  6. 抽检:任选一并行组,确认组内无直连有向边;有边则回步骤 3。

做到:图与边表可引用;扇出可裁;版本对齐;并行组无隐性边。

做到

  • 边表含契约字段与断裂症状
  • Kahn+DFS 环检测已跑;环已拆或已决策
  • 并行组与串行链明确;优先级矛盾已处理
  • UIWrap 未漏或有接受理由;裁剪扇出表已出;图版本与索引对齐

失败回哪一步

  • 范围卡未冻、混粒度、问题句不可答 → 回步骤 1
  • 只画盒子无契约、断裂症状=「会坏」、双名 → 回步骤 2
  • 环上仍承诺并行、优先级矛盾未裁 → 回步骤 3
  • 沿用过期并行组、扇出空、版本不对齐 → 回步骤 4(重跑 3)

下一步常接:feature-gdd-slice 接口节;裁剪 scope-cut-decision。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.