SKILL.md
tscircuit
You are helping the user design electronics using tscircuit (React/TypeScript) and the tsci CLI.
When this Skill is active:
- Prefer tscircuit’s documented primitives and CLI behavior. If something is unclear, confirm by:
- Reading local files in the repo (e.g.,
tscircuit.config.json,index.circuit.tsx,package.json)
- Running
tsci --helpor the specific subcommand’s--help
- Avoid “inventing” JSX props or CLI flags.
Default workflow
- Clarify requirements (if not already given)
- Board form factor / size constraints
- Power sources and voltage rails
- I/O: connectors, headers, mounting holes, mechanical constraints
- Target manufacturer constraints (trace/space, assembly, supplier)
- Choose a starting point
- If the repo is not a tscircuit project, recommend:
- Install CLI, then
tsci initto bootstrap a project.
- If a form-factor template is appropriate (Arduino Shield, Raspberry Pi HAT, etc.), prefer
@tscircuit/commontemplates.
- Find and install components
- Use
tsci search "<query>"to discover footprints and tscircuit registry packages.
- For USB-C receptacles/connectors, prefer builtin syntax with
<connector standard="usb_c" />instead of importing from JLCPCB.
- Use one of:
tsci add <author/pkg>for registry packages (installs@tsci/*packages)
tsci import <query>when you need to import a component from JLCPCB or the registry.
- Write/modify TSX circuit code
- Keep circuits as a default-exported function that returns JSX.
- Use layout props intentionally:
- PCB:
pcbX,pcbY,pcbRotation,layer
- Schematic:
schX,schY,schRotation,schOrientation
- On large projects (5+ components), use
<schematicsection />to group components by function (e.g. "Power", "MCU", "IO"). This is one of the most important things for schematic readability. Assign each component aschSectionNameand manually position all members of a section in close proximity usingschX/schY.
- Use
<trace />for connectivity; prefer net connections (net.GND,net.VCC, etc.) for power/ground.
- Build and iterate
- Run
tsci check netlistbeforetsci check schematic-placement,tsci check placement, andtsci buildto catch connectivity issues early.
- Use
tsci check schematic-placementto validate schematic-side placement before checking PCB placement.
- Do not finalize unless both
tsci check schematic-placementandtsci check placementpass with no actionable placement violations; if violations exist, fix layout and rerun until clean.
- Use
tsci check trace-lengthto check for long straight line distances (before routing) or long routes (after routing)
- Run
tsci build --pcb-png [file]to inspect placement before checking routing.
- Run
tsci check routing-difficultyafter placement to identify potential areas of congestion.
- Run
tsci buildto compile and validate the circuit.
- DRC (Design Rule Check) errors can often be ignored during development—focus on getting the circuit correct first.
- If routing struggles, reduce density, use
<group />for sub-layouts, or change autorouter settings.
- Use
tsci devonly when you need interactive visual feedback (not typical for AI-driven iteration).
- Validate and export
- Run
tsci check netlistbeforetsci check schematic-placement,tsci check placement, andtsci buildwhen preparing to share/publish.
- Run
tsci build(and optionallytsci snapshot) before sharing/publishing.
- Use
tsci exportfor SVG/netlist/DSN/3D/library outputs.
- For manufacturing, obtain fabrication outputs (Gerbers/BOM/PnP) from the export UI after
tsci dev.
Safety and non-goals
- Treat electrical safety, regulatory compliance, and manufacturability as user-owned responsibilities.
- Do not publish (
tsci push) or place orders unless the user explicitly requests it.
Local references bundled with this Skill
- CLI primer:
CLI.md
- Syntax primer:
SYNTAX.md
- Workflow patterns:
WORKFLOW.md
- Pre-export checklist:
CHECKLIST.md
- Ready-to-copy templates:
templates/
- Helper scripts:
scripts/
Builtin Elements
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/analogsimulation.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/battery.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/board.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/cadassembly.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/cadmodel.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/capacitor.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/chip.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/connector.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/constraint.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/copperpour.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/coppertext.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/courtyardcircle.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/courtyardoutline.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/courtyardpill.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/courtyardrect.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/crystal.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/currentsource.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/cutout.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/diode.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/fabricationnotedimension.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/fabricationnotepath.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/fabricationnoterect.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/fabricationnotetext.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/fiducial.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/footprint.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/fuse.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/group.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/hole.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/inductor.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/jumper.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/led.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/mosfet.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/mountedboard.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/net.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/netalias.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/netlabel.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/opamp.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/panel.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/pcbkeepout.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/pcbnotedimension.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/pcbnoteline.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/pcbnotepath.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/pcbnoterect.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/pcbnotetext.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/pcbtrace.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/pinheader.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/pinout.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/platedhole.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/port.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/potentiometer.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/pushbutton.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/resistor.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/resonator.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/schematicarc.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/schematicbox.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/schematiccell.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/schematiccircle.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/schematicline.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/schematicpath.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/schematicrect.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/schematicrow.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/schematicsection.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/schematictable.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/schematictext.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/silkscreencircle.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/silkscreenline.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/silkscreenpath.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/silkscreenrect.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/silkscreentext.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/smtpad.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/solderjumper.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/subcircuit.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/subpanel.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/switch.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/symbol.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/testpoint.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/trace.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/tracehint.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/transistor.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/via.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/voltageprobe.md)
- [](https://github.com/tscircuit/skill/blob/HEAD/./elements/voltagesource.md)