--- name: hi-reverse description: "Reverse Engineering C and C++ modules into validated use-case, module, and C++-to-Java migration artifact packages. Generates evidence-backed traces, sequence/class/state/activity/architecture diagrams, entry-point/interface/data/business-rule/error/concurrency catalogs, parity mappings, risks, tests, reviews, and coverage; exhaust mind_mcp and graph_mcp before Serena, and use native source tools only as a final fallback." --- # C++ Reverse Engineering Reverse-engineer behavior from evidence, not symbol-name guesses. FalkorDB plus Qdrant Graph-RAG is the primary engine, Serena is source-level enrichment, native tools are the final gap filler. Run scripts from the skill directory with Node.js 18+. ## Runtime 1. Select `usecase`, `module`, or `migration`. 2. Validate the catalog: `npx --yes --offline --package=. hi-reverse-plan --check-catalog`. 3. For `usecase`, read `PROFILE-USECASE.md`; for `module` or `migration`, use the generated manifest as the profile guide. 4. Generate the plan: `npx --yes --offline --package=. hi-reverse-plan --profile

--module [--use-case ] [--condition ] --output --summary`. Require `ARTIFACT_PLAN_GATE: PASS`. Do not read `ARTIFACT-CATALOG.yaml` directly — the script is the capability authority. 5. Activate the C++ parser, FalkorDB context, and one Qdrant collection. 6. Require `DATA_CONTEXT_GATE: PASS`. 7. Run Graph-RAG to saturation. Semantic search seeds anchors only; graph traversal must expand those anchors into caller/callee and trigger/handler/outcome paths before Serena. 8. Use Serena only for retained anchors and named gaps. 9. Rerun the plan only when discovery adds a new use-case slug or evidenced condition. 10. Generate artifacts one at a time via the loop below. 11. Require `REVERSE_PACKAGE_GATE: PASS` before delivery. ## Retrieval Order `mind_mcp → graph_mcp/Qdrant → graph_mcp/FalkorDB → Serena → native` - Read [GRAPH-RAG-PROTOCOL.md](references/GRAPH-RAG-PROTOCOL.md) once when retrieval starts. - For `usecase`, read [PROFILE-USECASE.md](references/PROFILE-USECASE.md); for `module` or `migration`, use the generated manifest as the profile guide. - Read only the technique file returned by `--next` for the current artifact. - Read [MCP-TOOLS.md](references/MCP-TOOLS.md) only when live metadata is ambiguous, a wrapper rejects parameters, or provider routing must be diagnosed. - Do not read `ARTIFACT-CATALOG.yaml` unless the planner reports a catalog error. - If a higher-priority repository instruction defines a stricter order, obey it. ## Data Context Gate Lock the data context before any analysis query. Confirm FalkorDB is active, select one C/C++ Qdrant collection from project/repository/language metadata, and validate it with a scoped `semantic_search` probe (module-local hits required). If rejected, bind the next candidate and repeat only the probe. ```text DATA_CONTEXT_GATE: PASS|BLOCKED parser=cplus graph_provider=falkordb graph_context=active|unavailable qdrant_collection= qdrant_context=active|unavailable ``` `PASS` is required before any discovery, tracing, mapping, glossary, or review query. Reuse it for the same repository, module, parser, and collection; re-list collections or re-run validation probes only when scope changes, context is stale, or module-local evidence fails. Every later `semantic_search`, `explore_graph`, and vertical graph traversal must use the bound collection or retained graph anchors. `BLOCKED` stops analysis instead of issuing unscoped queries. ## Falkor Graph Gate Record before entering Serena: ```text FALKOR_GRAPH_GATE: PASS|PARTIAL|BLOCKED provider=falkordb collection= semantic_search_calls= explore_graph_calls= vertical_graph_trace_calls= query_families= graph_expansion= ``` `PASS` requires a validated collection, all applicable query families, vertical graph traversal for retained anchors, two saturation passes, and FalkorDB graph evidence. `PARTIAL` permits Serena only after every working Graph-RAG capability is exhausted and names the missing evidence category. `BLOCKED` means code evidence cannot be established; stop instead of guessing. Never call `graph_mcp.list_databases`. Never hardcode or display a graph key, endpoint, port, protocol, or driver. Provider-safe calls are listed in [GRAPH-RAG-PROTOCOL.md](references/GRAPH-RAG-PROTOCOL.md) §6. ## Quiet Routing - Fast-fail once per capability. Retry once only for `invalid_parameters`, using the callable wrapper schema. - Never echo raw backend exceptions, host, port, graph key, protocol, driver, or other infrastructure details. - Never narrate routing with phrases such as "I will retry", "marking traversal unavailable", "then use Serena", or equivalent fallback commentary. - Execute the next allowed layer silently. Show completed calls and evidence in the retrieval trace, not operational detours. - In user-facing output, summarize graph coverage only as `FalkorDB + Qdrant`, `Qdrant only`, or `Graph-RAG unavailable`. - Keep provider failures in internal retrieval data as normalized capability statuses. ## Context Discipline - Never read the full artifact catalog during normal execution. - Keep at most one profile and one artifact technique active at a time. - Keep the loaded protocol/profile/technique in working context; do not reopen unchanged files. - Do not read templates until generating their selected artifact. - Retain Graph results as node IDs, symbols, paths, scores, and WHY summaries. - Move normalized evidence into `evidence-ledger.json`. - Do not repeat full code snippets after recording source locations. - Report deltas, not the complete accumulated frontier. - Use compact script output (`--summary`) unless diagnosing a failure. ## Artifact Generation Loop Generate one artifact at a time. Do not read all techniques selected by a profile at once. 1. Ask the planner for the next pending artifact: `npx --yes --offline --package=. hi-reverse-plan --next ` Compact output: `ARTIFACT_ID`, `TECHNIQUE`, `OUTPUT`, `EVIDENCE_GAPS`. 2. Read only that artifact's technique file. 3. Retrieve only the missing evidence listed in `EVIDENCE_GAPS`. 4. Generate the artifact from its template (read the template only now). 5. Validate: `npx --yes --offline --package=. hi-reverse-validate-artifact --summary`. Require `ARTIFACT_GATE: PASS`. 6. Release the technique details and continue to the next `--next`. Exit 1 from `--next` means all artifacts are validated; proceed to the package gate. ### Use-Case Bundle Every documented use case must produce: `ucXXX_.md`, `trace_.json`, `seq___v1.mmd`, `class___v1.mmd`. The Markdown must contain `## Sequence Diagram` and `## Class Diagram` sections linking the exact two Mermaid files. UC bundle link checks are enforced by `hi-reverse-validate-package` (it verifies each use-case document links its sequence and class artifacts). If native execution is forbidden, apply the checklist manually, record `ARTIFACT_GATE_MODE: manual`, and never claim the hook ran. ## Evidence Contract Maintain one evidence ledger shared by all phases. Each claim records: `status`, `graph_provider`, `node_ids`, `symbols`, `edges`, `locations`, `retrieved_by`, `serena_support`, `uncertainties`. - `PROVEN`: trigger, handler, and terminal side effect connected by FalkorDB path evidence and source support. - `LIKELY`: at least two of the three connected; the missing bridge is named. - `TENTATIVE`: semantic or source evidence exists, but the executable path is not established. - `REJECTED`: evidence shows utility, dead path, duplicate, or unrelated module. ## Gates - `ARTIFACT_PLAN_GATE` — catalog valid and manifest generated. - `DATA_CONTEXT_GATE` — FalkorDB and one Qdrant collection active. - `FALKOR_GRAPH_GATE` — query matrix and saturation complete. - `ARTIFACT_GATE` — single artifact structurally valid. - `REVERSE_PACKAGE_GATE` — all required profile instances validated. Never claim completion while a required gate fails. Structural validation does not prove semantic correctness; the evidence ledger and review remain mandatory. ## User Constraints - **No existing documents:** record `mind_mcp documents: skipped by user`; still run code Graph-RAG. - **MCP tools only:** stop after Serena and report evidence gaps without native tools. - **Possible use cases:** label every result; never present a name-only hit as proven behavior. - Never claim exhaustive coverage when a collection, edge family, or source area lacks evidence. ## Script Reference All commands run via `npx --yes --offline --package=. ` from the skill directory (zero dependencies, offline). Use `--summary` for compact output unless diagnosing. | Command | Function | | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | | `hi-reverse-init ` | Create output workspace and copy templates | | `hi-reverse-plan --check-catalog` | Validate catalog integrity | | `hi-reverse-plan --profile

