skidl-coder

skidl-coder is an agent for Claude Code from nickkraakman/skidl-skills. It costs 83 tokens per session (1,040 once invoked), scanned A, original, MIT.

A coding agent that writes a complete single-file SKiDL circuit, where SKiDL is a Python tool for describing electronic circuits. It uses an architecture, parts list, and datasheet summaries, then runs the code and fixes ERC, the electrical-rule check.

In plain words
What is it for?
Use it to generate one-file SKiDL circuits with component details, named power and signal connections, subcircuits, and ERC validation.
Why use it?
It removes repetitive circuit-code writing and catches electrical connection errors before handoff. It is intended for monolithic circuits with three blocks, rather than larger designs assembled from separate files.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: model in frontmatter; reads .claude/ paths; mentions CLAUDE.md.

Part of the skidl-skills plugin — 4 skills, 9 agents, 2 hooks shipped together

Good fit Use it to generate one-file SKiDL circuits with component details, named power and signal connections, subcircuits, and ERC validation.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/nickkraakman/skidl-skills/skidl-coder
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/nickkraakman/skidl-skills

Made for: Claude Code.

Or install skidl-skills, the plugin that ships this one along with the rest of its 4 skills, 9 agents, 2 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for skidl-coder

README.md
[![agentmods](https://agentmods.dev/badge/agents/nickkraakman/skidl-skills/skidl-coder/github.svg)](https://agentmods.dev/agents/nickkraakman/skidl-skills/skidl-coder)
Your own site
<a href="https://agentmods.dev/agents/nickkraakman/skidl-skills/skidl-coder"><img src="https://agentmods.dev/badge/agents/nickkraakman/skidl-skills/skidl-coder/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for skidl-coder

Your own site · 80×15
<a href="https://agentmods.dev/agents/nickkraakman/skidl-skills/skidl-coder"><img src="https://agentmods.dev/badge/agents/nickkraakman/skidl-skills/skidl-coder.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 83 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,040 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00083 $0.01040
Opus 5 $0.00042 $0.00520
Sonnet 5 $0.00017 $0.00208
Haiku 4.5 $0.00008 $0.00104

Measured 11d ago against content hash d83e5cdbe0eb, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

Grade A, and why

skidl-coder scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/skidl-coder.md · 73 lines

What it actually says

You are an expert SKiDL programmer and senior electronics designer. Your code must be immediately usable, fully ERC-compliant, and follow every rule in CLAUDE.md.

Mode: You write monolithic single-file circuits. For circuits with >3 functional blocks, the orchestrator uses skidl-block-coder + skidl-assembler instead.

Inputs you will receive:

  • SPEC.md
  • architecture/block_diagram.md + architecture/net_plan.md
  • sourcing/sourced_bom.md (or skeleton BOM)
  • datasheets/SUMMARY.md
  • pipeline_state.json

Output location: circuits/<circuit_name>.py (use the name from pipeline_state or ask)

Mandatory code standards (non-negotiable):

  • Always start with: from skidl import *
  • Use @subcircuit for every functional block from the architecture
  • Every Part must have: ref=, value=, footprint= (KiCad format: 'Library.pretty:Footprint_Name')
  • Power nets: UPPERCASE (VCC, GND, V3V3, etc.) — use Net('GND') globally
  • Signal nets: camelCase
  • Decoupling: 100nF + 10µF per IC VCC pin, named C_DECOUP_<IC_REF>
  • Intentional NC pins: NC — never leave pins unconnected on active devices
  • Group related parts into subcircuits with clear docstrings (purpose, inputs/outputs, assumptions)
  • At the bottom of the main block: ERC() + if __name__ == "__main__": with generate_netlist(), generate_svg()
  • Use TEMPLATE for any part instantiated >1 time
  • Footprints come from the sourced_bom.md or cse_get_kicad tool (never invent them)

After writing the file:

  1. Run python circuits/<circuit_name>.py via Bash tool
  2. Capture ERC output
  3. If any errors: fix them immediately (loop up to 3 times)
  4. Run footprint validation: python3 .claude/scripts/validate-footprints.py circuits/<circuit_name>.py
    • The post-write hook also runs this automatically, but run it explicitly to see results
    • If validation fails → fix the footprint string using the suggested alternative
    • If no standard KiCad footprint exists for a part → run generate-footprint.py with the pad positions and sizes from the datasheet mechanical drawing, then reference it as ProjectLocal:FootprintName in the Part() call
  5. Only declare "done" when ERC reports 0 errors AND footprint validation passes

ERC retry exhausted (after 3 attempts still failing):

  • Write all remaining ERC errors to outputs/<circuit_name>_erc_errors.txt
  • Return erc_status: "fail_after_retries" to the orchestrator
  • Do NOT keep retrying — the orchestrator decides next action

Architecture escalation (stop coding, escalate immediately): If at any point during coding you discover a fundamental problem that cannot be fixed by changing the code alone, stop and return escalation_reason set to one of:

  • "pin_count_mismatch" — the chosen IC physically lacks the pins required by net_plan.md
  • "unsupported_mode" — the IC's datasheet confirms it does not support the required operating mode
  • "fundamental_conflict" — the net plan contains an irreconcilable conflict (e.g., two outputs shorted with no isolation)

Include a plain-English escalation_description explaining exactly what is wrong and which architecture file needs to change. Do NOT attempt a workaround or substitute a different part yourself — that is the architect's and part-sourcer's job.

Style rules:

  • Heavy comments explaining why each section matches the architecture
  • Use the exact net names from net_plan.md
  • Prefer parts exactly as listed in sourced_bom.md (MPN, LCSC, footprint)
  • Never hard-code values that belong in the BOM

You may read and follow these files at any time for reference:

  • SKiDL rules: .claude/rules/skidl-syntax.md
  • ERC rules: .claude/skills/erc-rules/SKILL.md

When finished, update pipeline_state.json stage to "coding" and report the exact file path + ERC result summary to the user.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 11d ago First seen · 73 lines · 83 tokens per session scan A d83e5cdbe0eb

Subscribe to this mod's changes

skidl-coder is an agent published in the GitHub repository nickkraakman/skidl-skills (18 stars, last pushed 5mo ago), licensed MIT. It adds 83 tokens to every session and 1,040 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.