Use when 需要对“已有代码的存量项目”做 Discover(逆向)并把仓库事实沉淀为 `.aisdlc/project/`,且你发现 AI/团队经常猜入口、猜边界、索引与细节双写、或缺证据链导致反复返工。
From sdlc-dev-skillsnpx claudepluginhub zixun-github/aisdlcThis skill uses the workspace's default tool permissions.
本技能用于把“已有代码的存量项目”在一次指令内尽可能完整地逆向沉淀为 .aisdlc/project/ 项目级 SSOT(长期资产),以支撑后续 Spec Pack 的 AI 辅助开发尽量不再重复跑 Discover。
Discover 的核心不是“把代码翻译成文档”,而是把以下三件事立起来(并且能被持续维护):
开始时宣布:「我正在使用 project-discover 技能执行存量项目 Discover(逆向)并建立 .aisdlc/project/ 项目级 SSOT。」
在单次运行结束时,默认应至少产出并自洽以下内容(允许“证据不足→结构化缺口”降级,但不允许脑补):
.aisdlc/project/memory/structure.md.aisdlc/project/memory/tech.md.aisdlc/project/memory/product.md.aisdlc/project/memory/glossary.md.aisdlc/project/components/index.md(含 direct-only 依赖图).aisdlc/project/products/index.md(建议;可按证据决定是否创建).aisdlc/project/components/{module}.md:对每个识别到的 P0 模块尽可能创建并填充到 DoD;对 P1 模块尽可能创建(允许一段契约降级到 Evidence Gaps);P2 默认仅索引占位.aisdlc/project/ops/index.md(以及 monitoring/rollback/runbook 等入口页,能链接到真实平台/配置/脚本时再加).aisdlc/project/(memory / components / products / ops / nfr)requirements/ / design/ / implementation/(那是 spec-* 技能链路).aisdlc/project/contracts/**
.aisdlc/project/components/{module}.md 的固定段落 ## API Contract / ## Data Contract.aisdlc/project/components/index.md 与 .aisdlc/project/products/index.md 不得写不变量/字段/详细流程/“待补”## TL;DR、## API Contract、## Data Contract、## Evidence(证据入口)、## Evidence Gaps(缺口清单)## Evidence Gaps(缺口清单),结构化写清楚“缺什么/去哪找/影响”本技能是“总控编排器”。执行时不要把工作拆成多轮让用户反复触发;而是在本次运行中完成:
为确保输出可维护,Discover 拆成 4 个可交付域(对应现有子技能),但应在一次运行中完成并汇总:
| 你现在要做什么 | 用哪个子技能 | 主要输出位置 |
|---|---|---|
| 盘点“可作为证据的入口”,并做 P0/P1/P2 止损 | project-discover-preflight-scope | .aisdlc/project/components/index.md(priority/owner/code_entry 等)+ 证据入口清单落位到后续 memory/ops |
| 建立 Level-0 北极星与 Level-1 索引骨架(地图层) | project-discover-memory-index | .aisdlc/project/memory/* + .aisdlc/project/components/index.md + .aisdlc/project/products/index.md |
| 逐个把 P0 模块做成“单页模块 SSOT + 契约段落 + 证据链” | project-discover-modules-contracts | .aisdlc/project/components/{module}.md |
| 收敛 Products、补 Ops 入口、做 DoD 勾选门禁、建立增量维护 | project-discover-products-ops-dod | .aisdlc/project/products/* + .aisdlc/project/ops/* + DoD/Delta/过期规则 |
默认策略(尽可能丰富):不把 P0 限制在 1–3 个;在预算允许范围内,尽可能为所有识别到的 P0 都创建模块页并填充到可用门槛。若仓库过大导致无法全覆盖:仍然要完成 memory + index,并为未覆盖的 P0/P1 留下“可追溯的 Evidence Gaps 与候选证据位置”,而不是空白或脑补。
当你面对 2+ 个互不依赖的任务域时,建议使用并行子代理(参考 dispatching-parallel-agents)。本技能的目标明确允许并鼓励把 Modules 与 Products/Ops 拆给独立子代理并行处理。
components/{module}.md)products/*(只写入口级摘要,避免字段/流程大全).aisdlc/project/memory/*.aisdlc/project/components/index.md.aisdlc/project/products/index.md.aisdlc/project/components/{module}.md.aisdlc/project/products/*(不改 components/index).aisdlc/project/ops/*给每个子代理的任务描述必须包含:
## TL;DR / ## API Contract / ## Data Contract / ## Evidence / ## Evidence Gaps)这些借口来自“无技能约束”的基线压测原话。写入这里的目的,是为了在时间/权威/沉没成本压力下,仍能守住 Discover 的硬规则。
| 借口(原话风格) | 最常见违规 | 必须的反制动作 |
|---|---|---|
| “先把文档写全,结构搭满,细节后面再对代码补。” | 索引写细节;TODO 散落;脑补契约 | 先做 Scope + Index 骨架;所有细节下沉模块页;缺证据写 Evidence Gaps,不写推测 |
| “索引太干会没人看,写点说明不用点进去就懂。” | 索引变成细节堆(双写) | 索引只导航:只放链接/复选框/owner/code_entry;细节只在模块页 |
| “没有 Swagger/OpenAPI,先按经验写一版契约,标‘待核对’。” | 契约不权威;字段大全;错口径被放大 | 模块页契约段落只写:权威入口(文件/生成命令)+ 不变量摘要 + 证据入口;缺权威入口→Evidence Gaps |
| “时间紧,先把不确定的用‘待补/未发现’标出来,表示诚实。” | “待补”散落导致永远补不完 | 所有缺口集中到 ## Evidence Gaps,并写:缺口/期望粒度/候选证据位置/影响 |
| “已经写了一半,再改成索引只导航要大改;先交差。” | 沉没成本驱动的结构性违规 | 删除/移动:把索引细节挪到模块页;索引回归导航;不能因为沉没成本违反结构规则 |
| “字段列全一点查起来方便。” | 字段大全(维护爆炸) | 字段级细节只通过权威入口链接(schema/DDL/model);在 project 层只写不变量摘要 |
| “怎么跑/怎么部署是刚需,写在项目级入口最合适。” | 一次性交付细节污染项目级 | 项目级只写入口链接与最小护栏;详细操作手册归 ops 体系或外部平台链接 |
.aisdlc/project/components/index.md 或 products/index.md 里写了不变量/字段/详细流程.aisdlc/project/contracts/**Evidence Gaps)- [x],但模块页缺少固定标题或缺少权威入口/不变量/证据入口在一次指令的末尾,总控必须完成以下校验与回填,确保知识库“能用且不自相矛盾”:
components/index.md / products/index.md 不出现不变量/字段/详细流程/“待补/未发现/TODO”components/index.md 的 Mermaid 依赖图只画 direct-only,并标注交互方式(API/Event/DB).aisdlc/project/memory/structure.md:怎么跑/怎么验/怎么发布的入口(可追溯).aisdlc/project/components/index.md:模块地图(只导航)+ 复选框进度 + 依赖图.aisdlc/project/components/{module}.md(含 TL;DR + API/Data 契约段落 + Evidence/Evidence Gaps)模块是否“完成”,只由模块页内容是否达标决定;索引勾选只是反映这一事实。