PluginBench
Skill
Pass
Audit score 90

spec-miner

jeffallan/claude-skills

Reverse-engineer undocumented codebases to extract specifications, architecture, and API documentation from existing code.

What is spec-miner?

Spec Miner analyzes legacy or inherited codebases without documentation to extract specifications, map dependencies, and generate architecture documentation. Use it when onboarding to a new system, planning enhancements, or creating documentation from implementation.

  • Map code structure and dependencies using Glob and Grep patterns
  • Extract API routes and public interfaces from source code
  • Trace data flows and request paths through the system
  • Document observed behavior in EARS (Easy Approach to Requirements Syntax) format
  • Identify undocumented business logic and technical debt markers
  • Generate architecture and specification documents with code location references

How to install spec-miner

npx skills add https://github.com/jeffallan/claude-skills --skill spec-miner
Claude Code
Cursor
Windsurf
Cline

How to use spec-miner

  1. 1.Define analysis scope: identify whether analyzing full system or specific feature
  2. 2.Run exploration patterns using Glob to find entry points, configuration files, and core modules
  3. 3.Use Grep to locate technical debt markers (TODO, FIXME, HACK) and configuration usage
  4. 4.Read key files to trace data flows and understand request paths
  5. 5.Document observations in EARS format (Ubiquitous, Event-driven, State-driven, Optional patterns)
  6. 6.Create specification document including technology stack, module structure, observed requirements, and uncertainties
  7. 7.Save output as specs/{project_name}_reverse_spec.md

Use cases

Good for
  • Understanding a legacy codebase with no documentation before making changes
  • Creating API documentation by analyzing route definitions and request handlers
  • Onboarding new team members to an inherited project
  • Planning feature enhancements by understanding current implementation
  • Extracting non-functional requirements like caching, error handling, and security patterns
Who it's for
  • Developers inheriting legacy systems
  • Technical leads planning refactors or enhancements
  • New team members onboarding to undocumented codebases
  • Architects documenting existing systems
  • QA engineers understanding observable behaviors and edge cases

spec-miner FAQ

What tools does Spec Miner use to analyze code?

It uses Read, Grep, Glob, and Bash tools to explore file structure, search for patterns, and trace code flows without modifying the codebase.

What is EARS format and why use it?

EARS (Easy Approach to Requirements Syntax) structures observed behavior into four patterns: Ubiquitous (always true), Event-driven (triggered by conditions), State-driven (while in a state), and Optional (conditionally supported). It makes implicit requirements explicit and verifiable.

How do I know when I've explored enough?

The skill includes a validation checkpoint: confirm sufficient file coverage before writing documentation. If key entry points, configuration files, or core modules remain unread, continue exploration.

Can Spec Miner work on partial codebases?

Yes. You define the analysis scope at the start—you can analyze a full system or focus on a specific feature or module.

What should I do with uncertainties found during analysis?

Document them in a dedicated uncertainties section of the specification, marking areas that need clarification from domain experts or additional investigation.

Full instructions (SKILL.md)

Source of truth, from jeffallan/claude-skills.


name: spec-miner description: "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, inherited project, legacy analysis, code archaeology, undocumented features." license: MIT allowed-tools: Read, Grep, Glob, Bash metadata: author: https://github.com/Jeffallan version: "1.1.0" domain: workflow triggers: reverse engineer, legacy code, code analysis, undocumented, understand codebase, existing system role: specialist scope: review output-format: document related-skills: feature-forge, fullstack-guardian, architecture-designer

Spec Miner

Reverse-engineering specialist who extracts specifications from existing codebases.

Role Definition

You operate with two perspectives: Arch Hat for system architecture and data flows, and QA Hat for observable behaviors and edge cases.

When to Use This Skill

  • Understanding legacy or undocumented systems
  • Creating documentation for existing code
  • Onboarding to a new codebase
  • Planning enhancements to existing features
  • Extracting requirements from implementation

Core Workflow

  1. Scope - Identify analysis boundaries (full system or specific feature)
  2. Explore - Map structure using Glob, Grep, Read tools
    • Validation checkpoint: Confirm sufficient file coverage before proceeding. If key entry points, configuration files, or core modules remain unread, continue exploration before writing documentation.
  3. Trace - Follow data flows and request paths
  4. Document - Write observed requirements in EARS format
  5. Flag - Mark areas needing clarification

Example Exploration Patterns

# 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 Format Quick Reference

EARS (Easy Approach to Requirements Syntax) structures observed behavior as:

TypePatternExample
UbiquitousThe <system> shall <action>.The API shall return JSON responses.
Event-drivenWhen <trigger>, the <system> shall <action>.When a request lacks an auth token, the system shall return HTTP 401.
State-drivenWhile <state>, the <system> shall <action>.While in maintenance mode, the system shall reject all write operations.
OptionalWhere <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.

Reference Guide

Load detailed guidance based on context:

TopicReferenceLoad When
Analysis Processreferences/analysis-process.mdStarting exploration, Glob/Grep patterns
EARS Formatreferences/ears-format.mdWriting observed requirements
Specification Templatereferences/specification-template.mdCreating final specification document
Analysis Checklistreferences/analysis-checklist.mdEnsuring thorough analysis

Constraints

MUST DO

  • Ground all observations in actual code evidence
  • Use Read, Grep, Glob extensively to explore
  • Distinguish between observed facts and inferences
  • Document uncertainties in dedicated section
  • Include code locations for each observation

MUST NOT DO

  • Make assumptions without code evidence
  • Skip security pattern analysis
  • Ignore error handling patterns
  • Generate spec without thorough exploration

Output Templates

Save specification as: specs/{project_name}_reverse_spec.md

Include:

  1. Technology stack and architecture
  2. Module/directory structure
  3. Observed requirements (EARS format)
  4. Non-functional observations
  5. Inferred acceptance criteria
  6. Uncertainties and questions
  7. Recommendations

Documentation