This website requires JavaScript.
Coupons
Ship to
Blog

Claude Code PCB Design: Can It Build a Real Board in EasyEDA Pro?

Published Oct 13, 2026, updated Oct 13, 2026

15 min

Table of Contents
  • Claude Code PCB Design Results: What the AI Built
  • How Claude Code Controls EasyEDA Pro Through the API Skill
  • How to Connect Claude Code to EasyEDA Pro From GitHub
  • Building a Multi-Page Schematic From a PDF With Claude Code
  • Making a Schematic JLCPCB Assembly-Ready With Live Stock Checks
  • EasyEDA Pro 3.2.149 API Issues and Fixes
  • PCB Component Placement with Claude Code
  • Autorouting an EasyEDA Pro Board With Freerouting
  • What Claude Code Cannot Do in PCB Design Yet
  • Conclusion
  • FAQs About Claude Code PCB Design

Key Takeaways

  • Claude Code PCB design: Using Claude Opus 5.5 and EasyEDA Pro 3.2.149, I converted a 47-component, three-page schematic from a PDF into a fully routed, two-layer PCB with zero DRC errors.
  • EasyEDA Pro integration: The EasyEDA API skill connects Claude Code to EasyEDA Pro through a local bridge server and the Run API Gateway extension. This allows Claude to control the editor via JavaScript, with a 30-second timeout per API call.
  • Design verification: A successful API response doesn't always mean the design is correct. By reading back and checking the netlist, I verified all 138 pin connections across 33 nets and identified six missing GND connections that needed fixing.
  • PCB routing: EasyEDA Pro 3.2.149 doesn't provide an autorouter through its API, so I used Freerouting in single-threaded mode. The vias were imported first, followed by the tracks, to complete the routing.
  • Manual review: Claude Code worked with coordinates and API data rather than directly viewing the board. Visual inspection, mechanical clearance checks, thermal considerations, and final component selection still required human review.

I designed a working PCB using Claude Code and EasyEDA Pro, with AI handling everything from schematic creation to PCB routing. I used Claude Opus 5.5 and the official EasyEDA API skill to connect Claude Code with EasyEDA Pro, allowing Claude to interact directly with the PCB design software.

In this article, I'll walk through the complete process, from setting up the API connection and integrating EasyEDA Pro with Claude Code. It rebuilt the three-sheet schematic of my CH32V006 component tester from a PDF, swapped out-of-stock parts, and routed a two-layer board to a clean DRC.

However, the process wasn't entirely smooth. Some component attributes were lost without warning, the API bridge timed out, and the autorouter was missing. Each issue required a workaround, which I'll also cover so you know what to expect when trying this yourself.

In this case study, you will learn:

  • How to connect Claude Code to EasyEDA Pro from GitHub
  • How to rebuild and verify a schematic from a PDF
  • How to route the board with Freerouting
  • Which steps still need a human engineer

claude code pcb design in easyeda pro

Figure: Claude Code PCB design result: the routed CH32V006 tester PCB

Claude Code PCB Design Results: What the AI Built

Claude Code, running Claude Opus 5.5, took a real 47-part design from a design specification document, and routed a two-layer PCB with zero DRC errors. I handled project creation, dialog approvals, and every sourcing decision.

The board is my CH32V006 three-probe component tester, a port of the AVR-based ArduTester to a WCH RISC-V microcontroller.

TaskDone by Claude CodeHuman StepResult
SetupInstalled the skill, started the bridge, ran the first API callEnabled Allow External InteractionLive link to EasyEDA Pro 3.2.149
SchematicPlaced 47 parts (27 unique LCSC devices) on 3 pagesCreated the empty projectEvery part is an LCSC library part with a footprint
Netlist checkRead back pins, wires, and labels, then compared them with the PDFReviewed the report138/138 pins, 33 nets, no shorts
Stock swapsChecked JLCPCB stock and proposed replacementsApproved each swap and kept the MCU8 part changes
PlacementPlaced all footprints from the written zone rulesClicked Apply on the import dialog71.1 × 50.8 mm, 2 layers, no pad collisions
RoutingRan Freerouting and imported the routesNone443 segments, 28 vias, 33/33 nets connected
DRCFixed reported errors and rebuilt the poursPasted the DRC log into the sessionSchematic: 0 errors, 0 warnings; PCB: 0 errors

How Claude Code Controls EasyEDA Pro Through the API Skill

