Query functions now return plain data objects. Two renderers
(render_human, render_json) handle output formatting. A single
run_query dispatcher routes to the right data function by file
type and query name, then main() calls the appropriate renderer
based on --format. Eliminates duplicated *_json variants and
the OUTPUT_FORMAT global.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Generic S-expression parser feeding into KiCad-specific queries.
Supports .kicad_sch (summary, components, component, nets),
.kicad_pcb (summary, nets, net, footprints, footprint, traces),
and .kicad_pro (summary). The 'traces' command does BFS through
segments and vias to show the physical copper path from a specific
pad. All queries support --format=json for structured LLM output.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>