Skip to the content
PCBKitNew board
2 layers30 × 20 mmIndicator, the printed circuit board in 3D

Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

Size
30 × 20 mm
Copper layers
2
Thickness
1.6 mm
Parts
3
Nets
3
Pads
6
Tracks, vias
8, 0
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
5 Sep 2026
Updated
7 Sep 2026

Overview

Indicator is an open-source printed circuit board by tscircuit, from the tscircuit/pcb-generation-benchmark01 repository on GitHub. It is a 2-layer board of 30 × 20 mm with 3 parts on 3 nets, routed with 8 tracks and 0 vias.

Its parts include 1 resistor, 1 diode and 1 connector.

README

README.md

PCB Generation Benchmark

Project scaffold for a paired dataset comparing three ways of producing PCB designs from the same prompts:

Method IDWorkflowPrimary artifacts
tscircuit-codegenGenerate tscircuit source codeSource, dependency lockfile, build outputs
kicad-codegenGenerate KiCad files directly or through recorded scripts/APIsNative project, schematic, PCB, generation scripts
kicad-computer-useCreate and edit designs through KiCad's GUINative project, schematic, PCB, screenshots and action trace

Status: 10 draft prompts and a completed two-method generation pilot. The prompt catalog includes easy, medium, and hard prompts with topic labels. The pilot results contain 20 generated schematic/PCB outcomes, retained candidates, previews, and raw validation reports. Computer use was excluded at the user’s request. Some generated designs have failing checks or unverified requirements; execution completion is not design acceptance. A deterministic rule scorer is implemented; reusable generation adapters/runner and scoring calibration remain future work.

Layout

text
prompts/                 Shared prompt catalog and per-prompt assets
configs/                 Experiment and environment templates
methods/                 Workflow contracts for the three methods
schemas/                 Record conventions for future validators
templates/               Copyable prompt, run, and evaluation records
data/runs/               Raw runs, organized by experiment/prompt/method/replicate
data/evaluations/        Separate evaluation records linked to run IDs
data/releases/           Future versioned dataset manifests
src/adapters/            Reserved for method implementations
src/runner/              Reserved for orchestration
src/evaluation/          Reserved for scoring and artifact inspection
scripts/                 Reserved for future commands
tests/                   Reserved for future validation tests
reports/                 Comparison reports and figures
docs/                    Protocol, dataset card, implementation roadmap
work/                    Ignored scratch space

Start here

  1. Read docs/protocol.md and docs/roadmap.md.
  2. Copy templates/prompt/ into prompts/items/<prompt-id>/, replace placeholders, and add the ID to prompts/catalog.json.
  3. Copy configs/experiment.template.json to a named experiment configuration. Freeze its prompt revisions, model, budgets, tools, and repeat count before collecting data.
  4. When the runner exists, collect each prompt across all three methods using templates/run/. Store evaluations separately using templates/evaluation.template.json.

Template files are examples of structure, not actual dataset entries. Cataloged prompts are drafts awaiting review. Do not report placeholder metrics as measurements. The recorded pilot uses installed tools and isolated generation tasks; reusable automation and full benchmark collection remain future work.

Deterministic scoring

The scoring implementation evaluates frozen artifacts with versioned rules and fixed 30/30/20/20 weights. Pilot scoring results include per-rule evidence, critical failures, unknowns and possible score bounds. Run bun run score -- 2026-09-05-codegen-pilot-01 to reproduce them. Missing evidence remains null; no model judge is called.

Historical model-judge proposal

See docs/model-judging.md for the model-judge plan, evaluation/rubric.json for scoring rules, and configs/judge.template.json for fixed judge settings. Judgment and baseline-comparison templates record evidence, repeated scores, and improvement/regression decisions. The model judge and baseline-comparison flow remain scaffolds; deterministic scoring is implemented separately as described above.

Pilot results

Start with the results and PCB previews. The frozen configuration and execution notes record tool versions, budgets, the GUI exclusion, and context limitations. Eighteen runs used fresh subagents; two were generated by the parent after a hard agent limit. No comparative quality score is claimed.

Regenerate the file inventory and check prompt hashes/pair completeness with bun run collect -- 2026-09-05-codegen-pilot-01 --require-complete. This inventories existing artifacts and does not rerun generation.

Git and storage

Track prompts, configs, native design files, code, and compact evidence. Do not commit secrets. Large recordings should use an explicitly selected external store or Git LFS when configured; record their URI and SHA-256 in the run manifest. Neither external storage nor LFS is configured yet. Dataset and code licensing remain undecided; see docs/dataset-card.md.

Development with TypeScript and Bun