Claude Code controls EasyEDA Pro by writing JavaScript that runs inside the open editor, is sent through a local bridge server, and is processed by the Run API Gateway extension. It edits the live design rather than generating circuit images.

claude code sends javascript to the bridge

Figure: Claude Code sends JavaScript to the bridge, which relays it to the Run API Gateway extension inside EasyEDA Pro

The EasyEDA API skill gives Claude Code three things:

  • API reference: About 120 classes, 62 enums, and 70 interfaces, so the model looks up real method signatures instead of guessing them.
  • Bridge server: A Node.js server that runs locally on your computer and connects Claude Code to EasyEDA Pro. It uses the local IP address 127.0.0.1 and automatically selects an available port between 49620 and 49629.
  • SKILL.md instructions: How to find the bridge, select an EasyEDA window, and send code.

How to Connect Claude Code to EasyEDA Pro From GitHub

Setup takes six steps:

1. Download the EasyEDA API skill.

2. Install the required dependency.

3. Register the skill with Claude Code.

4. Install the extension in EasyEDA Pro.

5. Start the local bridge server.

6. Run a test command to verify that Claude Code and EasyEDA Pro are connected and working correctly.

The AI PCB design guide for EasyEDA Pro covers prompting in more depth.

My setup used:

  • Windows 11 and the EasyEDA Pro 3.2.149 desktop client in local mode
  • Node.js 24 (the skill requires version 18 or later)
  • Claude Code with Claude Opus 5.5
  • Java 21, needed only for the Freerouting step

easyeda run api gateway extension

Figure: EasyEDA Run API Gateway Extension

Install the extension (Run API Gateway) from the extension manager under EasyEDA advanced settings.

The setup sequence: (copy and paste this sequence; in Claude, it will automatically set up all the things for you)

1. Download the skill from GitHub and unzip it.

2. Run npm install in the skill folder. The only dependency is the ws WebSocket package.

3. Register the skill with Claude Code. On Windows, I created a directory junction from Command Prompt (cmd.exe), because mklink is not a PowerShell command:

mklink /J "%USERPROFILE%\.claude\skills\easyeda-api" "C:\eda\easyeda-api-skill-main"

4. Install run-api-gateway_v1.0.6.eext in EasyEDA Pro from the Run API Gateway extension page.

5. Start the bridge as a standalone process in PowerShell:

Start-Process node -ArgumentList "C:\eda\easyeda-api-skill-main\scripts\bridge-server.mjs" -WindowStyle Minimized

6. Send the first test call from a Bash shell (Git Bash or WSL on Windows), using the port the bridge printed at start-up:

curl -X POST http://localhost:49620/execute \
  -H "Content-Type: application/json" \
  -d '{"code": "return await eda.dmt_Project.getCurrentProjectInfo();"}'

The easy method: Give this setup sequence to Claude, grant all required permissions, and it will automatically set it up for you. For more info, you can watch this video: AI Designed This PCB in 2 Hours.

Fixing "Bridge Not Found": Allow External Interaction

If the extension never connects, check its permission first. Without Allow External Interaction enabled in the Extension Manager, the extension's sys_WebSocket.The register call is blocked with no error message.

easyeda pro extension manager

Figure: EasyEDA Pro Extension Manager with Allow External Interaction enabled for Run API Gateway

After enabling it, use API Gateway → Reconnect. The extension stops retrying after five failed attempts, so a bridge that starts later needs a manual reconnection.

api gateway reconnect menu in easyeda pro

Figure: API Gateway Reconnect menu in EasyEDA Pro

Building a Multi-Page Schematic From a PDF With Claude Code

I provided Claude Code with the original three-page KiCad schematic as a PDF, along with the design specifications and a detailed pin map (CONNECTIONS.md). The CONNECTIONS.md file lists each microcontroller pin, its connected net, and the reason for that assignment. Based on this information, Claude Code organized the design into three schematic pages:

  1. MCU and Front End: Microcontroller and component measurement circuitry.
  2. Power and Interfaces: Power supply and external connections.
  3. OLED Interface: Display connections and supporting circuitry.

The process involved four main challenges: selecting the right components from the JLCPCB library, positioning them correctly, generating schematic pages, and handling API timeouts during the design process.

easyeda pro schematic first page

