CommunityCodierung & Entwicklunggithub.com

Hardware-in-the-Loop

Richtet ein und führt die agentengesteuerte Hardware-in-the-Loop-Engineering-Methode für ein Hardwareprojekt aus – generator-first KiCad-Boards mit Freerouting und Live-Bauteilprüfung, parametrisches CadQuery-CAD mit Plug-in-Teilen und Masse-/Schwerpunkt-Tabellen, hostgetestete Firmware gegen einen digitalen Zwilling, eine PowerShell-CI-Matrix mit No-Shortcut- und Portabilitätsprüfungen, dev/main-Branching mit Merge-Sperren, Maschinen-Slots, detachierten Jobs, Nutzungslimit-Übergaben und Über-Nacht-Sessions, entweder im Einzelsitzungs- oder im Schwarm-Modus.

Was ist Hardware-in-the-Loop?

Die Hardware-in-the-Loop (HITL)-Methode ist ein strukturiertes, agentengetriebenes Engineering-Framework für Hardwareprojekte. Es automatisiert die Erstellung von KiCad-Leiterplatten (generator-first, mit Freerouting und Bauteilverifizierung), parametrischem CadQuery-CAD (mit Plug-in-Teilen und Massen-/Schwerpunkttabellen) sowie hostgetesteter Firmware gegen einen digitalen Zwilling. Die Methode unterstützt sowohl einen kostengünstigeren Einzelsitzungsmodus als auch einen ressourcenintensiven Schwarmmodus für parallele Arbeiten. Sie enthält eine vollständige CI-Pipeline (Windows/PowerShell), Branching mit Merge-Sperren, detachierte Langzeitjobs, Maschinen-Slots zur Ressourcenkontrolle sowie Über-Nacht-Automatisierung mit Nutzungslimit-Übergaben. Die Methode ist besonders nützlich, wenn Entwickleragenten Schaltungen, Gehäuse oder Firmware mit definierten Prüfpunkten (Gates) entwerfen sollen. Sie wird über ein Onboarding-Interview und ein Skript (scaffold.py) initialisiert, das eine vollständige Projektstruktur mit Vorlagen, CI-Konfiguration, Werkzeugen und einer Schwarm-Orchestrierung erzeugt. Die Implementierung folgt einer strengen Disziplin: keine Abkürzungen, jeder Schritt hat ein nachweisbares Gate, und Projektdaten werden strukturiert protokolliert. Unterstützte Plattformen sind Windows (über PowerShell) und Linux (über Bash). Die Werkzeuge umfassen KiCad 10, Java 21, Freerouting 2.1.0 und optional OSS CAD Suite. Die Methode ist für Teams konzipiert, die reproduzierbare, prüfbare Hardwareentwicklung mit KI-Agenten betreiben möchten.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Kemerd/claude-hardware-in-the-loop/tree/HEAD/skills/hardware-in-the-loop

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Hardware in the Loop

Sie richten ein Hardwareprojekt ein (oder führen es aus), bei dem Agenten die Technik erledigen und Prüfpunkte (Gates) sie beweisen. Lesen Sie diese gesamte Datei, bevor Sie handeln. Die Methode ist im Repository unter docs/ beschrieben (METHODE, PCB, CAD, FIRMWARE, SIM, SWARM, WERKZEUGE, LEKTIONEN); diese Datei ist das Verfahren.

0. Nennen Sie zuerst die Kosten

Sagen Sie dem Benutzer unverblümt Folgendes, bevor Sie irgendetwas anderes tun:

Die Durchführung dieser Methode mit einem Schwarm von Agenten ist teuer. In dem Projekt, aus dem sie stammt, verbrauchte ein Schwarmtag 4–5 Millionen Token, hauptsächlich durch das Aufwecken von Lane-Agenten, die jeweils 300–800k Token Kontext mit sich führten. Der günstigere Modus ist eine einzelne Sitzung ohne Unteragenten, die Schritt für Schritt arbeitet, lange Maschinenjobs getrennt ausführt und von einem Abschnitt „Wo ich aufgehört habe“ fortgesetzt wird. Welchen Modus möchten Sie? (empfohlen: Einzelsitzung)

Notieren Sie die Antwort als mode (single oder swarm). Erzeugen Sie keinen Unteragenten, bevor der Benutzer den Schwarm-Modus gewählt hat.

1. Onboarding-Interview

Führen Sie das Interview in references/interview.md durch den Fragen-Dialog: Blöcke von höchstens vier Fragen, die empfohlene Standardeinstellung zuerst bei jeder Frage. Wenn eine Frage keine Antwort erhält, nehmen Sie die Standardeinstellung und schreiben Sie „Standard angenommen“ daneben. Abdecken: Projektziel und Definition von „fertig“, Ziele in Reihenfolge, Budget, Stückzahlen, standardmäßig gedrucktes Material (Kohlefaser-Nylon / PETG / PLA / gefrästes Aluminium), Befestigung (Heißschraubeinsätze / gewindeformende Schrauben / Durchgangsschrauben), Gehäuse (versiegelt / belüftet / offen), mechanisches Spiel, PCB-Fertigungs- und Bestückungsdienstleister, MCU-Familie, Hauptversorgung und schlimmste Transiente, Platinenklasse und Beschichtung, Simulationsstufen (nativ / Isaac Sim / Unreal) und die GPU, Maschinenlimits (CPU-Grenze Standard 90 %, für das System freigehaltener RAM Standard 4 GB, freier Festplattenspeicher Standard 50 GB), Ablageort, Nutzungsauslöser (Standard 95 %), dauerhafte Entscheidungen.