--module --output --summary` | Generate compact manifest | | `hi-reverse-plan --next ` | Return next pending artifact + technique + evidence gaps | | `hi-reverse-plan --list-capabilities` | List artifact ID, status, scope, output, technique | | `hi-reverse-validate-artifact --summary` | Validate one artifact | | `hi-reverse-validate-package --update` | Set `REVERSE_PACKAGE_GATE`; also enforces UC bundle link checks (`--verbose` for full rows) | | `hi-reverse-metrics [usecase-dir] [metrics-file] [package-manifest]` | Append UC and profile/package coverage | ## Orchestration `CATALOG → PROFILE → PLAN → DISCOVERY → TRACING → UC/SEQ/CLASS/ACTIVITY → MODULE MAP → OVERVIEW/ENTRYPOINTS/INTERFACES → STATE/DATA/RULES/ERRORS/CONCURRENCY → MIGRATION PARITY/MAPPINGS/WAVES/RISKS/TESTS → REVIEW → VALIDATION → PACKAGE GATE → METRICS`. The main agent performs blocking preflight and collection validation. Sub-agents receive the repository root, module, constraints, selected collection, Graph-RAG anchors, prior artifacts, and output path. They follow the same routing, return retrieval traces and evidence deltas, and never activate the skill directory as the Serena project.