Install this skill

Paste this into Claude Code (VS Code panel, Adom editor, or terminal) to install:

Search the Adom Wiki for the skill "Tour" (slug: tour) at https://wiki-ufypy5dpx93o.adom.cloud/wiki/skills/tour and install it into my local ~/.claude/skills/tour/ directory. Fetch the skill_source content from the wiki page and save it as SKILL.md. Then confirm it's installed by showing the first 5 lines.
?
What is a skill? Skills are instructions that teach AI assistants like Claude Code how to perform specific tasks. The description below is loaded into the AI as context when you invoke this skill. Well-written skills make the AI significantly more effective. Like Wikipedia, anyone can improve a skill by clicking Edit AI Skill — or have your AI submit an edit on your behalf.

Description

Edit AI Skill

Gallia KiCad Feature Tour

An AI-guided interactive tour of Gallia's KiCad bridge commands. You orchestrate KiCad in real time — opening editors, parsing designs, searching libraries — while narrating to the user in a dark-themed side panel AND in chat.

HARD RULES — Follow Every Time

These rules come from direct user feedback. They are non-negotiable.

1. Be Very Talkative

  • The user complained about "dead air time" — there must be NO silent gaps
  • Every panel update should have a DETAILED description explaining what's happening, why it matters, and what the data means
  • Talk to the user in chat too between tool calls — explain your thinking
  • Descriptions should be 4-8 lines minimum, not 1-2 sentence stubs

2. Take a Screenshot at EVERY Step

  • After every bridge command, window operation, or panel update — take a screenshot
  • Read the screenshot with the Read tool to verify what's on screen
  • If something looks wrong, fix it before moving on

3. Verify Window Positions at Every Step

  • After taking a screenshot, CHECK that the expected KiCad window is visible and in the foreground
  • If it's not visible, re-issue window front and window position commands
  • Tell the user in the panel that you're verifying/fixing window positions
  • For steps that don't need a KiCad window (library searches), say so explicitly in the panel: "No KiCad window needed for this step — library search is pure file parsing"

4. Newlines in Panel Text

  • When passing --data or --description to tour_cli.py panel update, use \n for newlines
  • The CLI converts \\n\n automatically — just use \n in your bash strings
  • NEVER show literal \n to the user — always verify newlines render correctly

5. Panel Must Not Clip

  • The narration panel uses screen_height - 80 px to account for taskbar + titlebar
  • The "Quit Tour" button must ALWAYS be visible at the bottom
  • If you see it clipped in a screenshot, stop and fix it

6. Shut Down Panel at End of Tour

  • When the tour completes (final summary step), ALWAYS run:
    tour_cli.py panel stop
    
  • Also close any open KiCad editor windows
  • Do not leave the panel running after the tour ends

7. Handle Errors Gracefully

  • If a KiCad window shows an error dialog, dismiss it (PostMessageW VK_RETURN) and explain what happened
  • If a bridge command fails, show the error in the panel and move to the next step
  • Never crash the tour — skip problematic steps and continue

8. Kill Everything Before Starting

  • At the start of every tour, force-kill ALL KiCad processes and the old panel
  • Verify clean slate with tasklist | grep before proceeding
  • Check bridge server health before starting

Architecture

Claude Code (you — narrator + orchestrator)
  │
  ├── tour_cli.py panel start     → launch dark-themed narration panel (port 8799)
  ├── tour_cli.py panel update    → push step/title/description/status/data to panel
  ├── tour_cli.py panel stop      → shut down panel
  ├── tour_cli.py screenshot      → capture desktop PNG → Read tool → you analyze it
  ├── tour_cli.py highlight       → draw teal border overlay on screen (auto-dismiss)
  ├── tour_cli.py bridge          → HTTP POST to KiCad bridge server (port 8772)
  ├── tour_cli.py ipc-test        → run Rust IPC test binary
  ├── tour_cli.py ipc-layer       → set KiCad active layer via IPC (live!)
  ├── tour_cli.py window          → Win32 window find / position / close / front / wait
  └── tour_cli.py preflight       → check all prerequisites

Zero pip dependencies. Only Python stdlib (tkinter, urllib, ctypes, subprocess).

Setup & Preflight

# Discover paths
TOUR_DIR="$(cd ~/Github/adom-desktop/plugins/kicad/tour && pwd)"

# Check everything is ready
python "$TOUR_DIR/tour_cli.py" preflight

Preflight prints SCH_PATH and PCB_PATH — save those for bridge commands.

Screen size is 2560x1600 physical. Panel goes on the right (width=480). KiCad editors get positioned at 0 0 1840 1528.

Tour Startup Sequence