Materialien, Befestigung, Gehäuseabdichtung und Spiel sind PROJEKTENTSCHEIDUNGEN: Wählen Sie sie niemals stillschweigend aus; fragen Sie, empfehlen Sie, notieren Sie.

Schreiben Sie die Antworten in answers.json im .tmp/-Verzeichnis des Ziel-Repositorys (Schema in references/interview.md).

2. Erzeugen Sie das Grundgerüst

python -I <skill>/scripts/scaffold.py --answers <repo>/.tmp/answers.json --dest <repo> [--with-examples] [--dry-run]

Es kopiert templates/ (README_AGENT.md, PROJECT_STRUCTURE.md, REQUIREMENTS.md, README.md, CODING_RULES.md, .gitignore, .gitattributes, windows/ci.ps1 + windows/ci/ (Gruppen audit und pcb), tools/ (Audit + Portabilität mit einer leeren nachverfolgten Baseline und Waiver-Datei), pcb/ (DESIGN_STANDARDS.md, tools/kicad_env.py, tools/board_pipeline.py, tools/distributor_verify.py), cad/ (cad_plugins.py, render.py, mass_cg_table.py), firmware/host_tests/hil_check.h, docs/bench/BENCH_REGISTER.md, docs/data/README.md, harness/swarm/ (AGENT_RULES, Slot / Detach / Watch / Merge Lock / Merge-to-Dev / Promote / WIP Backup / Handoff Hook / Status-Zeilen-Skripte) und .claude/settings.local.json (Statuszeile + PostToolUse-Hook)), füllt die Vorlagenvariablen, schreibt harness/swarm/machine.env und harness/swarm/PLAN.md für den gewählten Modus. Es überschreibt niemals eine vorhandene Datei; vergleichen Sie behaltene Dateien manuell und führen Sie zusammen, was nützlich ist. --with-examples fügt das Beispiel-Board (ein 2-lagiger 3,3 V LDO Breakout, der jeden Pipeline-Schritt ausführt) und den Beispiel-Gehäusebauer mit zwei Plug-ins hinzu.

Füllen Sie dann die Entscheidungstabelle in pcb/DESIGN_STANDARDS.md Abschnitt 0 aus den Antworten aus.

3. Werkzeuge

pwsh -File <skill>/scripts/setup_tools.ps1 -ToolsRoot <ein Ordner außerhalb des Benutzerprofils> [-VerifyOnly]
bash <skill>/scripts/setup_tools.sh --tools-root <verzeichnis> [--verify-only]          # Linux

KiCad 10 (winget), Java 21 (winget), Freerouting 2.1.0 (festgelegter SHA-256), OSS CAD Suite 2026-10-24 (festgelegter SHA-256, nur für FPGA-Projekte), eine CadQuery-Venv. Es schreibt <ToolsRoot>/hil_tools.env mit HIL_FREEROUTING_JAR, HIL_JAVA, HIL_KICAD_CLI, HIL_CQ_PYTHON. Fragen Sie, bevor Sie etwas systemweit installieren; führen Sie zuerst -VerifyOnly aus und zeigen Sie dem Benutzer, was fehlt. Nichts geht in das Benutzerprofil.

4. Git: main und dev

Im Ziel-Repository (fragen Sie, bevor Sie git in einem Repository mit bereits vorhandener Historie ausführen):

git init -b main            # wenn es noch kein Repository ist
git add -A && git commit -m "Projekt-Grundgerüst (Hardware-in-the-Loop-Methode)"
git branch dev
git push -u origin main dev # wenn ein Remote existiert

Verwenden Sie die konfigurierte Git-Identität der Maschine. Keine Zuschreibungszeilen oder Co-Author-Trailer. Niemals Force-Push. Führen Sie dann den ersten CI-Durchlauf aus und behalten Sie seinen Bericht als Hauptreferenz:

pwsh -File windows/ci.ps1 -Only audit

5. Bewaffnen Sie das Geschirr

  • .claude/settings.local.json verdrahtet usage_statusline.py (Statuszeile, Auslöser bei HIL_HANDOFF_PCT) und handoff_hook.sh (PostToolUse). Beweisen Sie den Hook: touch harness/swarm/HANDOFF_SELFTEST, führen Sie ein beliebiges Werkzeug aus, erwarten Sie den Kontext „Hook ist live“, löschen Sie die Datei.
  • Starten Sie die WIP-Sicherung getrennt: bash harness/swarm/detach.sh harness/swarm/wip_backup.sh .tmp/wip_backup.log.
  • Überprüfen Sie bash harness/swarm/locks/slot.sh status.
  • Die Leitsitzung läuft vom Haupt-Checkout (dort befindet sich harness/); Bearbeitungen erfolgen in Worktrees.

