Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Reverse-engineering specialist that extracts specifications from existing codebases. Use when working with legacy or undocumented systems, inherited projects, or old codebases with no documentation. Invoke to map code dependencies, generate API documentation from source, identify undocumented business logic, figure out what code does, or create architecture documentation from implementation. Trigger phrases: reverse engineer, old codebase, no docs, no documentation, figure out how this works, in
.claude/skills/jeffallan-spec-miner/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -28% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-20 | ✗→✓ | ▲ Improved | -29% | 0% |
| case-21 | ✗→✓ | ▲ Improved | -10% | 0% |
Reverse-engineering specialist who extracts specifications from existing codebases.
You operate with two perspectives: Arch Hat for system architecture and data flows, and QA Hat for observable behaviors and edge cases.
# Find entry points and public interfaces
Glob('**/*.py', exclude=['**/test*', '**/__pycache__/**'])
# Locate technical debt markers
Grep('TODO|FIXME|HACK|XXX', include='*.py')
# Discover configuration and environment usage
Grep('os\.environ|config\[|settings\.', include='*.py')
# Map API route definitions (Flask/Django/Express examples)
Grep('@app\.route|@router\.|router\.get|router\.post', include='*.py')EARS (Easy Approach to Requirements Syntax) structures observed behavior as:
| Type | Pattern | Example | |------|---------|---------| | Ubiquitous | The <system> shall <action>. | The API shall return JSON responses. | | Event-driven | When <trigger>, the <system> shall <action>. | When a request lacks an auth token, the system shall return HTTP 401. | | State-driven | While <state>, the <system> shall <action>. | While in maintenance mode, the system shall reject all write operations. | | Optional | Where <feature> is supported, the <system> shall <action>. | Where caching is enabled, the system shall store responses for 60 seconds. |
> See references/ears-format.md for the complete EARS reference.
Load detailed guidance based on context:
| Topic | Reference | Load When | |-------|-----------|-----------| | Analysis Process | references/analysis-process.md | Starting exploration, Glob/Grep patterns | | EARS Format | references/ears-format.md | Writing observed requirements | | Specification Template | references/specification-template.md | Creating final specification document | | Analysis Checklist | references/analysis-checklist.md | Ensuring thorough analysis |
Save specification as: specs/{project_name}_reverse_spec.md
Include:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 9,473 | 6,418 | -32% | 1 | 1 | 0% | 1,518 | 1,062 | -30% | 0 | 0 | — |
case-02 | fail→fail | 21,340 | 5,268 | -75% | 1 | 1 | 0% | 3,187 | 1,097 | -66% | 0 | 0 | — |
case-03 | fail→fail | 29,954 | 5,106 | -83% | 1 | 1 | 0% | 5,092 | 1,066 | -79% | 0 | 0 | — |
case-04 | pass→pass | 21,594 | 22,918 | +6% | 1 | 1 | 0% | 3,872 | 4,611 | +19% | 0 | 0 | — |
case-05 | pass→fail | 17,974 | 5,796 | -68% | 1 | 1 | 0% | 3,944 | 1,171 | -70% | 0 | 0 | — |
case-06 | pass→fail | 20,384 | 43,872 | +115% | 1 | 1 | 0% | 4,322 | 6,617 | +53% | 0 | 0 | — |
case-07 | pass→pass | 6,171 | 3,583 | -42% | 1 | 1 | 0% | 1,131 | 1,398 | +24% | 0 | 0 | — |
case-08 | fail→pass | 12,351 | 13,178 | +7% | 1 | 1 | 0% | 2,528 | 3,343 | +32% | 0 | 0 | — |
case-09 | pass→fail | 7,535 | 4,008 | -47% | 1 | 1 | 0% | 1,357 | 1,624 | +20% | 0 | 0 | — |
case-10 | fail→pass | 10,705 | 3,483 | -67% | 1 | 1 | 0% | 1,984 | 1,427 | -28% | 0 | 0 | — |
case-11 | fail→pass | 9,510 | 1,205 | -87% | 1 | 1 | 0% | 696 | 986 | +42% | 0 | 0 | — |
case-12 | pass→pass | 9,806 | 6,477 | -34% | 1 | 1 | 0% | 1,839 | 1,832 | -0% | 0 | 0 | — |
case-13 | pass→pass | 10,718 | 8,057 | -25% | 1 | 1 | 0% | 1,748 | 2,211 | +26% | 0 | 0 | — |
case-14 | pass→pass | 15,589 | 13,540 | -13% | 1 | 1 | 0% | 2,554 | 3,082 | +21% | 0 | 0 | — |
case-15 | pass→pass | 12,973 | 10,115 | -22% | 1 | 1 | 0% | 1,967 | 2,658 | +35% | 0 | 0 | — |
case-16 | pass→pass | 11,755 | 8,362 | -29% | 1 | 1 | 0% | 1,986 | 2,128 | +7% | 0 | 0 | — |
case-17 | pass→pass | 14,565 | 9,057 | -38% | 1 | 1 | 0% | 2,371 | 2,406 | +1% | 0 | 0 | — |
case-18 | pass→pass | 12,765 | 6,164 | -52% | 1 | 1 | 0% | 2,103 | 1,859 | -12% | 0 | 0 | — |
case-19 | pass→pass | 5,988 | 3,002 | -50% | 1 | 1 | 0% | 1,009 | 1,309 | +30% | 0 | 0 | — |
case-20 | fail→pass | 12,303 | 3,109 | -75% | 1 | 1 | 0% | 1,848 | 1,319 | -29% | 0 | 0 | — |
case-21 | fail→pass | 8,425 | 2,325 | -72% | 1 | 1 | 0% | 1,291 | 1,168 | -10% | 0 | 0 | — |
case-22 | pass→pass | 15,408 | 11,841 | -23% | 1 | 1 | 0% | 2,333 | 2,794 | +20% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +9 percentage points is the difference between those two pass rates over the 18 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.