# 1. Kill everything
taskkill //F //IM kicad.exe; taskkill //F //IM eeschema.exe; taskkill //F //IM pcbnew.exe
tour_cli.py panel stop

# 2. Check bridge
tour_cli.py bridge health

# 3. Get screen size
tour_cli.py window screen-size

# 4. Launch narration panel
tour_cli.py panel start --port 8799

# 5. Screenshot to verify panel position and Quit button visibility
tour_cli.py screenshot
# READ the screenshot — verify panel is on right, Quit button visible at bottom

Panel Update Reference

tour_cli.py panel update \
  --step N --total 12 \
  --title "Step Title" \
  --act "ACT_NAME" \
  --description "Multi-line description\nwith newlines" \
  --status "Status text" \
  --status-color "#3fb950" \
  --data "Monospace data area\nfor tables and results" \
  --data-color "#3fb950"

Colors: green=#3fb950, yellow=#d29922, blue=#58a6ff, red=#f85149, teal=#00b8b1

Workflow Per Step — FOLLOW THIS EXACTLY

For EVERY tour step:

  1. Update panel — set step number, title, act, description (4-8 lines explaining what you're about to do and why it matters)
  2. Set status — "Running command..." with yellow color (#d29922)
  3. Execute — run the bridge/window/IPC command
  4. Update status — change to green (#3fb950) with results summary
  5. Update data area — format the results as a clean monospace table
  6. Verify window — if a KiCad editor should be visible:
    • Run window front "Editor Name" to ensure it's in foreground
    • Run window position "Editor Name" 0 0 1840 1528 if needed
  7. Screenshot — capture desktop, Read the PNG
  8. Analyze — verify the expected window is visible, panel looks right, button not clipped
  9. Fix issues — if window not visible, re-issue front/position commands; if panel text wrong, re-send update
  10. Narrate in chat — tell the user what you see, what's interesting, transition to next step

Tour Steps (12 Steps, 3 Acts)

Act 1: "DESIGN" — Analyze the Demo Schematic (Steps 1-6)

Step 1: Welcome

  • Panel: overview of what the tour will demonstrate (3 acts, 12 steps)
  • Data area: show the act breakdown
  • No KiCad window needed yet

Step 2: Open Demo Schematic

  • Bridge: open_schematic filePath=<SCH_PATH>
  • Window: wait → position (0,0,1840,1528) → front
  • Panel: explain that the bridge launches eeschema.exe via HTTP
  • Highlight the schematic area
  • Verify editor is in foreground via screenshot

Step 3: Schematic Statistics

  • Bridge: get_schematic_stats filePath=<SCH_PATH>
  • Panel: show component count, wire count, power symbols, etc.
  • Explain: "AI agents can instantly understand any design's scope"

Step 4: List All Components

  • Bridge: list_schematic_components filePath=<SCH_PATH>
  • Panel: format as Ref / Value / Footprint table
  • Explain: what each component does in the circuit

Step 5: Component Deep Dive (U1 — LM358)

  • Bridge: get_component_details filePath=<SCH_PATH> reference=U1
  • Panel: show all properties, footprint, datasheet, position
  • Explain: dual op-amp, SOIC-8 package, TI datasheet

Step 6: Generate BOM

  • Bridge: generate_bom filePath=<SCH_PATH>
  • Panel: format as Qty / Value / Package / Refs table
  • Explain: identical parts grouped (R1+R2 = qty 2), ready for procurement
  • Close schematic editor after this step

Act 2: "LIBRARIES" — Browse Component Libraries (Steps 7-9)

Step 7: Search Symbol Libraries

  • Bridge: search_symbols query=opamp limit=10
  • Panel: format results as Library / Symbol / Pins table
  • Explain: 224 symbol libraries, thousands of components, regex search
  • Note in panel: "No KiCad window needed — pure file parsing"

Step 8: Symbol Detail — LM358 Pin Map

  • Bridge: get_symbol_info library=Amplifier_Operational symbol=LM358
  • Panel: show full pin map — Pin# / Name / Type / Unit
  • Explain: AI can use pin data to auto-wire circuits correctly

Step 9: Search Footprint Libraries

  • Bridge: search_footprints query=QFP limit=10 (or 0805, SOIC, etc.)
  • Panel: format as Library / Name / Pads / Type table
  • Explain: 155+ footprint libraries, 15,000+ footprints, fast filename matching
  • Note: this command was added recently, searches system + user libraries

Act 3: "PCB" — PCB Board Analysis (Steps 10-11)

Step 10: Open PCB Layout

  • Close any lingering KiCad windows first
  • Bridge: open_board filePath=<PCB_PATH>
  • Window: wait → position → front
  • If error dialog appears, dismiss it (PostMessageW VK_RETURN)
  • Panel: explain what the PCB editor shows (copper traces, pads, board outline)
  • Verify PCB Editor is in foreground via screenshot

Step 11: PCB Statistics

  • Bridge: get_pcb_statistics filePath=<PCB_PATH>
  • Panel: format Board/Components/Routing sections
  • Explain: matches schematic (same component count), board dimensions, layer config
  • Close PCB editor after this step

Finale

Step 12: Tour Complete

  • Panel: "Tour Complete!" with full capabilities summary
  • Data area: list ALL bridge command categories
  • Status: "All 12 steps complete!" in green
  • Chat: recap table of all 12 steps
  • SHUT DOWN: tour_cli.py panel stop and close any remaining KiCad windows

CLI Reference

SubcommandPurposeExample
preflightCheck bridge, IPC, demo filestour_cli.py preflight
screenshot [path]Capture desktop to PNGtour_cli.py screenshot
highlight x y w hDraw highlight overlaytour_cli.py highlight 100 80 800 600 --label "Schematic"
bridge <cmd> [k=v]Send bridge commandtour_cli.py bridge get_schematic_stats filePath=...
ipc-test [--section N]Run IPC test suitetour_cli.py ipc-test --section 1
ipc-layer <id>Set active PCB layertour_cli.py ipc-layer 34
window <action> <title>Window managementtour_cli.py window wait "Schematic Editor"
panel <action>Narration panel controltour_cli.py panel start --port 8799

Highlight options

--color HEX       Border color (default: #00b8b1 teal)
--duration MS     Auto-dismiss time (default: 5000)
--label TEXT      Badge text above the highlight
--thickness N     Border width in px (default: 3)

Window actions

ActionDescription
find <title>List windows matching title substring
close <title>Close the first matching window
front <title>Bring matching window to foreground
position <title> x y w hMove and resize window
wait <title> [--timeout N]Block until window appears (default 15s)
screen-sizePrint screen width and height

Bridge commands available

Editor control: open_schematic, open_board, open_symbol_editor, open_footprint_editor, open_3d_viewer, close_symbol_editor, close_footprint_editor, close_3d_viewer, close_kicad

Schematic analysis: get_schematic_stats, get_schematic_hierarchy, list_schematic_components, get_component_details, list_schematic_nets

PCB analysis: get_pcb_statistics, list_pcb_nets, list_pcb_footprints, find_tracks_by_net

Libraries: list_symbol_libraries, search_symbols, search_footprints, get_symbol_info

BOM & netlist: generate_bom, generate_netlist, trace_connection, get_net_connections

Design checks: run_drc, run_erc

Export: export_gerber, export_pdf, export_svg, export_step, export_bom_csv

IPC layer IDs

LayerID
F.Cu (front copper)3
In1.Cu (inner 1)4
In2.Cu (inner 2)5
B.Cu (back copper)34

DPI / Coordinate Notes

  • Screen: 2560x1600 physical, 150% DPI scaling
  • highlight.py is DPI-unaware — pass physical pixel coordinates, it converts internally
  • win_manager.py IS DPI-aware (SetProcessDPIAware) — coordinates are physical pixels
  • Panel uses tkinter logical pixels (winfo_screenwidth/height - 80px for taskbar)
  • KiCad editors: position at 0,0 size 1840x1528 (physical pixels, leaves room for panel)

Troubleshooting

ProblemFix
Bridge OFFLINEpython ~/Github/adom-desktop/plugins/kicad/server.py (run in background)
Panel not startingCheck port 8799 not in use; kill old panel process
Quit button clippedPanel should use screen_h - 80 for height
Literal \n in panelCLI auto-converts \\n\n; check your escaping
KiCad window not in foregroundRe-issue window front "Editor Name"
PCB "Error loading" dialogDismiss with PostMessageW VK_RETURN, continue
Unicode error in window titlestour_cli.py uses .encode("ascii","replace").decode()
search_footprints timeoutAlready optimized — fast-path filename match only

Sub-Skills
?
What are Sub-Skills?

Sub-skills are community-contributed AI skill extensions for this component. They teach AI assistants about specific tools, configurators, or workflows.

Examples:

  • A manufacturer’s configuration tool for a motor controller
  • A community-written design guide for an amplifier circuit
  • An automated test/validation script for a sensor module

How to add one: Click Add Sub-Skill, provide the URL to your skill and a brief description. Submissions are reviewed by the Adom team before going live.

No sub-skills yet. Be the first to contribute one!

0 revisions · Updated 2026-04-16 10:56:13