Skip to content
breadkit-lint

Rule reference

Find what each check means, see an example, and learn how to fix it.

59 rules

Layout

  • Layout/AmbiguousSupplySource

    supply from: refers to a pin that matches more than one provided power output. Give each output a distinct positive pin in the part definition so the source has one matching return pin and voltage.

  • Layout/BodyOverlap

    Two component bodies intersect even though their leads use different holes. This rule checks rectangular modules with render.size_mm, DIP bodies whose complete pin rows establish their position, and circular 5 mm LED bodies (led_5mm or rgb_led_5mm). Touching edges do not count as an overlap.

  • Layout/DuplicateRef

    Component references and wire IDs must be unique within a circuit.

  • Layout/HoleConflict

    Only one component lead or supply terminal can occupy a physical hole.

  • Layout/HoleCovered

    A module or DIP body covers a hole used by another component lead or an electrical wire endpoint. The check uses the module's render.size_mm, or a complete DIP pin arrangement, and physical hole positions. Move the lead or wire endpoint to a visible hole; a hole on the same conductive strip is fine if it is outside the body.

  • Layout/InvalidColor

    A component or wire color is not a valid CSS color. Use a named color, hex, rgb(), or hsl().

  • Layout/InvalidHole

    The reference does not identify a hole on the selected board.

  • Layout/InvalidOption

    A component attribute has a value outside its part definition. Use an allowed value.

  • Layout/InvalidPlacement

    A DIP must straddle rows e and f; a fixed footprint must fit inside the board.

  • Layout/InvalidRoute

    A wire route is not supported. Use a route accepted by the breadkit DSL.

  • Layout/InvalidValue

    A component value cannot be parsed for its part category. Check digits and unit suffixes.

  • Layout/InvalidWireId

    A wire ID looks like a board hole and makes references ambiguous. Choose a distinct ID such as W20.

  • Layout/LeadSpan

    A two-lead part is placed farther apart than its declared max_lead_span_mm. The rule measures the straight-line distance between the two board holes using the board's 2.54 mm pitch.

  • Layout/NoFreeHole

    Automatic rail or pin-strip selection found no unoccupied hole.

  • Layout/PartOverride

    A custom part replaces a built-in definition. Verify its pinout and attributes before using it.

  • Layout/PinsInSameStrip

    Two pins of the same component share a conductive strip, bypassing the component.

  • Layout/SplitNetLabel

    The same net label appears on disconnected parts of the board. Connect those locations or use distinct names.

  • Layout/UnknownBoard

    The selected board definition cannot be loaded. Check the board name or the path supplied to use_boards.

  • Layout/UnknownOption

    Reports a component or offboard option that Breadkit does not recognize. The electrical and intent checks are skipped until the option is corrected.

  • Layout/UnknownPart

    The named part definition is not built in or loaded with use_parts.

  • Layout/UnknownPin

    A wire, label, or expectation refers to a pin that the component definition does not contain.

  • Layout/UnknownSupplySource

    supply from: refers to a pin that is not a provided power output of an offboard component. Check the component reference and choose one of its declared power outputs, such as UNO.5V.

  • Layout/UnknownTransistorModel

    Warns when a transistor model is not recognized. Breadkit uses a generic EBC pinout in this case, which may differ from the physical component.

  • Layout/UnmatchedParts

    The use_parts path matches no files. Check its spelling and location relative to the circuit file.

  • Layout/UnplacedPin

    One or more component pins have no board hole. Supply every required pin location or use a supported footprint placement.

  • Layout/WireOverIC

    A straight electrical jumper crosses a DIP IC body in the layout. This informational finding helps when planning a build where the jumper should not pass above the chip. Route the wire around the chip if clearance matters.

