Kandle
A CLI that automatically imports external components into a KiCad project.
Install / Use
/learn @HarveyBates/KandleREADME
Kandle (KiCAD Component Handler)
What is it?
A CLI that handles external components in a KiCad project by automatically importing them into your project symbol, footprint and 3d-model libraries.
It supports files downloaded from several vendors such as:
- [x] SnapEDA
- [x] Ultra Librarian
- [x] Component Search Engine
The CLI will:
- [x] Handle the unzipping of files downloaded from the above providers.
- [x] Place symbols, footprints and models in a defined directory structure.
- [x] Convert KiCad v4 symbols (
.libfiles) to KiCad v6 symbols (.kicad_symfiles). - [x] Link a symbol and footprint automatically.
- [x] Automatically import the symbol *if a symbol library for that component exists (same goes for the footprint)
See it in action here
Or see an example project.
Installation
Download repository
git clone https://github.com/HarveyBates/kandle
cd kandle
mkdir build
cd build
cmake ..
make
make install # (optional, if not you need to add kandle/build/bin to your path)
If you want to permanently add the script to your path here is a tutorial.
Usage
Step 1
In your terminal navigate to your KiCAD project. You want to be in the same
directory as your .kicad_pro file. If not you will get an error message
saying "KiCad project not found in current working directory. Exiting.".
Step 2
Setup (initialise) the directory structure.
kandle -I
This will result in a directory structure like this:
your_kicad_project/
├─ components/
│ ├─ extern/
│ │ ├─ 3dmodels/
│ │ ├─ footprints/
│ │ ├─ symbols/
│ │ ├─ tmp/ <--- unzipped files will be stored here
├─ fp-info-table
├─ sym-info-table
├─ project.kicad_pcb
├─ project.kicad_pro
├─ project.kicad_sch
Step 3
Download a component from the supported vendors (as above). There is no need to rename the .zip file, unless you would like a alternative name.
Kandle will remove "ul_" (from Ultra-Librarian) and "LIB_" (from CSE). It will also replace all - or spaces with _.
Example: If the filename is
LIB_PESD 0402-140.zipit will becomePESD_0402_140.
Step 4
Execute kandle passing the file you just downloaded and the library the part belongs to.
Example: If the part is an operational amplifier called LM358 stored in your
Downloadsdirectory. Your command would look like this:kandle -f Downloads/LM358.zip -l operational_amplifier
kandle -f <your_download_file_name>.zip -l <library_name>
Step 5
Open Eeschema -> Preferences -> Manage Symbol Libraries -> Project Specific Libraries -> Add existing.
Using the above example, you would import the file components/extern/symbols/operational_amplifier.kicad_sym.
Step 6
Open PCBnew -> Preferences -> Manage Footprint Libraries -> Add existing.
Using the above example, you would import the file components/extern/footprints/operational_amplifier.pretty.
Attention Kandle will automatically change default text size of footprint names to 1 with a thickness of 0.15 (KiCAD defaults).
Step 7
Place on your Eeschema schematic. In the above example, you would search for operational_amplifier and then select LM358. The symbol should already be linked to the footprint.
All future symbols and footprints of type operational_amplifier will appear automatically so there is no need to repeat Step 5 again!
Help
KiCAD 3rd Party Component Management Tool
Usage:
kandle [OPTION...]
-I, --init Initialise a KiCAD project with Kandle.
-L, --list List existing component libraries.
-f, --filename arg Path to zipped (.zip) component file.
-l, --library arg Name of the library the component belongs to.
-h, --help Help information.
Found a problem
Submit an issue with:
- A link to the component (if the issue is related to a component you are trying to import).
- A description of the issue that you are facing.
License
This project is MIT licensed, as found in the LICENCE file.
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。

