From omni-reverse
Orchestrates reverse-engineering of interface lists and detail documents from codebases. Produces JSON and Markdown interface specs. Triggered by reverse --target interfaces.
How this skill is triggered — by the user, by Claude, or both
Slash command
/omni-reverse:reverse-interfacesWhen to use
当 reverse 编排执行 --target interfaces 或 all 的接口阶段,或需要从代码库反构接口清单与接口详情文档时使用。
This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
- **职责**:从代码库中反构接口要素,生成:
references/core-rules.mdreferences/data.mdreferences/implementation/interface-detail-analysis.mdreferences/implementation/interface-recognition.mdreferences/scripts/detect_interface_scan_coverage.pyreferences/scripts/ensure_all_interface_docs_generated.pyreferences/scripts/ensure_interface_batch_docs_generated.pyreferences/scripts/estimate_interface_counts.pyreferences/scripts/reverse_by_call_chain/convert_reverse_interface_checklist.pyreferences/scripts/reverse_by_call_chain/prepare_reverse_input.pyreferences/scripts/reverse_by_call_chain/run_reverse_identify.pyreferences/scripts/validate_and_fix_interface_doc_filenames.pyreferences/scripts/validate_interface_quality_gate.pyreferences/stages/01-logic-architecture-prerequisite.mdreferences/stages/02-interface-scanning-and-few-shot.mdreferences/stages/03-interface-list-scanning.mdreferences/stages/04-detail-extraction-and-document-generation.mdreferences/templates/interface-scan-mode.jsonreferences/token-management.mdreverse --target interfaces ... 或 --target all 触发--path / --files / --exclude 等参数确定扫描范围{REPO_ROOT}/.cache/reverse/interfaces/
few-shot-examples.jsoninterface-list.json 等.cache-status.jsonreverse-logic-architecture 生成):
{REPO_ROOT}/omni-doc/specs/logic_architecture/architecture.json{REPO_ROOT}/omni-doc/specs/interfaces/{接口ID}_{中文业务简要总结}.md{REPO_ROOT}/omni-doc/specs/interfaces/接口清单.md编排与约束已标准化;阶段执行细节见
references/stages/,子 Agent 见agents/。
本 Skill 阶段文档中引用了以下路径变量,执行阶段命令前须先解析:
${CLAUDE_PLUGIN_ROOT}:omni-reverse 插件安装根(运行期注入;指向本 skill 内专属脚本,如 ${CLAUDE_PLUGIN_ROOT}/skills/reverse-<X>/scripts/)。${DSDD}:共享插件 omni-dsdd 安装根(含共享 scripts/ 与 omni-infra/)。首次使用前必须解析:
DSDD="$(bash "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-dsdd-root.sh")" || { echo "缺少 omni-dsdd,中止"; exit 1; }
解析器优先用 ${CLAUDE_PLUGIN_ROOT}/../omni-dsdd,回退到脚本相对位置推算;失败则提示需与 omni-reverse 同 marketplace 安装 omni-dsdd。{REPO_ROOT} / ${CLAUDE_WORKING_DIR}:被反构的代码工程根(运行期产物,与插件位置无关)。${CLAUDE_SKILL_DIR}:本 skill 自身目录(指向本 skill 内 references/scripts/ 等自包含资源)。说明:
${DSDD}不是运行期自动注入的变量,必须经resolve-dsdd-root.sh取值后方可使用。
执行前统一解析路径(各阶段文档引用本节约定的变量):
| 变量 | 解析顺序 |
|---|---|
| 本 Skill 目录 | 优先 {REPO_ROOT}/.claude/skills/reverse-interfaces/,否则 {REPO_ROOT}/claude/skills/reverse-interfaces/ |
| 捆绑 Python 脚本 | {本 Skill 目录}/references/scripts/ |
| 项目 Python 脚本 | ${DSDD}/scripts/python/(如 merge_interface_results.py) |
| 子 Agent 定义 | {REPO_ROOT}/agents/interface-recognizer.md、interface-analyzer.md(或插件 agents 目录) |
以下规则在整个会话期间有效,不因对话长度而放松:
.cache-status.json)判断是否需要执行,已确认的阶段不得重新执行。跳过阶段必须显式记录原因。ensure_all_interface_docs_generated.py)的通过条件。ensure_all_interface_docs_generated.py 退出码 ≠ 0)时输出"已完成"reverse 命令的关系reverse 负责:
$ARGUMENTS,统一处理 --target、--path、--files、--exclude 等参数;REPO_ROOT 与全局缓存目录;--target interfaces 或 --target all 的接口阶段时,激活本 Skill。本 Skill 按以下阶段编排,阶段详细说明见本 Skill 目录下 references/stages/:
阶段0完成: .cache-status.json 已就绪阶段1完成: architecture.json 校验通过 / 中止接口反构阶段2完成: few-shot-examples.json + interface-estimation.json 已生成,用户已确认阶段3完成: interface-list.json 全量生成,质量闸门已通过,用户已确认阶段4完成: 全量接口详情文档已生成,接口清单.md 已生成,ensure_all 通过architecture.json(只读)作为阶段2的模式识别输入few-shot-examples.json + interface-types.json + constraints.json + interface-estimation.json 作为阶段3的扫描输入interface-list.json 作为阶段4的输入ensure_all_interface_docs_generated.py 等脚本执行)Token 与并发控制遵循原文档中的预算表与「每轮最多 2 个 SubAgent」的统一规则。
| 子 Agent | 阶段 | 实现依据 | 启动方式 |
|---|---|---|---|
omni-reverse:interface-recognizer | 3(方式 A) | agents/interface-recognizer.md + interface-recognition.md | Task,subagent_type: omni-reverse:interface-recognizer |
omni-reverse:interface-analyzer | 4 | agents/interface-analyzer.md + interface-detail-analysis.md | Task,subagent_type: omni-reverse:interface-analyzer |
禁止:方式 B 使用 Task 启动 call-chain-analyzer 或其他子 Agent(仅按阶段文档执行脚本)。
本 Skill 在阶段 3(方式 A)和阶段 4 使用上表子 Agent 并发处理批次,必须遵循以下合并协议:
batch-mapping.json 分配),不得处理其他批次的文件或接口。${DSDD}/scripts/python/merge_interface_results.py、ensure_all_interface_docs_generated.py)统一归并。脚本不存在或退出码非 0 时不得手工拼 interface-list.json。禁止手工拼接。interface_id、interface_type、processing_status 等字段格式统一),不一致时按统一 schema 修复。interface-list.json / interface-estimation.json 中的预期数量,三者不一致时必须排查原因,禁止忽略差异。{REPO_ROOT}/.cache/reverse/interfaces/.cache-status.jsonfew_shot_examplesinterface_listdocument_generationarchitecture_identification;架构确认由 reverse-logic-architecture 的缓存状态文件管理。confirmed / progress 决定是否跳过阶段(阶段1 为前置校验,见下)。architecture-identifier,不写入 architecture.json。{REPO_ROOT}/omni-doc/specs/logic_architecture/architecture.jsonreverse --target logic_architecture(或全流程编排);.cache/reverse/interfaces/architecture.json。few-shot-examples.json.cache/user_input 预配置优先,其次交互强制选择):进入阶段3时按以下优先级确定方式A/方式B:
{REPO_ROOT}/.cache/user_input/interface-scan-mode.json:
"mode" 字段(期望为 "A" 或 "B")和 "allow_mode_downgrade" 字段(可选,默认 true)
"allow_mode_downgrade": true:当方式 B 不支持或执行失败时,允许自动切换到方式 A"allow_mode_downgrade": false:当方式 B 不支持或执行失败时,必须报错并退出当前阶段(禁止自动回退到方式 A)"allow_mode_downgrade":按 true 处理(向后兼容)"mode" 作为阶段3的选择结果(不再要求用户重复选择)"A" 或 "B"(不得默认 A;不得替用户决定)call-chain-analyzer 等),仅按阶段文档 3B.1~3B.3 依次执行脚本。"mode": "B" 时:在真正进入 3B.1 前,必须先做语言检查;
allow_mode_downgrade=true 时,不支持则提示并回退到方式Aallow_mode_downgrade=false 时,不支持则报错并退出当前阶段allow_mode_downgrade=true 处理{REPO_ROOT}/omni-doc/specs/logic_architecture/architecture.json(由 reverse-logic-architecture 生成)中的主语言/技术栈字段(如 primary_language / languages / tech_stack),以其为准;--path/--files)统计文件扩展名占比(例如 .java/.py/.cpp/.c/.h/.hpp),以占比最高的语言作为代码库主语言;allow_mode_downgrade=true 时回退到方式Aallow_mode_downgrade=false 时报错退出当前阶段(避免误跑脚本导致无意义输出)。allow_mode_downgrade=true:【方式B不可用】当前代码库主语言为 <X>(不在 Java/Python/C/C++ 支持范围内),将自动回退使用方式A继续接口清单扫描。allow_mode_downgrade=false:【方式B不可用】当前代码库主语言为 <X>(不在 Java/Python/C/C++ 支持范围内),且已配置禁止降级切换(allow_mode_downgrade=false),接口清单扫描阶段将报错退出。{REPO_ROOT}/.cache/user_input/interface-scan-mode.json 不存在时,必须提示用户:【接口清单扫描】请选择扫描方式:A(默认接口清单扫描,按文件分批 + SubAgent)或 B(reverse 调用链扫描)。请输入 A 或 B(必须选择其一)。{REPO_ROOT}/.claude/skills/reverse-interfaces/references/scripts/,若不存在则用 {REPO_ROOT}/claude/skills/reverse-interfaces/references/scripts/。具体为:① 前置依赖 reverse_by_call_chain/prepare_reverse_input.py;② 接口识别 reverse_by_call_chain/run_reverse_identify.py(内部调用 reverse_syntax_parser/main.py --step identify 生成 interface_functions_checklist.json 并做存在性校验);③ 转换 reverse_by_call_chain/convert_reverse_interface_checklist.py。详见 references/stages/03-interface-list-scanning.md 中 3B.1~3B.3。{REPO_ROOT}/.cache/user_input/interface-scan-mode.json:按其 "mode" 执行,并应用 "allow_mode_downgrade"(缺省 true)。interface-list.json(含接口类型分类)file_list 覆盖不足时,交互模式须由用户确认是否全量扩展并重扫,非交互模式须自动全量扩展并重建批次后重扫;{REPO_ROOT}/omni-doc/specs/interfaces/{接口ID}_{中文业务简要总结}.md{REPO_ROOT}/omni-doc/specs/interfaces/接口清单.md/compact;document_generation 状态,并在交互模式下允许用户查看代表性接口文档摘要。reverse-interfaces.md 中关于 .cache/reverse/interfaces/ 与 omni-doc/specs/interfaces 的约定。reverse 统一初始化的 todo 项(接口主任务 + 阶段0~4 共 5 个阶段子任务);in_progress / completed 状态。各阶段的错误处理策略如下:
architecture.json 时中止接口反构,提示先执行 reverse --target logic_architectureallow_mode_downgrade=true:自动回退到方式Aallow_mode_downgrade=false:直接报错退出当前阶段pending 并重试所有阶段支持断点续跑:
.cache/reverse/interfaces/.cache-status.json 记录进度阶段 3(接口清单扫描)与阶段 4(详情文档生成)的执行逻辑由以下实现文档定义:
本 Skill 的详细实现规范位于本目录下 references/:
AI Agent 在执行本 Skill 时,应读取上述文档并严格按照其中描述的阶段和脚本调用方式执行。
reverse-logic-architecture:生成 omni-doc/specs/logic_architecture/architecture.jsonreverse-shared:确认模板 references/confirmation-template.mdreferences/scripts/)estimate_interface_counts.py、validate_interface_quality_gate.py、detect_interface_scan_coverage.pyensure_all_interface_docs_generated.py、ensure_interface_batch_docs_generated.py、validate_and_fix_interface_doc_filenames.pyreverse_by_call_chain/*(阶段 3 方式 B)${DSDD}/scripts/python/)merge_interface_results.py(阶段 3 方式 A 合并 interface-list.json,必需;缺失则中止,禁止手工合并)本 Skill 的阶段文档中引用了以下项目外部文件,这些文件由 OmniSpec 框架或 reverse 全局编排提供:
{REPO_ROOT}/.claude/skills/reverse-shared/references/confirmation-template.md:OmniSpec 公共技能库(reverse-shared)中的统一确认模板,用于阶段间的交互确认机制。此文件由 reverse-shared 技能提供,本 Skill 仅引用其路径,不在本 Skill 目录内维护。.omni-infra/templates/ 下的模板文件(如 interface-type-selection-template.md、constraint-configuration-template.md、final-confirmation-template.md):OmniSpec 项目内的交互式模板,用于用户配置和确认。来源:{REPO_ROOT}/.omni-infra/templates/${DSDD}/scripts/bash/reverse/interfaces/utils/ 和 ${DSDD}/scripts/powershell/reverse/interfaces/utils/:OmniSpec 项目内的 bash/PowerShell 工具脚本,用于批次管理、进度跟踪等。注意:本 Skill 自带的 Python 脚本位于 ${CLAUDE_SKILL_DIR}/references/scripts/,而 OmniSpec 项目内的脚本位于 ${DSDD}/scripts/ 下,执行时请注意路径来源如需完整执行本 Skill,请确保 OmniSpec 项目已正确安装上述外部依赖文件。
| 场景 | 正确输出 | 禁止输出 |
|---|---|---|
阶段1: architecture.json 不存在 | 中止接口反构,提示先执行 reverse --target logic_architecture | 假设架构已就绪继续执行 |
| 阶段2: 模式识别无结果 | 输出现有模式(空列表)+ 提示调整接口类型配置 | 推测"代码库无接口"作为结论 |
| 阶段3: 接口数量远低于预估 | 触发覆盖度检测,提示全量扩展 | 假设预估有误直接输出低数量清单 |
| 阶段3: 方式B脚本执行失败 | 退回方式A,向用户说明原因 | 假设方式B已成功继续流程 |
| 阶段4: 接口详情文档校验失败 | 保持批次为 pending,重试同批次 | 跳过缺失文档继续下一批次 |
ensure_all_interface_docs_generated.py 退出码 ≠ 0 | 继续分批生成,直至全部通过 | 输出"已完成"并结束阶段 |
本 Skill 输出的判断性结论必须满足以下证据要求:
| Claim Type | 适用场景 | Required Evidence | Counter-Evidence 检查 |
|---|---|---|---|
structural | interface-list.json / 接口详情文档生成完成 | 脚本退出码为 0 + 文件存在且非空 + 字段完整(interface_id、interface_type 等必填字段非空) | 检查是否仅生成了示例而非全量(full_list_generated == true) |
behavioral | 接口数量质量闸门通过/不通过 | validate_interface_quality_gate.py 退出码 + 报告字段 mandatory_flags.quality_gate_passed == true | 检查是否因覆盖不足(file_list.json 规模)导致数量偏低,而非识别规则失效 |
empirical | 接口数量预估 | estimate_interface_counts.py 输出 + 基线值(ceil(total_code_lines * 0.002)) | 检查是否低于基线(若是则标记 under_estimated=true 并触发扩范围) |
structural | 阶段跳过判断 | .cache-status.json 中对应字段 confirmed == true | 检查状态文件更新时间是否在合理范围内 |
通用规则:
unresolvedtentativetentativeensure_all_interface_docs_generated.py 未通过(退出码 ≠ 0)→ 不得输出"已完成",不得结束阶段npx claudepluginhub zte-aicloud/co-omnispec --plugin omni-reverseExecutes reverse engineering from codebases to extract interfaces, architecture, entities, scenarios, and requirements, generating standardized documentation.
Analyzes code architecture based on requirement intent, supporting simple and complex demand scenarios. Activated via reverse --target on-demand.