skill-gap-analysis · git:20260730.6ee304a · 2026-07-30 · sha256 aff2c4b089957c3b
skill-gap-analysis git:20260730.6ee304aA
Immutable. This exact content is served forever at /api/v1/blob/aff2c4b089957c3b.
--- name: skill-gap-analysis description: Skill 缺口与大语料分析 Owner — 当任务涉及项目/工作区产物扫描、能力盘点、缺少哪些 Skill、全量审查前规模判断、大目录分批、抽样深读、扫描恢复或自我进化候选发现时使用;要求先识别项目并形成规模决策,再进行有边界的证据扫描。 --- # Skill Gap Analysis ## 职责 在分析、审查或能力盘点前先判断目标项目和语料规模,再选择一次性、分批、抽样深读或阻断路线;完成扫描后,把领域信号与现有 Skill Owner、消费者和验证路线交叉去重,形成可复证的缺口决策。 ## ProjectArtifactScaleRoutingGate 任何 broad scan 前必须按顺序执行: 1. 识别唯一 `project / root / activeRoot`;未识别时停止,不得扫描整个工作区。 2. 只做 bounded inventory,显式排除 `node_modules/dist/cache/tmp/backup/smoke/deploy mirror` 等派生产物。 3. 统计 `relevantFileCount / parseableBytes / largestFileBytes / directoryConcentration / derivedArtifactRatio / consumerFanOut`。 4. 形成 `ScaleDecisionRecord`,再允许内容读取或递归检索。 ## WorkspaceRootScanBan(C16 / PI-20260724-01 · 防复发硬规则) > 🔴 未绑定唯一项目前,**禁止**对 workspace/monorepo 根发起递归 inventory。项目路径已知时,**禁止**再从 workspace 根 `-Recurse` 查找。 | 禁止 | 允许 | |------|------| | `Get-ChildItem <workspaceRoot> -Recurse`(含 `-Depth ≥1`、按名 Filter 全树搜) | `list_dir` 仅一层;`Test-Path <workspaceRoot>/<project>` | | `dir /s <workspaceRoot>`、`find <workspaceRoot>` 无项目前缀 | 在**已绑定** project root 内有界 Recurse,且排除 `node_modules`/`dist` | | 为「找项目」扫整个 `E:\Worker` 等 monorepo 根 | 用户 `@path` / 已知子目录名 / Profile inventory | | inventory 展开 `node_modules`、文档站 `doc_build`、巨型 `dist` | 显式 `-Exclude` / 工具默认尊重 gitignore 的列表 | **机器探针**:`scripts/lib/host-parity-scorecard.js` → `classifyWorkspaceRootScanSample`(`workspace-root-recurse` = fail)。Hook 侧对命中 workspace 根 + Recurse 的 shell 可 `neverApprove` 硬拦(见 `lifecycle-dangerous-command`)。 ## TimeToFirstValueGate(TTFV · 与 compliance/C16 联防) 非 chat 在入口检查与最小 ContextReadPlan 之后,**同一用户可见回复**必须至少交付其一,否则本轮视为扫描/准备违规: 1. 可确认的半屏范围卡(路径/批次/排除项);或 2. 首批 finding / 分析结论 / 可执行方案要点;或 3. 明确阻断(项目不明、权限、环境缺失)+ 恢复动作。 禁止:整轮只读 Skill 百科、只跑全库 inventory、或只写超长需求概括却零交付。用户明确「直接开审/跳过确认」时跳过范围确认,**立即 B1 交付**。 ## ProgressReportFastPath(PI-20260725-01 · TTFV 进度查询特化) > 🔴 用户问「进度 / 发版到哪了 / 验证状态」且已点名项目时,**禁止** workspace 根 inventory 与模糊 task 名阻塞首答。 | 步骤 | 要求 | |------|------| | 绑定 | 立即绑定 `.devcodex/<project>/` 与源码目录;路径直达 | | 真相源顺序 | ① `verification/issues/README`(或问题总台账)② `fixed-awaiting-rerun-classification`(若有)③ profile 发布/项目检查点 ④ SUMMARY 近行 ⑤ 仅不足时再读 `05-实施进度`/报告 | | 首轮交付 | 需求定位 → 进度数字表 → 当前阻断 → 一句话结论 | | 失败 | 同 TTFV 违约;探针 `classifyProgressReportFastPathSample` → `progress-fail` | **机器探针**:`scripts/lib/executable-absorption-gates.js` → `classifyProgressReportFastPathSample`;`npm run test:executable-absorption-gates`。 | decision | 默认判定 | 执行 | |---|---|---| | `single-pass` | 全部满足 ≤50 files、≤2 MiB、largest≤256 KiB、fan-out≤10,且用户未提示大目录 | 一次处理,仍保留排除策略 | | `batched` | 任一中等规模、fan-out>10、控制面联动或用户提示目录大 | 按 namespace/目录/文件预算分批,逐批写 checkpoint | | `sampled+deep-read` | >500 files、>20 MiB、derived ratio>30% 或目录极端集中 | 全量 inventory + 强语义检索 + 代表文件深读;禁止声称逐字全读 | | `blocked` | 项目/root 不唯一、排除边界不可信、权限/文件系统错误 | 停止 broad scan,先恢复边界 | 项目 Profile 可以配置更保守阈值,不得放宽上述默认边界;用户明确“大目录/文件很多”时不得降为 `single-pass`。 ## ScaleDecisionRecord 至少记录:`project`、`root`、`activeRoot`、`inventoryCommand`、六项规模指标、`decision`、`reason`、`exclusionPolicy`、`batchBudget`、`checkpointPath`、`timeoutRetry`、`invalidRunPolicy`。 - 非 single-pass 缺 `checkpointPath` 或 batch budget 时不得继续。 - timeout、错误 glob、派生产物污染或无法解释的数量跳变必须标记 `invalid/discarded`,不能进入结论。 - 检查点状态使用 `not-started / running / accepted / invalid / blocked`;恢复只从最后一个 `accepted` 批次继续。 ## Skill 缺口分析流程 1. 生成 `WorkspaceCorpusManifest` 与 `ExclusionPolicy`。 2. 按规模决策执行 `BatchEvidenceLedger`,每批记录输入、命令、文件数、有效信号和异常。 3. 宽口径召回后执行强语义复扫、词边界校准、代表文件深读和历史镜像降权。 4. 建立 `ExistingSkillCoverageMatrix`:候选 → 最接近 Owner → 未闭合边界 → current consumer → validation。 5. 执行 `CommonNormGeneralizationGate` 与消费者证明;项目局部信号标为 `project-local / case-evidence-only`。 6. 为每个真正缺口冻结 trigger、ownedArtifacts、consumerSync、validationRoute 和负向样例。 7. 至少完成两轮维度不同的 omission-only 零新增,写入 `ConvergenceRecord`。 ## 输出产物 | 产物 | 必填内容 | |---|---| | WorkspaceCorpusManifest | namespace、路径类型、文件/字节、派生边界 | | ScaleDecisionRecord | 规模指标、四态决策、预算与理由 | | BatchEvidenceLedger | 批次、checkpoint、命令、状态、invalid-run | | ExistingSkillCoverageMatrix | 候选与现有 Owner 的覆盖/重叠/缺口 | | CapabilityGapDecision | new-skill / existing-subgate / docs-only / reject | | ConvergenceRecord | 每轮维度增量、新增数、连续零新增 | 所有覆盖结论同时执行 `audit-common` 的 `ReviewCoverageClaimIntegrityGate`。`WorkspaceCorpusManifest` 只能证明 inventory-covered;关键词检索只能证明 machine-scanned;代表文件深读必须明确 sampledSet/unreadSet/inferenceBoundary。只有逐文件 FileEvidenceLedger 才能声明逐字全读。 ## 与 incremental-project-analysis 分界 | 本 Skill | `incremental-project-analysis` | |----------|--------------------------------| | 规模路由、corpus inventory、Skill 缺口 vs Owner | 知识快照、digest 失效、BatchProgress 强制交付、GlobalBacklog、精度合同、双层验证 | | 「怎么分批扫、缺什么能力」 | 「扫完的事实如何复用、如何对用户分批交付与综合」 | `batched` / `sampled+deep-read` 的 analyze 路径在形成 ScaleDecision 后应**同时**调用 `incremental-project-analysis` 的交付与精度门禁;本 Skill 不把快照状态机整坨并入。 ## 反模式 - 未识别项目就从 workspace root 递归扫描。 - **项目名已知仍对 monorepo 根 `Get-ChildItem -Recurse -Depth N` 找目录(PI-20260724-01 复发样例)**。 - 先全量扫描超时,再补写“应该分批”。 - 把备份、安装包、浏览器 Profile、translation cache 或 lockfile 当能力证据。 - 只按关键词计数,不读代表样本、不反查现有 Skill。 - 用抽样深读结果宣称“逐字审查所有文件”。 - 同一批次失败后继续沿用部分输出,或用后续成功命令覆盖前序失败。 - 做完分批扫描却不调用 incremental Skill,导致无 ProgressCard / 无快照 / 假完整主题清单。 - 首轮用户可见回复只有流程/Skill 预热、无范围卡/finding/阻断(TTFV 失败)。 ## 验证 至少包含:小项目 single-pass 正向、用户大目录强制 batched、>500 文件 sampled+deep-read、unresolved project blocked、错误 OR glob、派生污染、timeout 无 checkpoint、历史 already-fixed 未去重等正负向样例。