This guide documents the workflow for adding or modifying parts in kmlib-local. Use KiCad 10.x stable.
lib_id
strings and on command lines. Use Thermal_Pad, not Thermal Pad.AP63205WU-7_Buck_Regulator.vendor/ is reserved for upstream
content, and is overwritten on sync. First-party parts belong in kmlib-local.ITEM_0_1 inside LIB:ITEM); if they disagree, KiCad refuses to open any
schematic using the symbol. The Symbol Editor handles this; hand-editing does not.The kmlib-local/ folder contains FEAST’s custom KiCad libraries. Components are organized into categorized KMLib_* libraries to avoid naming conflicts and improve discoverability.
.kicad_sym files are prefixed with “KMLib_” and organized into the following categories:
| Category | Includes |
|---|---|
| Aesthetic | Logos, labels, decorative elements |
| Power | GND, +5V, VREF, net-ties, ferrite beads (logical role) |
| Passives | R, C, L, resistor networks |
| Discrete_Semiconductors | Diodes, BJTs, MOSFETs, TVS |
| IC_Analog | Op-amps, ADCs, DACs, comparators |
| IC_Digital | Logic gates, flip-flops, buffers |
| IC_MCU_MPU | MCUs, MPUs, SoCs |
| IC_Power | Regulators, PMICs, motor drivers |
| Sensors | Temp, pressure, IMU, light |
| Connectors | Headers, JST, USB, terminals |
| Switches | Tactile, rotary, DIP |
| Electromechanical | Relays, motors, buzzers |
| Misc | Crystals, jumpers, test points |
.pretty directories are prefixed with “KMLib_” while .3dshapes folders have no prefix. They are organized into the following categories:
| Category | Includes |
|---|---|
| Aesthetic | Logos, labels, decorative elements (no 3dmodels) |
| Boards_Modules | Discrete boards, modules, shields |
| Passives_SMD | 0402, 0603, 0805, 1206, 1210, 1812 resistors, capacitors, inductors |
| Passives_THT | Resistors, capacitors, inductors |
| IC_SMD | SOIC, TSSOP, QFN, BGA packages |
| IC_THT | DIP, SIP packages |
| Connectors | Headers, JST, USB, terminals |
| Switches | Tactile, rotary, DIP switches |
| Relays | Signal and power relays |
| TestPoints | Various test point footprints |
| Mounting | Mounting holes, standoffs |
| Proto | Prototyping footprints for hand soldering and testing |
| Proto_Decorators | Prototyping decorator elements such as those for solder tracing |
Design blocks are stored under kmlib-local/blocks/ and use KiCad’s native Design Block format for reusable schematic fragments.
At the top level, design blocks are organized into category directories with the suffix .kicad_blocks.
Each category directory is prefixed with KMLib_ and represents a logical grouping of reusable circuit designs (for example: ADCs, Power, Interfaces, Microcontrollers).
Within each .kicad_blocks directory, individual reusable designs are stored as .kicad_block subdirectories.
Each .kicad_block directory represents a single design block and contains:
.kicad_sch schematic file implementing the circuit.json metadata file describing the block (name, description, versioning, etc.)They are categorized as follows:
| Category | Includes |
|---|---|
| ADCs | Analog-to-digital converter circuits |
| Analog | General-purpose analog signal conditioning |
| Digital | Digital logic support circuits |
| Interface | Communication and external interface circuits |
| Memory | Non-volatile and external memory devices |
| Microcontroller | MCU reference implementations |
| Networks_Active | Active network circuits |
| Networks_Passive | Passive networks |
| Power | Power management and regulation circuits |
| Sensor | Sensor devices and interfaces |
Several of the design blocks derived from: williamweatherholtz/kicad_subs.
The nRF54L design blocks are from hlord2000/nordic-lib-kicad.
Design blocks are reusable schematic fragments managed through KiCad’s Design Blocks panel. They allow you to save and reuse circuit designs across projects. See the KiCad documentation for more details: KiCad Design Blocks.
Prerequisites: The appropriate KMLib_<Category>.kicad_blocks library must already exist. If you need a new category library:
${KMLIB_LOCAL}/blocks/ and name as KMLib_<Category>.kicad_blocks.To save a new design block:
MCP73831_LiPo_Charger)..kicad_block directory with .kicad_sch and .json files.To edit existing blocks: Right click the design block → Properties… to modify metadata.
git add kmlib-local/blocks/KMLib_<Category>.kicad_blocks/<BlockName>.kicad_block/
git commit -m "Add <BlockName> design block: <brief description>"
The following steps cover adding or modifying individual symbols, footprints, and 3D models to kmlib-local.
Reference: family designator (U, J, etc.).Value: match the symbol name.Footprint: KMLib_<Category>:<footprint_name> once the footprint exists.Datasheet, Description, Keywords: copy from the datasheet.F.SilkS, B.SilkS, F.CrtYd, and F.Fab graphics following KiCad conventions.${KMLIB_LOCAL}/3dmodels/<category>/<model-file>.kmlib-local/3dmodels/<Category>.3dshapes/ matching the footprint category.${KMLIB_LOCAL}/3dmodels, for example: ${KMLIB_LOCAL}/3dmodels/<Category>.3dshapes/<model-file>.Footprint field to KMLib_<Category>:<footprint_name> matching the footprint library used.git status for unintended edits.Stage the categorized files:
git add kmlib-local/symbols/KMLib_<Category>.kicad_sym
git add kmlib-local/footprints/KMLib_<Category>.pretty/<new-footprint>.kicad_mod
git add kmlib-local/3dmodels/<Category>.3dshapes/<model-file>
Commit with a clear message referencing the part number.
If you added or removed a library, regenerate the committed library tables so a clean checkout still resolves everything:
python3 scripts/gen_lib_tables.py
Do not hand-edit anything under vendor/ to pick up an upstream change. Use
scripts/vendor_sync.py, which performs a three-way merge and moves the pin in
vendor.yaml, so the update stays traceable. A local fix to a vendored part is allowed and
will survive a sync — but prefer upstreaming it.