Per-page bounded extraction of structured data from a single engineering drawing page image, using crop-first multiblock VLM reasoning. Drawing-type-aware (PFD implemented; P_AND_ID, ISOMETRIC, GA stubbed). Invoked by the DRAWING_EXTRACT orchestrator for per-page fanout.
Read one engineering drawing page image and extract targeted structured information from that page against an explicit DRAWING_TYPE + EXTRACTION_TARGET. This is a bounded extraction skill, not a full-page transcription skill.
One invocation processes one page and writes exactly one output artifact. No cross-page context. Orchestrator dispatches one invocation per page for parallelism.
TASK in generic shell mode, spawned by the DRAWING_EXTRACT orchestrator.Not the best fit for:
pdf2md-page or PDF2MD_PAGE instead)DRAWING_EXTRACT persona owns that)This skill is drawing-type-aware. Only PFD is implemented in v2. Other types are registered as stubs and fail fast at orchestrator entry.
| drawing_type | status | extraction_target | status |
|---|---|---|---|
PFD | implemented | top_equipment_header_basic | implemented |
PFD | implemented | top_equipment_header_detailed | implemented |
P_AND_ID | stubbed (fail-fast) | — | — |
ISOMETRIC | stubbed (fail-fast) | — | — |
GA | stubbed (fail-fast) | — | — |
(PFD, top_equipment_header_basic)(PFD, top_equipment_header_detailed)Any other combination rejects at orchestrator Phase 0 pre-flight with drawing_type '{type}' is registered but not implemented; see 'How to add a new drawing type' in AGENT_DRAWING_EXTRACT.md.
When the skill receives a DRAWING_TYPE of P_AND_ID, ISOMETRIC, or GA, it immediately returns RUN_STATUS=FAILED_INPUTS and writes a failure placeholder noting the type is registered but not implemented. No page-image reading or VLM reasoning is performed.
For one slice, this skill accepts the legacy EXTRACTION_MODE=top_equipment_header_with_dwg runtime override and remaps it to DRAWING_TYPE=PFD, EXTRACTION_TARGET=top_equipment_header_basic. A deprecation warning is emitted. Any other legacy EXTRACTION_MODE value rejects with unknown EXTRACTION_MODE '{value}'; use DRAWING_TYPE + EXTRACTION_TARGET.
If both legacy and new parameters are provided, new parameters take precedence and a warning is emitted.
RuntimeOverrides.IMAGE_PATH — absolute path to the drawing page PNGRuntimeOverrides.OUTPUT_PATH — absolute path to write the extraction outputRuntimeOverrides.PAGE_NUM — 1-indexed page numberRuntimeOverrides.TOTAL_PAGES — total pages in the source documentRuntimeOverrides.DRAWING_TYPE — PFD (v2 implemented types only)RuntimeOverrides.EXTRACTION_TARGET — target for the drawing typeRuntimeOverrides.REQUESTED_KNOWN_FIELDS — list of catalog field names (possibly empty)RuntimeOverrides.EXTRA_FIELDS — list of {name, description} pairs (possibly empty)RuntimeOverrides.REQUIRED_FIELDS — warning-only subset of requested fields (possibly empty)RuntimeOverrides.HEADER_IMAGE_PATH — cropped top-header PNG for the same pageRuntimeOverrides.TITLEBLOCK_IMAGE_PATH — cropped title-block PNG for the same pageRuntimeOverrides.HEADER_SLICE_PATHS — ordered list of overlapping top-header slice PNGs for multiblock reviewRuntimeOverrides.SOURCE_PDF_NAME — PDF filename for provenance in output| Key | Meaning | Default | Allowed values |
|---|---|---|---|
IMAGE_PATH | Absolute path to drawing page PNG | Required | .png file path |
HEADER_IMAGE_PATH | Absolute path to cropped top-header PNG | None | .png file path |
TITLEBLOCK_IMAGE_PATH | Absolute path to cropped title-block PNG | None | .png file path |
HEADER_SLICE_PATHS | Ordered list of overlapping header slice PNGs | [] | List of .png file paths |
OUTPUT_PATH | Absolute path for the single output artifact | Required | Parent directory must exist; must be a .md file |
PAGE_NUM | 1-indexed page number | Required | Positive integer |
TOTAL_PAGES | Total pages in source PDF | Required | Positive integer |
DRAWING_TYPE | Drawing-type selector | Required | PFD (v2); P_AND_ID/ISOMETRIC/GA (stubbed fail-fast) |
EXTRACTION_TARGET | Target within the drawing type | Required | See registry above |
REQUESTED_KNOWN_FIELDS | Catalog fields to capture (detailed only) | [] | List of catalog-field names |
EXTRA_FIELDS | User-defined fields (detailed only) | [] | List of {name, description} pairs |
REQUIRED_FIELDS | Warning-only required subset (detailed only) | [] | Subset of requested fields |
SOURCE_PDF_NAME | PDF filename for provenance | None | Any string |
Documented here as authoritative source. Catalog changes require a skill version bump.
| Field | One-line semantic definition |
|---|---|
equipment_type | Broad equipment class (e.g., "VESSEL", "PUMP", "COMPRESSOR", "EXCHANGER", "DRUM", "DRIVER", "HEATER") |
equipment_description | Specific equipment descriptor: make/model, pump or exchanger type, redundancy configuration, vessel internals, or other identifying detail (e.g., "ARIEL KBZ/6", "VERTICAL INLINE CENTRIFUGAL", "2 x 50%", "TWO PHASE c/w CYCLONIC ELEMENT", "8 POLE INDUCTION MOTOR") |
capacity_text | Throughput, volume, thermal duty, or capacity rating (e.g., "1624 kW", "4.2 m3", "100 BBL/day") |
power_text | Motor/driver rating or power specification (e.g., "100 HP", "5000 kW @ 891 RPM", "6700 BHP @ 891 RPM") |
All catalog fields are free-text descriptors in v2; no controlled vocabularies. Operators extend a run via EXTRA_FIELDS, not by implicitly redefining the catalog.
Reads are limited to:
IMAGE_PATH — current page drawing PNGHEADER_IMAGE_PATH — current page top-header crop (when provided)TITLEBLOCK_IMAGE_PATH — current page title-block crop (when provided)HEADER_SLICE_PATHS — current page header slices (when provided)The skill MUST NOT read any other files, and MUST NOT use any cross-page context.
Writes are limited to:
OUTPUT_PATH — exactly one structured artifact per invocationNo other files are written. OUTPUT_PATH's parent directory must already exist; the skill does not create directories.
In v2, the only canonical per-page artifact format is markdown_stub (a .md file with YAML frontmatter + findings table). Per-page CSV output is not supported in v2.
allowed-tools frontmatter field is intentionally omitted.DRAWING_EXTRACT agent) is responsible for any deterministic PDF-level cross-checking, header/title-block crop preparation, schema-consistency validation, and stub assembly. This skill does not invoke PDF-level tools itself.AGENT_DRAWING_EXTRACT.md § RATIONALE ("Why VLM for page extraction" and "Why crop-first with full-page context as fallback") for the design rationale behind the VLM/deterministic split and the crop-first workflow.Disallowed behavior:
OUTPUT_PATH.Every output stub (both basic and detailed targets) begins with YAML frontmatter carrying metadata that makes the stub self-describing. This enables deterministic assembly, schema-consistency validation, and safe resume.
top_equipment_header_basic frontmatter keys (required)---
drawing_type: PFD
extraction_target: top_equipment_header_basic
source_pdf: <filename>
source_page: <integer>
EXTRACTION_MODE | Legacy compatibility alias (deprecated) | None | top_equipment_header_with_dwg only |