Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

leanrea

One 8 KB skill file that does what REA does: no MCP server, no 207 tools, no setup.

REA (Reverse Engineer Anything) puts an MCP layer between your agent and tools it can already use: asar, otool, nm, go version -m, jadx, apktool, Ghidra, tshark, binwalk, sqlite3. leanrea drops that layer. It tells the agent which command is fastest for each kind of target, gives it ready-to-paste recon commands, and lists the traps that REA's code handles for you. The agent then runs the real tools itself.

REA 6.5.0leanrea
What gets installed25 MB npm package + MCP serverone SKILL.md
Instructions23.5 KB skill + 48.8 KB references8 KB
Tools added to the agent207 (3.35 MB of definitions)0 (uses Bash)
Context for "Reply OK", all tools loaded400.7k tokens, $1.6034.5k tokens, $0.09

Benchmark

Claude Code headless (claude -p), Sonnet 5.5, macOS arm64. 4 reverse-engineering tasks × 3 reps × 3 arms, with the arms run side by side. Answers are graded against hand-made keys.

armtotal wall timecostturnstokensscore
leanrea388 s$2.17552.40 M74/75
no skill479 s$2.21813.11 M67/75 (one refusal)
REA (MCP + its skill)627 s$3.361245.93 M75/75

Against REA, leanrea had 38% less wall time, 35% lower cost, 56% fewer turns and 60% fewer tokens, at the same accuracy. Its one partial miss named an older IPC channel instead of the v2 one (both channels exist).

The tasks:

  • electron: trace a feature through a real Electron app's app.asar (native function → main-process class → IPC channels).
  • native: inventory the exports, a TCC permission check and the single-instance lock of that app's native addon (.node).
  • go: toolchain and dependency versions of a stripped gh binary.
  • deep: from disassembly alone, the exact socket path format, wire protocol and peer authentication of that lock.

The same operation run through REA's CLI vs the raw command:

operationREAraw
Go build info0.56 sgo version -m: 0.06 s
Mach-O overview3.32 sotool + dyld_info + nm: 0.04 s
Electron app analysis (real desktop app)fails on asar integrity until you pass a flag, then 47.9 s and 140 MB of JSONasar extract + rg -uu: 4.8 s, 24 KB

Full tables, the context-overhead runs and caveats: bench/BENCHMARK.md. Raw per-run metrics: bench/results/final.jsonl.

Caveats:

  • Only 3 reps per cell, one model, one machine.
  • REA was tested in its best case: Claude Code's deferred tool search loads MCP tools on demand. Agents that load every tool pay the 400k-token row.
  • Ghidra, Hopper and jadx weren't installed, so the native tasks ran on Xcode tools for both arms.
  • The plain model is already good at this. leanrea's gain over no skill (about 19% faster, 32% fewer turns) is smaller than its gain over REA.

Install

npx skills add aicodeking/leanrea

This uses the skills CLI. It finds the leanrea skill and asks which agents to install it for: Claude Code, Codex, Cursor, Gemini CLI, OpenCode and the others it supports.

Common variants:

npx skills add aicodeking/leanrea -g                    # install for your user, in every project
npx skills add aicodeking/leanrea -a claude-code -y     # Claude Code only, no prompts
npx skills add aicodeking/leanrea -g -a '*' -y          # every supported agent, user level
npx skills update leanrea                               # pull the latest version later

Manual install, if you prefer:

git clone https://github.com/aicodeking/leanrea
mkdir -p ~/.claude/skills && cp -R leanrea/leanrea ~/.claude/skills/

If an agent has no skills support, paste leanrea/SKILL.md into its rules or system prompt; it is plain text.

Use it:

/leanrea How does the search feature in Foo.app work? Show the evidence.

What's in the skill

  • Rules:
    • Work on a copy.
    • Route by file and magic bytes first.
    • Slice minified files instead of reading them.
    • Batch probes into one shell call.
    • Search extracted trees with rg -uu, because bundlers hide code in dot-folders like .webpack/.
    • Mark each claim as seen, inferred or unknown.
  • Router: the fastest command for each target type:
    • Electron/asar (IPC, preload, contextBridge, fuses)
    • minified web bundles and source maps
    • Hermes/bytenode
    • Mach-O (exports, imports, entitlements, ObjC/Swift)
    • native disassembly, ELF/PE
    • Go buildinfo, Rust cargo-auditable, .NET, Android APKs, the Flutter snapshot hash
    • WASM, SQLite, plists, pcap/HAR, firmware
    • websites and runtime tracing
  • First moves: one paste-and-run command each for native binaries and Electron apps. Each gets the whole inventory in a single tool call.
  • Speed patterns: start from strings and imports, find a string's function through the otool literal-pool comments, read call sequences rather than every instruction, and diff inventories before diffing code.

Reproduce the benchmark

Needs macOS with the target Electron app installed (see bench/setup.sh), gh from Homebrew, Node, and Claude Code logged in.

cd bench
./setup.sh        # installs rea-agents@6.5.0, copies the targets into bench/work (gitignored)
./run_all.sh      # 36 runs, about $8 on Sonnet
./ctx.sh          # context-overhead probe
python3 mcp_list.py node work/rea-install/node_modules/rea-agents/scripts/rea.mjs --mcp   # REA tool count + size

The answer keys in tasks.json match the app versions used here and a gh built with go1.27.1. Other versions need new keys.

Credit

REA is an impressive, well-documented project by the morluto team. Most of the gotchas in this skill came from reading their code and docs. leanrea isn't affiliated with REA. It is just a test of whether a model with plain tools and a short note can do the same work faster.

MIT licensed.

关于 About

One 8 KB skill that replaces REA (Reverse Engineer Anything): plain CLI tools, no MCP. Benchmarked: 38% faster, 35% cheaper.

语言 Languages

Python61.1%
Shell38.9%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
0
Total Commits
峰值: 1次/周
Less
More

核心贡献者 Contributors