Electrical

  • Electrical/CapacitorVoltageRating

    Checks electrolytic capacitors with an explicit voltage rating, such as electrolytic :C1, "10u 16V", plus: "a1", minus: "a2". When DC bounds are available, the check uses the largest paired voltage difference across the capacitor at each source and resistor tolerance scenario, including resistor networks. Otherwise, it uses the highest known voltage estimate. Diode circuits use endpoint estimates; Electrical/DcBoundsIncomplete warns when a passing check does not establish safety across the full range.

  • Electrical/DanglingWire

    At least one wire end is not connected to another component, supply, or wire on that strip.

  • Electrical/DcBoundsIncomplete

    The declared source ranges and resistor tolerances could not be bounded completely. Current, power, and voltage findings can still identify an observed violation, but an absence of findings does not establish that every operating point is safe.

  • Electrical/FloatingInput

    An explicitly typed input pin has an electrical connection, but its net has no modeled voltage source, output driver, or fixed resistor path to one. Check whether it needs a pull-up, pull-down, or output connection.

  • Electrical/FloatingPin

    A component pin has no external connection. A pin listed with unused: is intentionally ignored.

  • Electrical/GpioOvercurrent

    A GPIO or output pin with a declared max_current carries more current than its rating in the DC model. The limit is in amperes in the part definition. This rule only evaluates a pin that is also an explicit, fixed-voltage provides terminal, so the output state and load current are known.

  • Electrical/I2CAddressConflict

    Two devices with the same address: share both SDA and SCL nets. Change one device's address or move it to another I2C bus.

  • Electrical/I2CPullupMissing

    An addressed component with both SDA and SCL pins has an externally connected bus line without a modeled positive resistance to a declared supply's positive net. The rule checks each line separately and ignores unconnected or unpowered buses.

  • Electrical/LedOvercurrent

    Checks an LED whose part definition declares max_forward_current. This includes model-specific diode parts with the needs_series_resistor flag. The DC model estimates its current using the supply, resistors, and that part's optional forward_voltage and on_resistance values. The rule reports a current above the declared limit.

  • Electrical/MinimumResistance

    A potentiometer wiper can reach either end of its resistive track. If it is the only current-limiting element in an LED path, the resistance can approach 0 Ω and the LED may be damaged. This rule checks connected power and GPIO paths at both wiper extremes. It does not flag a pot used only between its two end pins.

  • Electrical/MissingBaseResistor

    A pin explicitly typed output shares a conductive net with a part categorized as a transistor's explicit base pin. There is no series resistor between those two pins. Add a suitable resistor between the driver output and the transistor base.

  • Electrical/MissingDecouplingCapacitor

    A part categorized as an ic has explicit power and ground pins connected across a modeled voltage source, but no capacitor bridges those resolved nets. Place a suitable decoupling capacitor across the IC's supply pins.

  • Electrical/MissingFlybackDiode

    A part explicitly marked with flags: [needs_flyback_diode] has named positive and negative coil pins, but no reverse diode bridges their resolved nets. The rule checks a load only when a modeled supply terminal connects to one side and the other side connects to a modeled supply terminal or a non-diode component pin. A jumper ending on an empty strip is ignored. A protective diode must have its cathode on the coil's positive net and its anode on the negative net.

  • Electrical/MissingPullResistor

    An explicitly typed input connects to one side of a switch, and the other side reaches a declared supply terminal. With the switch open, the input has no modeled drive or pull resistor. Add a fixed pull-up or pull-down resistor to a supply terminal so the open state is defined.

  • Electrical/MissingSeriesResistor

    An LED has a known unprotected path across a supply or GPIO output. The check follows conductive diode and transistor paths but cannot prove current through every active device.

  • Electrical/NetLabelConflict

    One connected net has multiple distinct labels.

  • Electrical/NoCommonGround

    Multiple power supplies belong to disconnected supply-reference groups.

  • Electrical/PowerPinUnconnected

    A part pin marked role: power or role: ground does not reach the matching supply.

  • Electrical/RailPolarityMismatch

    An explicit voltage source drives both rails opposite their marked polarities: its positive terminal connects to a − rail and its negative terminal to a + rail. The check follows electrical jumper connections and uses rail polarity from the board definition. It does not infer polarity from wire colors or net labels.

  • Electrical/ResistorPowerRating

    Checks resistors with an explicit power rating, such as resistor :R1, "100 1/4W", pins: %w[a1 a2]. Complete DC bounds account for declared source voltage ranges and resistor tolerances across the network, including power peaks at interior resistance values. Diode circuits use endpoint estimates. If complete bounds are unavailable, the rule falls back to a known voltage estimate and the lowest allowed resistance, while Electrical/DcBoundsIncomplete warns that a passing check does not establish safety.

  • Electrical/ReversePolarity

    The positive pin of a polarized part is at a lower known potential than its negative pin.

  • Electrical/ShortCircuit

    Power constraints assign incompatible voltages to one connected net. The message includes a physical route when one is available.

  • Electrical/ShortedComponent

    A two-pin component's pins resolve to the same net, so current can bypass the component.

  • Electrical/SplitRail

    A used segment of a split power rail has no known supply potential while another segment of that rail is powered.

  • Electrical/SupplyOverload

    A supply with current_limit: is delivering more current than its declared limit. The value is in amperes: current_limit: 0.02 means 20 mA.

  • Electrical/SupplyVoltageRange

    The known voltage difference between a part's power and ground pins is outside its declared supply_range.

  • Electrical/VoltageDomainMismatch

    A signal pin with max_voltage metadata is above its allowed voltage relative to the component ground. Add a level shifter or divider, or use a compatible voltage source.

Intent

  • Intent/ConnectionMismatch

    Actual connectivity differs from a declared connected, isolated, or net expectation. The rule also reports calculated DC voltage or current outside a declared expect_voltage or expect_current range.

  • Intent/MeasurementUnavailable

    An expect_voltage or expect_current declaration cannot be checked because the DC model has no value for that net or component. The warning includes the reason, such as an active GPIO output with an unknown drive state or a floating voltage reference.

  • Intent/UnknownNet

    An expectation or label refers to a hole, pin, supply terminal, or net name that cannot be resolved.

Style

  • Style/WireColor

    A wire attached to a known positive or ground net uses a color outside the configured convention. Defaults are red or orange for positive voltage, and black, blue, or gray for ground.

Lint

  • Lint/RedundantDisable

    A lint_disable declaration suppresses no offense. Remove it or correct its rule and target.

  • Lint/UnknownRuleInDisable

    A lint_disable declaration names a rule that Breadkit Lint does not know. Check the rule name with bklint --list-rules; unknown names do not suppress any findings.