sch edit symbol add <sch> <LIB_ID> <REF> <X,Y> [--lib-file PATH] | Add a symbol instance. If <LIB_ID> is already in the schematic's embedded (lib_symbols ...), clones an existing same-lib_id sibling (must be annotated, unmirrored, unit-1) and inherits its Value/Footprint/rotation/on_board/in_bom. Otherwise, with --lib-file <library.kicad_sym>, imports the symbol definition into (lib_symbols ...) and synthesizes a fresh instance (works for pinless symbols like Mechanical:MountingHole and for top schematics with empty (lib_symbols)). Adjust Value/Footprint/attributes afterwards with set-property / set-attribute. |
sch edit symbol move <sch> <REF> <X,Y> [--rotation R] | Move/rotate a symbol |
sch edit symbol move-property <sch> <REF> <KEY> <X,Y> [--rotation R] | Move a property field |
sch edit symbol add-pin <sch> <LIB_ID> <NUMBER> <NAME> <X,Y> --length L --type T [--rotation R] [--shape S] [--lib-file PATH] | Add a pin (updates embedded lib_symbols + .kicad_sym) |
sch edit symbol delete <sch> <REF> | Delete a symbol; reports connected taps but does not remove them |
sch edit symbol set-property <sch> <REF> <KEY> <VALUE> | Set any property (built-in or user-defined: MPN/LCSC/Manufacturer/...) |
sch edit symbol set-attribute <sch> <REF> <in_bom|on_board> <yes|no> | Set a schematic symbol boolean attribute; use on_board no for off-board BOM parts |
sch edit wire add <sch> <X1,Y1> <X2,Y2> [--type solid|default] | Add a wire segment |
sch edit wire delete <sch> <UUID> | Delete a wire |
sch edit label add <sch> <KIND> <NAME> <X,Y> [--rotation R] | KIND ∈ global/hier/local |
sch edit label move <sch> <UUID> <X,Y> [--rotation R] | Move a label |
sch edit label delete <sch> <UUID> | Delete a label |
sch edit junction add <sch> <X,Y> | Add a junction |
sch edit junction delete <sch> <UUID> | Delete a junction |
pcb edit footprint move <board> <REF> <X,Y> [--rotation R] | Move/rotate a footprint |
pcb edit footprint move-property <board> <REF> <KEY> <X,Y> [--rotation R] | Move a property field |
pcb edit footprint set-property <board> <REF> <KEY> <VALUE> | Set a property (refuses Reference — use schematic + pcb sync) |
pcb edit footprint move-layer <board> <REF> front|back [--at X,Y] [--rotation R] | Flip to F.Cu / B.Cu (mirrors geometry, preserves property positions) |
pcb edit zone set-polygon <board> (--uuid U | --name N | --net NET --layer LAYER) <X1,Y1> <X2,Y2> <X3,Y3> [...] | Replace a zone's outline polygon (≥3 points). Strips stale (filled_polygon ...) (KiCad refills). Rejects degenerate polygons (zero area, consecutive duplicate points) |
pcb edit zone add <board> <NET> <LAYER> <X1,Y1> <X2,Y2> <X3,Y3> [...] --copy-settings-from-uuid U | Add a new zone, inheriting settings (hatch/connect_pads/clearance/min_thickness/fill/thermal) from an existing zone. Net and layer must already exist. --name, --priority optional overrides. Secondary path: explicit settings flags instead of --copy-settings-from-uuid |
pcb edit zone delete <board> (--uuid U | --name N | --net NET --layer LAYER) | Delete a zone block entirely. Tracks/vias/other zones untouched |
pcb edit zone set-property <board> (--uuid U | --name N) <priority|clearance|min_thickness|thermal_gap|thermal_bridge_width|name> <VALUE> | Edit a single zone setting (KEY whitelisted). Strips (filled_polygon ...) after mutation |
pcb edit via add <board> <NET> <X,Y> [--size MM] [--drill MM] [--layers F.Cu,B.Cu] [--free] | Add a new via. Net must exist. Defaults size/drill from board (setup) (via_size/via_drill), else 0.8/0.4. UUID is deterministic from (net,xy,layers) — re-adding the same triple is idempotent |
pcb edit via delete <board> (--uuid U | --at X,Y [--tolerance MM]) | Delete a single via by uuid or nearest position. Multiple candidates within tolerance → error |
pcb edit via move <board> (--uuid U | --at X,Y [--tolerance MM]) <NEW_X,NEW_Y> | Move a via. Only (at ...) is rewritten; size/drill/net/layers/uuid unchanged |
pcb edit via set-property <board> (--uuid U | --at X,Y [--tolerance MM]) <size|drill|net|layers|free|locked> <VALUE> | Set a single via field (KEY whitelisted). layers is comma-separated; free/locked accept yes/no/true/false/0/1; net is name-validated |