Figure: EasyEDA Pro schematic first page

  • Resolving Every Part to an LCSC Library Device: Claude Code resolved each part using lib_Device.getByLcscIds, so every symbol had a real footprint. It then placed each device once, read back its real pin positions, and deleted it, so later wires could land exactly on the pins.
  • Learning the EasyEDA Schematic Coordinate System: The schematic API uses 10-mil units, with y increasing upward. The A4 frame spans 0 to 1170 units horizontally and 0 to 825 units vertically.
  • Generating Pages From a Written Spec: Claude Code drew each page using power symbols, short labeled wire stubs, and global net names instead of long wires. Each connection stays local to its pin, which keeps it easy to verify.

Making a Schematic JLCPCB Assembly-Ready With Live Stock Checks

Using the connections.md references, Claude Code selected suitable components from the JLCPCB Parts Library. Claude Code checked JLCPCB stock for every part and proposed in-stock replacements, preferring Basic parts.

I reviewed and approved each suggested replacement to make sure it matched the original design requirements. Even components with similar specifications can differ in pinout, voltage ratings, tolerances, or electrical behavior, so every substitution needs to be checked before the schematic is finalized.

easyeda pro schematic drc reporting 0 errors and 0 warnings

Figure: EasyEDA Pro schematic DRC reporting 0 errors and 0 warnings

Each part's type, Basic or Extended, is shown in the JLCPCB Parts Library; see how to identify Basic and Extended parts before you upload a BOM.

Original PartReplacementLCSC PartLibrary TypeReason
680 Ω 0.1% (R1, R3, R5)680 Ω 1%C23228BasicIn stock; slightly lower accuracy on low-resistance and ESR readings
39k / 11k divider (R7, R8)18k / 5.1kC25810 / C23186BasicThreshold ratio 0.2208 vs. 0.220
0466.250NR fuse (F1)SMD1206P025TF 0.25 A PTCC20798Extended0.25 A hold current, resettable; it trips at a higher current and more slowly than the fast-acting fuse
2.2 µF 25 V (C6)10 µF 25 V 0805C15850BasicBasic part at the same voltage rating
MCP1700 (U3)XC6206P332MRC5446BasicSame SOT-23 pinout
BSS138 (Q1, Q2)2N7002C8545BasicWorks with the 3.3 V gate at 100 kHz I2C
C&K 7203SYCGE toggle (SW3)SS-23D07-G050 slideC54305660ExtendedOriginal toggle at 0 stock
Keystone 5015 test point (TP4)Bare padNot in BOMNoneNothing to source

EasyEDA Pro 3.2.149 API Issues and Fixes

Seven API problems in EasyEDA Pro 3.2.149 shaped this build. Several returned success while leaving the design wrong, so read-back checks were the reliable way to detect them.

SymptomCauseFix
Supplier Part reads "0603WAF4701T5E.1," and EasyEDA warns that component attributes do not match the supplier partParts placed through the API lose their attributesOne full modification () that sets supplier ID, MPN, manufacturer, name, and other properties together
The warning returns after a later editA name-only modify() breaks the attributes againRewrite all attributes in the same call every time
"Wire has multiple net names"Two different net labels on one connected wireKeep one net name per wire
Netlist export hangsThe export call never returnsBuild the netlist from read-back data, as the verifier does
DRC returns counts onlyThe API reports totals, not error locationsPaste the DRC log from the editor into the session

The GPT-6 Astra EasyEDA Pro review took a different approach to the same editor: it imported files rather than using the live API.

PCB Component Placement with Claude Code

Claude Code placed all 47 footprints from the written zone rules, then checked pad clearances with a script. EasyEDA's importChanges() call waits for a human to click Apply, so placement begins with a single manual step.

The zone rules came from the layout notes in CONNECTIONS.md:

pcb component placement with claude code

Figure: Placed the tester board with the probe, power, programming, and display zones

  • Probe header (J3): On the right edge, to keep the three probe traces short.
  • Threshold divider (R7, R8, C1): Tight to the MCU pin 5, away from the probe drivers.
  • Power section: USB-C, battery header, regulators, and switch along the bottom edge.
  • Programming header (J1): On the left edge.
  • OLED header (J2): At the top left.

A scripted check then compared every pad pair and found one overlap. The final layout has no pad collisions and nothing within 20 mil of the board edge.

Autorouting an EasyEDA Pro Board With Freerouting

The EasyEDA Pro 3.2.149 API has no autorouter call, so the board was routed outside the editor. Claude Code exported the pads to a Specctra DSN file, ran Freerouting headless, and drew the returned routes back through the bridge.

fully routed 2d view of final pcb

Figure: Fully routed 2D view of final PCB

The routing pipeline:

