From omni-dsdd
Analyzes requirements to identify impacted specs and code, determining reuse scope and ripple effects. Outputs structured context for populating context.md, enabling upstream commands to generate coherent specifications.
How this skill is triggered — by the user, by Claude, or both
Slash command
/omni-dsdd:spec-impact-analyzeThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
围绕单个功能/需求或变更描述,自动完成**需求波及分析**,输出一份可直接用于填充 `context.md` 的结构化内容。
围绕单个功能/需求或变更描述,自动完成需求波及分析,输出一份可直接用于填充 context.md 的结构化内容。
核心目标:
relations/*.json 找到相关/受影响的规格spec-impact-analyze 的分析结果,补充架构视角、术语映射、约束与假设FEATURE_DIR/context.mdFEATURE_DIR/context.md 或其它规范文档(REQ/SCN/FUNC/API/ENTITY)。例外:FEATURE_DIR/.runs/internal/context.payload.json 是与上游 specify 的结构化契约(非规范文档),knowledge_retrieval 字段必须写入其中,供 knowledge-gate 机器校验,此写入不违反本准则。每次输出前自检spec-impact-gate 门禁脚本除外,见准则 6)knowledge-retrieval-agent,并以其返回如实填写 context.payload.json 的 knowledge_retrieval 字段(executed:true + hits 数 + config_hit/vector_built/graph_built/mode)。禁止在知识源就绪时跳过派发或填 executed:false。派发后须运行 spec-impact-gate.sh(见 Step 4.3),gate_exit=0 方可进入 Step 5;gate_exit=1 按 errors 补齐后重跑(每步最多 2 次)。上游 specify 的 _gate_step_3 会对同一字段做二级钳制,子技能无法绕过。在以下场景使用本技能:
/specify)解耦,由上层命令统一调用本技能context.md 的结构化上下文,而不是散乱的文档列表调用本技能时提供功能描述:
omni-doc返回结构化上下文:
context_mode: "evidence_first" 或 "default"on_demand.detected: true/falseDOC_DIR 根目录存在且包含 specs/ 子目录specs/ 下有 requirements/、scenarios/、functions/、interfaces/、logic_entities/ 目录KNOWLEDGE_DIR(私域知识库根目录,可选):缺失时不阻断反构文档分析,仅 Step 4.1 私域检索降级DOC_DIR:如未提供,技能内部通过 scripts/*/check-prerequisites.* 自动检测。
KNOWLEDGE_DIR(处理方式对标 CLAUDE_WORKING_DIR:已注入则沿用,缺失才降级解析)。本技能在 specify 之后执行,${FEATURE_DIR}/.runs/env.sh 已含 export KNOWLEDGE_DIR,故降级源是 env.sh 而非标记文件:
# 1. source 上游 specify 落盘的 env.sh(含 KNOWLEDGE_DIR、DOC_DIR 等)
[ -f "${FEATURE_DIR}/.runs/env.sh" ] && source "${FEATURE_DIR}/.runs/env.sh"
# 2. 已注入则沿用(不覆盖);缺失则回退默认 ${CLAUDE_WORKING_DIR}/omni-doc
export KNOWLEDGE_DIR="${KNOWLEDGE_DIR:-${CLAUDE_WORKING_DIR}/omni-doc}"
KNOWLEDGE_DIR 与 DOC_DIR 独立:前者供 Step 4.1 私域知识检索(knowledge-retrieval-agent),后者供 Step 2 反构文档分析(specs/),可指向不同目录。KNOWLEDGE_DIR 是可选知识源,不强制目录存在;目录缺失时 Step 4.1 走 Fallback(本地 glob/Grep)。数据传递(后续步骤必须引用前序实际产出,禁止重新搜索):
Checkpoint 计数链:
交叉验证:
调用本技能时,应提供:
/specify 中的 $ARGUMENTS)scripts/*/check-prerequisites.* 相同的方式检测,默认 DOC_DIR = omni-docDOC_DIR,本技能内部需:
scripts/powershell/check-prerequisites.ps1 --json --paths-onlyscripts/bash/check-prerequisites.sh --json --paths-onlyDOC_DIR,并派生以下路径:
DOC_DIR/specs/requirements/ → REQ-*.mdDOC_DIR/specs/scenarios/ → SCN-*.mdDOC_DIR/specs/functions/ → FUNC-*.mdDOC_DIR/specs/interfaces/ → API-*.mdDOC_DIR/specs/logic_entities/ → ENTITY-*.mdDOC_DIR/specs/relations/requirements.jsonDOC_DIR/specs/relations/scenarios.jsonDOC_DIR/specs/relations/functions.jsonDOC_DIR/specs/relations/interface.json✅ Checkpoint: "Step 2 完成: DOC_DIR = {检测到的路径}, 五类子目录已派生"
失败降级: Glob 探测失败 → 尝试读取 omni-doc/specs/ 验证有效性 → 仍失败则输出 "DOC_DIR 探测失败,请显式传入 DOC_DIR 参数"
在 Step 4 调用 knowledge-retrieval-agent sub-agent 之前,按机器闸门(非主观推断)判定私域知识源状态(私域知识库根目录 = ${KNOWLEDGE_DIR},已由「环境检测」段解析;与反构文档库 ${DOC_DIR} 独立)。
三态判定(与 spec-impact-gate 的 _check_knowledge_source 语义一致,供 Step 4.3 门禁复用):
ready):${KNOWLEDGE_DIR} 目录存在且非空 且 其下 knowledge.config.yaml 存在 → Step 4.1 必须派发检索。self_healed):目录存在但 ${KNOWLEDGE_DIR}/knowledge.config.yaml 缺失 → 不自降级,从插件模板拷贝补齐(与 init_omni_infra.sh 的 prepare_knowledge_config 同源):
cp "${CLAUDE_PLUGIN_ROOT}/skills/knowledge-retrieval/knowledge.config.yaml" "${KNOWLEDGE_DIR}/knowledge.config.yaml"
sed -i 's|^raw_knowledge_dir:.*|raw_knowledge_dir: .|' "${KNOWLEDGE_DIR}/knowledge.config.yaml"
自愈后视为就绪 → Step 4.1 必须派发检索。skip):${KNOWLEDGE_DIR} 目录不存在或为空 → 唯一允许跳过 Step 4.1 的路径,Step 4.3 门禁对 skip 状态放行。⚠️ 区分:反构文档(REQ/SCN/FUNC/API/ENTITY)检索走
${DOC_DIR}/specs/(Step 2);本步骤仅检查私域知识检索(knowledge-retrieval-agent)的配置源${KNOWLEDGE_DIR},二者可指向不同目录。
⚠️ 禁止以"推断知识可能不充分"等主观理由跳过——只有上述三态机器判定中的
skip才是合法跳过路径。ready/self_healed均必须派发。
✅ Checkpoint: "Step 2.1 完成: 知识源状态 = {ready/self_healed/skip}, knowledge_dir = {路径}, config = {已存在/已自愈/缺失}"
失败降级: 目录存在但 config 自愈失败(如插件模板缺失)→ 记 self_heal_failed,Step 4.3 门禁记 error,按降级处理
为增强需求边界识别,本技能支持读取 DOC_DIR/on-demand/ 作为可选优先知识源。必须遵循以下兼容策略:
DOC_DIR/on-demand/ 存在且可形成最小追溯链路(requirement -> function -> interface),进入 evidence_first 模式。default 模式,继续执行原有分析流程,不得中断。探测优先级(从高到低):
DOC_DIR/on-demand/on-demand-existing-function-analysis-*.mdDOC_DIR/on-demand/relations/*.jsonDOC_DIR/on-demand/functions/*.mdDOC_DIR/on-demand/interfaces/*.mdDOC_DIR/on-demand/logic_architecture.md推荐模式判定规则:
relations/branch-function.json 与 relations/function-interface.json 且可解析:优先 evidence_first。branch-function.json 但存在 relations/requirement-function.json,仍可进入 evidence_first。default + 记录 fallback_reason。✅ Checkpoint: "Step 2.2 完成: 模式 = {evidence_first/default}, {N} 个 on-demand 文件已探测" 失败降级: relations/*.json 解析失败 → 记录 JSON 解析错误,切换为 default 模式
从输入描述中提取:
context.md)4.1 和 4.2 相互独立,根据各自前置条件独立判断是否执行:
ready/self_healed 时必须执行(不得以 Step 4.2 是否执行为由跳过);仅 skip 状态合法跳过两者可并存(同时满足条件时均执行),也可单独执行。但 4.1 的执行/跳过只由 Step 2.1 机器闸门决定,与 4.2 完全独立。
✅ Checkpoint: "Step 4 完成: 4.1={executed:true, hits:M, config_hit:bool} | 4.1={skipped, reason:知识源skip}, 4.2={执行/跳过}"
触发条件(机器闸门,非主观判断):仅当 Step 2.1 判定为 skip(目录不存在/为空)时跳过本步;ready/self_healed 必须无条件派发,禁止以"推断不充分"为由跳过。
委托 knowledge-retrieval-agent sub-agent 执行检索(隔离其厚重上下文),在 prompt 中显式传入(subagent 上下文从空白开始,不继承本会话历史):
/specify 的 $ARGUMENTS)${CLAUDE_WORKING_DIR}/omni-doc,用于 specs/ 反构文档)@knowledge 检索路径 = ${KNOWLEDGE_DIR}(私域知识检索根目录)${KNOWLEDGE_DIR}/knowledge.config.yaml(由 sdd 工程初始化脚本 init_omni_infra.sh 的 prepare_knowledge_config 步骤在工程初始化时自动生成;sub-agent 在该目录下运行,CLI 自动级联查找配置)config_hit(config 是否命中)、vector_built(向量索引是否已构建)、graph_built(图谱是否已构建)、mode(enhance/baseline,来源 config-info),用于区分「真零结果」与「产物未构建导致的中途降级」sub-agent 返回带来源(source_file:location / 实例 ID)的结构化结果后:
source_file/location;executed:true, hits:0),不得当作跳过,不得生成假关联。❗ 强制留痕(写入 payload):派发完成后(含真零结果),必须把检索结论写入 FEATURE_DIR/.runs/internal/context.payload.json 的 knowledge_retrieval 字段(完整 schema 见 Step 5 第 7 节)。合法跳过(Step 2.1 = skip)时写 executed:false + 非空 skip_reason。未写该字段或写了 executed:false 而知识源就绪,Step 4.3 门禁必拦。
⚠️ 派发 prompt 只放"这一次检索需要的东西"——意图 + Step 3 要素 + DOC_DIR(反构) + KNOWLEDGE_DIR/@knowledge 路径(私域检索), 不要把本会话的历史、前序 Step 的完整叙述粘进去。
✅ Checkpoint: "Step 4.1 完成: executed=true, 筛选出 {M} 个相关文档, config_hit={bool}, vector_built={bool}, graph_built={bool}, mode={enhance/baseline}"
失败降级: 文档数为 0 → 按真零结果处理(hits:0),不生成假关联;产物未构建 → 如实标注并降级,仍记 executed:true
在 evidence_first 模式下,除原有文档检索外,额外执行:
relations/*.json 构建边界基线:
branch-function.json 作为功能白名单来源(兼容读取 requirement-function.json)。branch-interface.json 作为接口白名单来源(兼容读取 requirement-interface.json)。function-interface.json 作为功能-接口追溯链路来源。functions/*.md 与 interfaces/*.md 提取:
on-demand-existing-function-analysis-*.md 作为需求级摘要与波及统计补充。边界控制规则:
relations 中被 branch(或兼容 requirement)指向的 function/interface。relations 中出现且无直接证据链支撑的对象。✅ Checkpoint: "Step 4.2 完成: 白名单 {N} 项, 黑名单 {M} 项, 灰名单 {K} 项" 失败降级: relations 文件全部不存在 → 输出 default 模式结果
Step 4.1/4.2 完成后、进入 Step 5 之前,必须运行 spec-impact-gate 做机器校验(一级钳制)。该门禁用机器闸门替代主观判断,堵住"知识源就绪却跳过 knowledge-retrieval-agent"。
bash "${CLAUDE_PLUGIN_ROOT}/skills/spec-impact-analyze/scripts/bash/spec-impact-gate.sh" \
--feature-dir "$FEATURE_DIR" --record
& "${CLAUDE_PLUGIN_ROOT}/skills/spec-impact-analyze/scripts/powershell/spec-impact-gate.ps1" \
--feature-dir "$FEATURE_DIR" --record
门禁语义(gate_exit):
0:知识源状态与 context.payload.json 的 knowledge_retrieval 字段一致(就绪→已派发;skip→已标注跳过)→ 进入 Step 51:以下任一 → 不得进入 Step 5,按 JSON errors 补齐后重跑(每步最多 2 次):
ready/self_healed)但 payload 缺 knowledge_retrieval 字段executed:false 而知识源就绪(即"偷懒跳过")executed:true 但 hits/config_hit/vector_built/graph_built/mode 字段缺失或类型错误(无法区分真零结果 vs 中途降级)executed:false 但 skip_reason 为空raw_knowledge_dir: .),自愈后视为就绪。上游 specify 的
_gate_step_3会对同一knowledge_retrieval字段做二级钳制——即使本门禁被绕过,specify 阶段仍会拦下不合规 payload。两级门禁互为兜底。
✅ Checkpoint: "Step 4.3 完成: gate_exit=0, knowledge_source={ready/self_healed/skip}, executed={bool}, hits={M}"
失败降级: gate_exit=1 → 读 errors 补齐 payload 或补派 sub-agent,重跑门禁;最多 2 次仍失败则输出降级 payload(degraded:true)并继续 Step 5,不得静默跳过
context.md 的结构化结果功能描述:
相关反构文档:
架构分析与设计参考:
术语对齐:
ENTITY-054,ACK → ENTITY-055)约束与假设:
on-demand 扩展结构(统一输出,允许为空):
context_mode: evidence_first 或 defaulton_demand.detected: true/falseon_demand.fallback_reason: 未命中时说明原因(目录不存在/链路不足/文件缺失)on_demand.scope:
requirement_iddirect_functions[]indirect_functions[]interfaces[]on_demand.traceability[]: requirement -> function -> interface 链路on_demand.contract_deltas[]:
interface_idrequest_added[]response_added[]response_modified[]on_demand.risks[]on_demand.evidence_gaps[]私域知识检索留痕(knowledge_retrieval,必须写入 context.payload.json):
executed: bool — Step 4.1 是否真实派发了 knowledge-retrieval-agent(知识源就绪时必须 true;仅 Step 2.1 = skip 时可为 false)hits: int — 命中相关文档/实例数(真零结果记 0,不得省略)config_hit: bool — sub-agent 标注的 config 是否命中(来源 config-info)vector_built: bool — 向量索引是否已构建(区分"真零结果"与"索引未构建的中途降级")graph_built: bool — 图谱是否已构建mode: "enhance" | "baseline" — 检索模式(来源 config-info)skip_reason: string|null — executed:false 时必须非空,说明合法跳过原因(目录缺失/为空)该字段是 Step 4.3 门禁与上游 specify
_gate_step_3二级钳制的机器契约,字段缺失或不合规会被门禁拦截。
输出应以「总结与归纳」为主,而不是简单复制文档原文或罗列文件名。
✅ Checkpoint: "Step 6 完成: 功能描述 ✓, 反构文档 ✓, 架构分析 ✓, 术语对齐 ✓, 约束假设 ✓, on-demand扩展 ✓, knowledge_retrieval ✓ (共7节)")" 失败降级: 某节内容为空 → 该节输出 "(未识别到相关内容)",不得跳过或留空
调用本技能时,应返回一个结构化对象(或等价的 Markdown 结构),其字段尽量与 context-template.md 对齐,方便上层命令直接:
context_mode 与 on_demand.detected 字段,供上层决定是否启用边界锁定策略。knowledge_retrieval 字段(完整 schema 见 Step 5 第 7 节),供 Step 4.3 门禁与上游 specify 二级钳制校验。default 模式下,on_demand.* 字段可为空数组/空对象,但字段应保留。上层命令(如 /specify)只负责:
FEATURE_DIR/context.mdSignal candidates(仅作为调查起点,不能直接升级为结论):
强结论的 Required Evidence:
| Claim Type | Required Evidence |
|---|---|
relational(文档关联判断) | Read 工具确认的文档 frontmatter + 关键词命中的具体行号 |
structural(模式识别) | Read 工具确认的多个文档原文,不能仅基于 Glob 探测推断 |
behavioral(功能范围判断) | evidence_first 模式下 Read 的 relations/.json 解析结果 + functions/.md 内容 |
Counter-evidence 检查:
tentative,在 on_demand.evidence_gaps[] 中列出Completeness ceiling:
npx claudepluginhub zte-aicloud/co-omnispec --plugin omni-dsddGenerates feature specification documents (SDD) from natural language descriptions. Collects context, analyzes requirements, extracts scenarios, and writes spec files to a feature branch.
Decomposes problems, scans stakeholders, and structures requirements into a Phase 1 lifecycle document (1-requirements.md). Use before tech spec or feasibility study.
Analyzes impact of changes to sphinx-needs requirements, specs, or items by tracing links, extra_links, and codelinks to affected needs and code files.