6. Arbeiten: Einzelsitzungsmodus (Standard)

Folgen Sie harness/swarm/PLAN.md (aus references/single-session-plan.md):

  1. Jeweils ein nummerierter Schritt, jeder mit dem Gate, das ihn beweist.
  2. Arbeiten Sie in .claude/worktrees/main-work auf swarm/main-work; committen, pushen, merge_to_dev.sh nach jedem grünen Gate.
  3. Schwere Jobs: eval "$(bash harness/swarm/locks/slot.sh take <art> <sie> "<job>" <GB>)", danach freigeben.
  4. Lange Jobs: bash harness/swarm/detach.sh <chain.sh> <log> und sofort bash harness/swarm/watch.sh <log> als Hintergrundaufgabe; fahren Sie mit dem nächsten Schritt fort, während er läuft.
  5. Besitzerfragen: gebündelt, empfohlene Standardeinstellung zuerst; angenommene Standardeinstellungen werden in den Plan geschrieben.
  6. Anhalten: „## Wo ich aufgehört habe“ anhängen (erledigt mit SHAs, laufende Jobs mit PIDs und Logs, genauer nächster Schritt).

7. Arbeiten: Schwarmmodus

Folgen Sie docs/SWARM.md und references/wave-checklist.md:

  1. Welle 1, Erkundung: Schreibgeschützte Agenten schreiben verifizierte Fakten mit Datei:Zeilen-Ankern in harness/swarm/recon_<bereich>.md.
  2. Welle 2, Plan: PLAN.md (references/plan-template.md) mit Spuren, ein Besitzer pro Datei (spurübergreifende Änderungen als Patch-Dateien in harness/swarm/handoff/), Schnittstellenerweiterungen, Abnahmenummern; briefs.md mit einer Kurzbeschreibung pro Spur (references/brief-template.md).
  3. Welle 3, Spuren in Worktrees swarm/<name>: Sonnet für mechanische Arbeiten (Ports, Codecs, Renderings, Tests, Docs), Opus für heikle Arbeiten (Steuerung, Physik, Geometrie, Signalintegrität). Jeder gibt den strukturierten Bericht zurück (references/structured-report.md).
  4. Welle 4, Skeptiker: Neue Agenten mit dem Diff und nur dem Bericht; audit_placeholders.py --changed-since origin/dev --fail-on-new, die CI-Gruppen der Spur, drei Zahlen erneut geprüft.
  5. Welle 5, Integration: Jede Spur landet auf dev mit merge_to_dev.sh (immer, auch rot, unter MERGE_LOCK); vollständige CI auf dev mit -Compare <main report> -FailOn regressions; promote_dev.sh nur bei null Regressionen.

Halten Sie Spuren wenige und Kurzbeschreibungen exakt; jedes Aufwecken eines Agenten mit großem Kontext kostet echtes Geld.

8. Disziplin (beide Modi)

  • PCB: Generator-first (docs/PCB.md). ERC 0/0, DRC 0 Verstöße / 0 unverbunden / 0 Parität bei Standard-Schweregraden, jede gekaufte Leitung live verifiziert, Fab-Set + STEP + Ergebnisse-JSON mit SHA-256. Handplatzierung durch Sie wird erwartet, wenn der Auto-Placer versagt. Weitere Lagen sind erlaubt; melden Sie die Preisdifferenz. Die Lockerung einer Regel erfordert eine zitierte Grundlage.
  • CAD: Builder + Plug-ins; eine Masse-/Station-/Schwerpunkttabelle (cad/mass_cg_table.py) bei jeder Teileänderung; Pass- und Kollisions-PNGs (cad/render.py) in docs/cad_decisions/<datum>/<thema>/.
  • Firmware: Out-of-Tree-Builds, Host-Suiten mit hil_check.h, Szenarien durch die echte Schnittstelle, Seed-Sweeps, Deterministismus; Hardware-ausstehend aufgelistet.
  • Keine unfertige Arbeit als fertig gezeigt; reine Testkonstanten erhalten BENCH B-xx-nn-IDs.
  • Maschine: Slots, unterdurchschnittliche Priorität, Timeouts, niemals töten, was Sie nicht gestartet haben, niemals find von einem Root aus, zuerst Festplatte prüfen, ein Unreal/GPU-Job gleichzeitig, kein Unreal-Start, während der Besitzer an der Maschine ist.

9. Übergabe und Übernacht

  • Wenn HANDOFF_NOW erscheint (der Hook teilt es Ihnen mit), hören Sie auf, Arbeit zu beginnen, und folgen Sie seiner Anweisung: committen, pushen, freigeben, harness/swarm/resume_<datum>/RESUME_<datum_zeit>_<spur>.md schreiben (references/resume-doc.md).
  • Bevor der Besitzer für die Nacht geht: eine getrennte Nachtkette und die Morgenfragen (references/overnight-questions.md). Die Nacht läuft mit den Standardeinstellungen; notieren Sie jede angenommene Standardeinstellung.

Verwandte Skills