Skip to content
Back to skills

Reverse Engineer

ASecurity

Tear down a competitor''s repo or product into a feature inventory and adoption choices. Use when: comparing us to another tool or asking what to steal.

  • 446 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 2, 2026
ai-agentspythonrustgobashexpressrailsgitapisecurity

Works with

  • terminal
  • cli
  • api

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned October 5, 2026

npx -y skills add boshu2/agentops --skill reverse-engineer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Reverse Engineer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Reverse Engineer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/boshu2-reverse-engineer-deeaf798/badge)](https://www.skillsdirectory.com/skills/boshu2-reverse-engineer-deeaf798)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: reverse-engineer
description: 'Tear down a competitor''s repo or product into a feature inventory and adoption choices. Use when: comparing us to another tool or asking what to steal.'
practices:
- legacy-code-seams
- ddd-bounded-context
- adr
hexagonal_role: supporting
consumes: []
produces:
- '.agents/scratch/reverse-engineer/*/'
context_rel: []
skill_api_version: 1
user-invocable: true
context:
  window: fork
  intent:
    mode: task
  sections:
    exclude:
    - HISTORY
metadata:
  dependencies: []
  capabilities: [reverse_engineer]
  effects: [clone_upstream_repo, authorized_binary_execution, write_teardown_artifacts]
  canonical_status: canonical
  disposition: keep_specialist
  tier: execution
  internal: false
output_contract: validated phase-1 teardown directory, followed by a caller-authored and validated phase-2 steal-map.md
---
# Reverse Engineer

Reverse-engineer an external system into two things: a **teardown** (the
evidence: feature inventory, machine-checkable registry and specs, optionally a
security audit) and a **steal-map** (the decision: what to adopt into our
surfaces and what to leave behind). A decision row that must cite evidence can
be re-checked by anyone; a decision made from impressions cannot be re-checked
by its own author. Deciding from a competitor's README is the failure this
skill exists to prevent.

## ⚠️ Constraints — Hard Guardrails (MANDATORY)

- Only operate on code/binaries you own or have **explicit written authorization** to analyze — this matters because unauthorized teardown is the legal/IP line.
- Do not provide steps to bypass protections/ToS or to extract proprietary source/system prompts.
- Do not output reconstructed proprietary source or embedded prompts (index only; redact in reports) — to prevent reproducing protected IP.
- Redact secrets/tokens/keys if encountered; run the secret-scan gate over outputs to prevent credential leakage.
- Always separate **docs say** vs **code proves** vs **hosted/control-plane**.

## Evidence rules

- **Tag every capability by its source.** `code`: their source, binary or
  teardown registry shows it; cite the file:line or registry entry and record
  what the code actually does, which is often narrower than the claim. `docs`:
  a README, doc page or announcement says it; unverified. `hosted`: a service
  or control plane you cannot inspect.
- **No code access, no steal.** With only docs, a README or a landing page,
  every row about their implementation is `docs` and unverified. It can be
  `gap`, `park` or `reject`, never `steal`.
- **Prove our side on the live tree.** A `have` row cites our file. Every
  "missing" row carries the search that proved it (command and scope). Check
  what our current stack already offers before calling anything missing.
- **Independently checked, not self-report.** Facts on how they implement a
  capability come from code, cross-checked by a fresh reader, never from one
  context's summary. Model family is optional metadata, not a trust requirement.
- **The steal is the pattern, not the platform.** Their robustness is usually
  one idea (unification, a gate, a reconcile loop). Re-express it in our
  primitives; never vendor their runtime or storage engine.

## Phase 1 — teardown

With an authorized clone or binary, the script clones (pinned), scans the
CLI/config/artifact surface, writes the inventory, registry and specs, and
validates the teardown:

```bash
python3 skills/reverse-engineer/scripts/reverse_engineer.py <product> --mode=repo \
  --upstream-repo="https://github.com/org/repo.git" --upstream-ref=v1.0.0 \
  --output-dir=".agents/scratch/reverse-engineer/<product>/"
```

Binary mode requires `--authorized`; use the bundled demo fixture if you lack
authorization for a real binary. Flags, output inventory, earlier output paths,
fixtures and the self-test are in [the invocation reference](references/invocation.md).

Without code access (only a README, docs site or landing page), skip the
script: build the inventory and steal-map by hand with each row tagged `docs`
or `hosted`, and say that no teardown validator ran. When the code is readable
but the script cannot run on it, read the code directly and cite `file:line`
for each `code` row; the validator gap still gets reported.

## Phase 2 — steal-map

Map each capability onto **our** surfaces in
`.agents/scratch/reverse-engineer/<product>/steal-map.md`. The script stops
after validating Phase 1; it cannot truthfully decide whether our live tree
has, lacks, or should adopt a capability. The caller authors the map from the
registry plus a fresh read of our repository. A missing or malformed map is an
incomplete skill result, not a script success relabelled as a decision.

| Their capability | Our surface today | Verdict |
|---|---|---|
| `<feature>` (code: `<registry entry>`, or docs, or hosted) | `<our file / skill / CLI>`, or "none" plus the search that proved it | **have** / **gap** / **steal** / **park** / **reject** |

Each row gets exactly one verdict:

- **have** — our live tree already does it; cite the file and confirm it still holds.
- **steal** — we lack it, `code` evidence shows how they do it, and it advances
  our core. Take the pattern, re-expressed in our primitives.
- **gap** — we lack it and would want it if it holds up, but steal is not
  earned: their mechanism is `docs` or `hosted` only, or its value to our core
  is unshown. Name the evidence that would decide it.
- **park** — real, but deliberately not ours to build now: substrate we
  delegate (for AgentOps, ADR-0009 keeps scheduling, supervision and queues
  external) or downstream of a bet we have not made. Name it, don't build it.
- **reject** — conflicts with our doctrine (e.g. a completion edge with no check
  behind it, where we require checks and CI, plus one fresh judgment for a
  costly mistake).

When two seem to fit, reject beats park, and park beats steal or gap; between
steal and gap, the evidence rules decide.

## Route one-way-door adoptions into planning

If adopting a steal is a **one-way door** (an architecture fork, a new bounded
context, a storage or data migration), do not decide it here. Hand the
steal-map to Plan. Dueling Idea Genies or Premortem may challenge the choice as
advisory evidence. Plan alone shapes the selected option in the existing intent
source; neither strategy grants readiness or continuation authority.

## Validation

After authoring `steal-map.md`, validate the complete output with
`$output_dir`, `$security_audit`, `$sbom`, and `$upstream_ref_set` (each
numeric flag `0|1`):

```bash
bash skills/reverse-engineer/scripts/validate-output.sh \
  --output-dir "$output_dir" --phase complete \
  --security-audit "$security_audit" --sbom "$sbom" \
  --upstream-ref-set "$upstream_ref_set"
```

Give the validated `steal-map.md` to Plan for one-way-door candidates; ordinary
`have`, `park`, and `reject` rows remain evidence-backed terminal decisions.

## Quality Rubric

- [ ] With an upstream ref, `feature-registry.yaml` and `clone-metadata.json` record the resolved commit.
- [ ] Every row tags `code`/`docs`/`hosted` and cites teardown evidence **and** our matching surface, or "none" with the search that proved it.
- [ ] Verdicts use the full set — `have`/`gap`/`steal`/`park`/`reject` — and no `docs` or `hosted` row is `steal`.
- [ ] One-way-door adoptions are supplied to Plan, not decided here.
- [ ] Secret-scan gate passed over all outputs; no proprietary source/prompts reproduced.
- [ ] The complete-output validator exits 0 before handoff, or the report says it did not run (docs-only mode).

| Problem | Cause | Solution |
|---|---|---|
| Steal-map is all "steal" | Skipped the park/reject rules | Substrate we delegate is **park**; doctrine conflicts are **reject** — not everything novel is worth adopting. |

## See Also

- [plan](../plan/SKILL.md) — shape selected steals in the existing intent source
- [idea-genie](../idea-genie/SKILL.md) — optional advisory challenge (duel mode)
- [premortem](../premortem/SKILL.md) — optional advisory challenge of the exact plan
- [research](../research/SKILL.md) — general exploration; this is its external-system specialization

## Reference Documents

- [references/invocation.md](references/invocation.md) — flags, outputs, earlier output paths, fixtures, self-test, script troubleshooting
- [references/reverse-engineer.feature](references/reverse-engineer.feature) — executable spec: repo-mode feature catalog + code map, binary-mode security audit, durable spec artifacts

Files in this skill

  • .gitignore19 B
  • SKILL.md12.2 KB
  • agents/openai.yaml385 B
  • fixtures/cc-sdd-v2.1.0/cli-surface-contracts.txt1.4 KB
  • fixtures/cc-sdd-v2.1.0/clone-metadata.json156 B
  • fixtures/cc-sdd-v2.1.0/docs-features.txt454 B
  • fixtures/cc-sdd-v2.1.0/feature-registry.yaml843 B
  • references/reverse-engineer.feature2.4 KB
  • references/templates/postmortem.md.tmpl433 B
  • references/templates/security/attack-surface.md.tmpl310 B
  • references/templates/security/authn-authz.md.tmpl294 B
  • references/templates/security/crypto-review.md.tmpl283 B
  • references/templates/security/dataflow.md.tmpl298 B
  • references/templates/security/findings.md.tmpl236 B
  • references/templates/security/reproducibility.md.tmpl237 B
  • references/templates/security/threat-model.md.tmpl331 B
  • references/templates/spec-architecture.md.tmpl918 B
  • references/templates/spec-clone-mvp.md.tmpl545 B
  • references/templates/spec-clone-vs-use.md.tmpl465 B
  • references/templates/spec-code-map.md.tmpl624 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…