All active repository code runs with Bun. Install locked dependencies with bun install --frozen-lockfile.

  • bun run typecheck — check TypeScript.
  • bun test — scoring, geometry, artifact readers, archive integrity, saved-result parity, and website checks. Website checks use the existing generated bundle; run bun run build first after a clean checkout.
  • bun run rules — verify/reproduce the ten frozen v1 rule specifications.
  • bun run score -- 2026-09-05-codegen-pilot-01 — evaluate retained artifacts into a new immutable TypeScript evaluation archive.
  • bun run collect -- 2026-09-05-codegen-pilot-01 --require-complete — inventory existing runs.
  • bun run build — render PCB layers and build the website.
  • bun run website:publish — build and replace the existing public website using ohmx-box.

The PCB renderer calls the native KiCad CLI (KICAD_CLI or kicad-cli on PATH). Hosting uses the existing ohmx-box CLI. These are external tools, not Python repository scripts. Historical generation scripts and archived Python evaluator sources remain unchanged under data/ for reproducibility. Canonical prompts and frozen run inputs also remain unchanged.

Parts

3
QtyValueFootprintReferences
11kResistor_SMD:R_0805_2012MetricR1
15V INPUTConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ1
1REDLED_SMD:LED_0805_2012MetricD1

Questions

How big is the Indicator PCB?

It measures 30 × 20 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Indicator use?

3 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Indicator KiCad files?

From the tscircuit/pcb-generation-benchmark01 repository on GitHub, at the commit this page was made from: the board is data/runs/2026-09-05-codegen-pilot-01/led-indicator/kicad-codegen/replicate-1/artifacts/attempt-02/indicator.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Indicator design in my own project?

Its repository states no licence, so its author keeps all rights: ask tscircuit before reusing the design.

More from tscircuit/pcb-generation-benchmark01

10
  • 2 layers80 × 50 mmAnalog input, the printed circuit board in 3D

    Analog input

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    42 parts
  • 2 layers70 × 50 mmAttempt-02, the printed circuit board in 3D

    Attempt-02

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    24 parts
  • 2 layers65 × 65 mmMatrix, the printed circuit board in 3D

    Matrix

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    19 parts
  • 2 layers50 × 35 mmButtons, the printed circuit board in 3D

    Buttons

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    13 parts
  • 2 layers45 × 30 mmDriver, the printed circuit board in 3D

    Driver

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    12 parts
  • 2 layers45 × 30 mmDriver, the printed circuit board in 3D

    Driver

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    12 parts
  • 2 layers50 × 30 mmAttenuator, the printed circuit board in 3D

    Attenuator

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    11 parts
  • 2 layers45 × 35 mmHub, the printed circuit board in 3D

    Hub

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    10 parts
  • 2 layers30 × 20 mmDivider, the printed circuit board in 3D

    Divider

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    6 parts
  • 2 layers35 × 25 mmRc filter, the printed circuit board in 3D

    Rc filter

    tscircuit/pcb-generation-benchmark01

    Compare tscircuit code generation, KiCad file generation, and KiCad GUI design using shared difficulty- and topic-labeled PCB prompts and reproducible evaluations

    4 parts

Similar boards

  • 2 layers40 × 30 mmBlinky, the printed circuit board in 3D

    Blinky

    earthtojake/text-to-cad

    Design physical products with AI

    3 parts26kMIT
  • 2 layers51.9 × 16 mmPassive2-rpi non standard adapter, the printed circuit board in 3D

    Passive2-rpi non standard adapter

    hzeller/rpi-rgb-led-matrix

    Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO

    3 parts4.4kGPL-2.0
  • 2 layers16.3 × 16.3 mmSensor, the printed circuit board in 3D

    Sensor

    scottbez1/splitflap

    DIY split-flap display

    3 parts4.2k
  • 2 layersSub, the printed circuit board in 3D

    Sub

    atopile/atopile

    Design circuit boards with code! ✨ Get software-like design reuse 🚀, validation, version control and collaboration in hardware; starting with electronics ⚡️

    3 parts4kMIT
  • 2 layers85 × 30 mmDual stomp, the printed circuit board in 3D

    Dual stomp

    torvalds/GuitarPedal

    Linus learns analog circuits

    3 parts2.5kGPL-2.0
  • 2 layers124.5 × 33.7 mm172319-1 connector, the printed circuit board in 3D

    172319-1 connector

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    3 parts1.2k
  • 2 layers10.5 × 83 mmProgrammingAdapter, the printed circuit board in 3D

    ProgrammingAdapter

    stuartpittaway/diyBMSv4

    Version 4 of the diyBMS

    3 parts1.1k
  • 2 layers21.2 × 51.3 mmPico reset, the printed circuit board in 3D

    Pico reset

    hackclub/sprig

    🍃 Learn to code by making games in a JavaScript web-based game editor.

    3 parts1.1kMIT