Imported from fireostendere/mcp_diptrace (
skills/critical-net-router/SKILL.md). Install upstream withnpx skills add fireostendere/mcp_diptrace --skill critical-net-router. Copyright stays with the author.
Read runtime access before choosing between explicit-path MCP, a live bridge session, and native/headless CLI. Their availability is separate.
Critical-net router
RAG: engineering memory by default — shared workflow. Consult routing/return-path and transmission-line material before choosing constraints; use DipTrace PCB courses for implementation and verify the actual route.
Route an explicitly named scope. The local router is deterministic bounded 45-degree A*, not
push-and-shove.
Use public tools/list for exact callable names and get_capabilities for document/configured
feature availability.
Workflow
- Call
diptrace_status,get_capabilities, andget_document_info; require a PCB and freeze the SHA-256. - Read
get_design_rules,list_unrouted_connections, andanalyze_routing_congestion. Require concrete endpoints, allowed layers, via policy, and net or pair identity. - For one connection use
route_connection; for exported ratlines useroute_net. For a real pair useplan_diff_pair_routeorroute_diff_pair; never route the two legs independently. - Omit clearance only to resolve the document DRC TraceToTrace rule. An explicit caller value is millimetres and must be named in the report.
- Prefer
plan_route_netsplusapply_route_planfor a reviewable plan. Inspect SVG/JSON, then validate and use anexpected_sha256commit within the already authorized routing scope. A request for a plan alone never authorizes committing it. - Run
run_drcandrun_connectivity_check; rollback only this session's failed changes with a current hash guard. When native validation is in scope, use the headless PCB acceptance workflow; offline DRC does not invoke the real editor. - Emit
../shared/result.schema.json.
Quantitative boundaries
- One local route plan accepts at most 20 connections.
route_connectiondefaults to zero vias, a 3.0 detour factor, and at most 100,000 search nodes.- Multi-route rip-up/retry defaults to four attempts; this remains bounded local retry, not push-and-shove.
- A transaction accepts at most 100 operations and 500 conservatively counted affected objects/elements; this can be fewer than 500 unique physical objects.
The limits and defaults are implemented in
server.py,
service.py,
routing.py,
and
write_limits.py.
Runtime capabilities win.
Refusals
- Stop when pad endpoints, layer span, applicable clearance, or allowed via style is unresolved.
- Stop when an existing route contains arcs or jumpers that the requested rewrite cannot preserve.
- Do not describe congestion score as calibrated engineering risk.
- Do not use the external autorouter unless its DSN/SES geometry and job provenance gates succeed.
Search ranking is heuristic; exact rules, route geometry, preview, and post-checks are document.