data-extractlisted
Install: claude install-skill moonlight-lupin/data-toolkit
# Data Extract
Pull structured data **out of documents** and into a clean `.xlsx` + an audit report. The
counterpart to `data-tidy`: **tidy** cleans data that's already roughly tabular;
**extract** locates and pulls data from document-shaped sources (forms, multi-table PDFs,
scans). Both share one engine, so extracted data is normalised and reported the same way.
> **Self-sufficient & local engine.** No other toolkit needed. All processing — including OCR —
> happens on your machine: no cloud OCR, no external APIs, no third-party uploads. Note the AI
> agent driving the skill does send whatever it reads into its context to your AI provider;
> "never leaves the machine" is not claimed. See `../../PRINCIPLES.md#data-handling--pii-policy`.
>
> **Shared engine.** The cleanup primitives live at the plugin-root `scripts/`
> (`dataclean.py`, `ingest.py`); this skill's `scripts/extract.py` adds them to the path.
## Which mode?
| You have… | Mode | Use |
|---|---|---|
| a **form / certificate / confirmation** (label: value) | **fields** | `extract_fields` → one record per doc |
| a **document with one or more tables** | **table** | `list_tables` → `get_table` → the rows |
| **many documents, same shape** (e.g. 30 confirmations) | **fields, batched** | one record each → `fields_to_table` → one `.xlsx` |
## Workflow
### 0 — Intent (ask up front)
What's the document, and **which fields / which table** do you want out? For forms, the
**field list** (name + the labels to look for + t