1. Export pad positions and nets from the open PCB to pads.json through the bridge.

2. Build the DSN with gen_dsn.py: 10 mil signal traces, 20 mil power traces, 8 mil clearance, and vias with a 12 mil drill and a 24 mil pad.

3. Run Freerouting v2.1.0 headless on Java 21. Releases from v2.2.0 onward require Java 25.

java -jar freerouting.jar -de tester.dsn -do t1.ses -mp 60 -mt 1 --gui.enabled=false

4. Check the returned SES file with check_ses.py, which must report "open nets 0".

5. Import the routes with import_ses.mjs, placing vias first and tracks second.

6. Run PCB DRC, then rebuild the copper pours.

What Claude Code Cannot Do in PCB Design Yet

In this workflow, Claude Code did not directly see the PCB layout. Instead, it worked with component coordinates and data returned by the EasyEDA Pro API. While it could create and modify the design, several important checks still required manual review:

  • Visual inspection: Checking component placement, trace routing, spacing, and the overall PCB layout.
  • 3D clearance: Verifying component heights, connector positions, and mechanical fit using the PCB's 3D view.
  • Thermal checks: Reviewing components that may generate heat and ensuring sufficient copper area for heat dissipation.
  • Datasheet verification: Checking pinouts, footprints, component dimensions, and electrical specifications against manufacturer datasheets.
  • Component selection: Reviewing part substitutions, checking JLCPCB stock availability, and confirming that replacements meet the design requirements.

These checks are important because passing a Design Rule Check (DRC) does not guarantee that a PCB is electrically correct, mechanically suitable, or ready for manufacturing.

For a broader comparison of tools used at different stages of PCB development, see AI Tools for PCB Design.

The open items when the scripts finished:

  • Visual review: No one had visually reviewed the routed layout. Silkscreen overlaps, part orientation, and overall placement still need a human pass.
  • SW3 slide switch: Its footprint pins are unevenly spaced, and the schematic assumes the slider shorts adjacent pins. The real contact layout and actuator direction need the datasheet drawing.
  • USB-C edge: Whether the receptacle must overhang the board edge is a mechanical check.
  • Battery polarity: J5 assumes pin 1 is +9 V, because the source PDF was ambiguous.
  • MCU sourcing: The CH32V006 must be consigned, or the design switches to the V005.
  • Manufacturing files: The Gerber, BOM, and pick-and-place (CPL) files still need to be exported and inspected.
  • In-built human steps: Project creation, the Apply click, the DRC log, and every approval.
  • Bridge stability: Low memory caused the bridge process to terminate twice while it was running as a Claude Code background task. Running it as a standalone process fixed this.

Conclusion

Claude Code PCB design works on real projects. Using EasyEDA Pro, I converted a 47-component, three-page schematic from a PDF into a fully routed PCB with zero DRC errors, demonstrating how AI can assist in the PCB design process.

Use it for placement, wiring, and routing, and verify each step with scripts that read back the design. Keep visual review, mechanical checks, and sourcing decisions with an engineer, and you get a verified layout without giving up control of the board.

jlcpcb pcb assembly service banner 1
Turn Your Verified PCB Design Into a Real Board
Get an Instant Quote
  • Once your design passes review, take it to manufacturing with JLCPCB. Upload your PCB files and get an instant quote to move from a verified design to a physical board.

FAQs About Claude Code PCB Design

Q: Can Claude Code Design a PCB on Its Own?

No. Claude Code can place, wire, and route a real board through the EasyEDA API, but it does not see the canvas. Visual review, mechanical checks, and sourcing still need an engineer.

Q: Does EasyEDA Pro Have an API for AI Agents?

Yes. The EasyEDA API skill exposes the EasyEDA Pro JavaScript API via a local bridge, allowing Claude Code and similar agents to run code in the open editor.

Q: Does the EasyEDA Pro API Include an Autorouter?

Not in version 3.2.149. Its API has no autorouting call, so this build routed the board in Freerouting and imported the routes through the bridge.

Q: How Do I Secure the EasyEDA API Bridge?

Run it only while you work, and stop it afterward. In skill version 1.1.43, the bridge has no authentication, so add a shared token and an Origin check to bridge-server.mjs.

Q: Why Does EasyEDA Say Component Attributes Do Not Match the Supplier Part?

Parts placed through the EasyEDA Pro 3.2.149 API lose their supplier attributes. Rewriting the supplier ID, MPN, manufacturer name, and other properties in a single modify() call clears the warning.

Keep Learning