AgentSkillsCN

altium-cli

利用 altium-cli 执行 Altium Designer 文件操作:原理图与 PCB 分析、元件库浏览、物料清单生成、网表提取,以及设计编辑。当用户提出以下需求时启用此工具:- Altium 文件检查或分析;- 原理图文档分析(物料清单、网表、元件信息);- PCB 文档分析(规则、层、布线);- 元件库浏览(SchLib、PcbLib、IntLib);- 项目管理(PrjPcb);- 封装尺寸测量或渲染;- 设计编辑或修改。

SKILL.md
--- frontmatter
name: altium-cli
description: >
    Use altium-cli for Altium Designer file operations: schematic/PCB analysis, library browsing, BOM generation, netlist extraction, and design editing.
    Activate when the user requests:
    - Altium file inspection or analysis
    - Schematic document analysis (BOM, netlist, components)
    - PCB document analysis (rules, layers, routing)
    - Library browsing (SchLib, PcbLib, IntLib)
    - Project management (PrjPcb)
    - Footprint measurement or rendering
    - Design editing or modification

altium-cli

A Rust CLI for reading, writing, and querying Altium Designer files. Designed for both direct usage and AI agent integration.

Architecture Overview

altium-cli is a pure CLI wrapper around the altium-format library:

code
┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│   CLI Command   │────▶│  altium-format   │────▶│  Altium Files   │
│  altium-cli     │     │  (Rust library)  │     │  .SchLib, etc.  │
└─────────────────┘     └──────────────────┘     └─────────────────┘

Key concepts:

  • Pure library: No daemon, no external dependencies
  • Multi-format: Supports SchLib, SchDoc, PcbLib, PcbDoc, PrjPcb, IntLib
  • JSON output: All commands support --json for machine parsing
  • Query language: CSS-like selectors for finding components

When to Use

Activate when the user requests:

  • Altium file inspection or analysis
  • Schematic document analysis (BOM, netlist, components)
  • PCB document analysis (rules, layers, routing)
  • Library browsing (SchLib, PcbLib, IntLib)
  • Project management (PrjPcb)
  • Footprint measurement or rendering
  • Design editing or modification

Quick Start

bash
# Inspect any file
altium-cli inspect components.SchLib --json

# Query components
altium-cli query design.SchDoc "R*"

# Schematic analysis
altium-cli schdoc bom design.SchDoc
altium-cli schdoc netlist design.SchDoc

# PCB analysis
altium-cli pcbdoc rules design.PcbDoc
altium-cli pcbdoc components design.PcbDoc

# Project management
altium-cli prjpcb overview project.PrjPcb
altium-cli prjpcb bom project.PrjPcb --grouped

# Library browsing
altium-cli schlib list components.SchLib
altium-cli pcblib measure footprints.PcbLib SOIC-8
altium-cli intlib search library.IntLib "LM358"

Command Reference

Quick Commands

CommandDescription
altium-cli inspect <file>View file structure and metadata
altium-cli query <file> <selector>Find records using selector syntax
altium-cli edit <file> -c <op>Edit schematic documents
altium-cli completions <shell>Generate shell completions

Schematic Document (schdoc)

bash
# Analysis
altium-cli schdoc overview design.SchDoc
altium-cli schdoc bom design.SchDoc
altium-cli schdoc netlist design.SchDoc
altium-cli schdoc power-map design.SchDoc
altium-cli schdoc blocks design.SchDoc
altium-cli schdoc signal-flow design.SchDoc CLK

# Components
altium-cli schdoc components design.SchDoc
altium-cli schdoc component design.SchDoc U1
altium-cli schdoc pins design.SchDoc -c U1

# Connectivity
altium-cli schdoc wires design.SchDoc
altium-cli schdoc nets design.SchDoc --group
altium-cli schdoc ports design.SchDoc
altium-cli schdoc power design.SchDoc

# Export
altium-cli schdoc json design.SchDoc --full

Schematic Library (schlib)

bash
# Browse
altium-cli schlib overview components.SchLib
altium-cli schlib list components.SchLib
altium-cli schlib search components.SchLib "LM358"
altium-cli schlib component components.SchLib LM358

# Create/Edit
altium-cli schlib create new.SchLib
altium-cli schlib add-component lib.SchLib MyPart
altium-cli schlib add-pin lib.SchLib MyPart -n VCC -x 0 -y 100
altium-cli schlib gen-ic lib.SchLib IC1 --pins "VCC,GND,IN,OUT"

PCB Document (pcbdoc)

bash
# Analysis
altium-cli pcbdoc overview design.PcbDoc
altium-cli pcbdoc rules design.PcbDoc
altium-cli pcbdoc components design.PcbDoc --layer top
altium-cli pcbdoc nets design.PcbDoc
altium-cli pcbdoc layers design.PcbDoc

# Routing
altium-cli pcbdoc tracks design.PcbDoc --net VCC
altium-cli pcbdoc vias design.PcbDoc
altium-cli pcbdoc polygons design.PcbDoc

# Edit
altium-cli pcbdoc create new.PcbDoc
altium-cli pcbdoc set-outline-rect design.PcbDoc 0 0 4000 3000
altium-cli pcbdoc add-track design.PcbDoc 0 0 100 100 --net VCC
altium-cli pcbdoc add-via design.PcbDoc 500 500 --net VCC
altium-cli pcbdoc add-rule design.PcbDoc clearance --value 10

PCB Library (pcblib)

bash
# Browse
altium-cli pcblib overview footprints.PcbLib
altium-cli pcblib list footprints.PcbLib
altium-cli pcblib search footprints.PcbLib "SOIC"
altium-cli pcblib footprint footprints.PcbLib SOIC-8
altium-cli pcblib measure footprints.PcbLib SOIC-8

# Render
altium-cli pcblib render-ascii footprints.PcbLib SOIC-8
altium-cli pcblib render-svg footprints.PcbLib SOIC-8 -o out.svg

# Create/Edit
altium-cli pcblib create new.PcbLib
altium-cli pcblib add-footprint lib.PcbLib SOIC-8
altium-cli pcblib gen-chip lib.PcbLib 0603
altium-cli pcblib add-dual-row lib.PcbLib FP 8 --pitch 50 --span 300

PCB Project (prjpcb)

bash
# Analysis
altium-cli prjpcb overview project.PrjPcb
altium-cli prjpcb documents project.PrjPcb
altium-cli prjpcb netlist project.PrjPcb
altium-cli prjpcb components project.PrjPcb
altium-cli prjpcb bom project.PrjPcb --grouped
altium-cli prjpcb diff-sch-pcb project.PrjPcb
altium-cli prjpcb validate project.PrjPcb --check-files

# Edit
altium-cli prjpcb create new.PrjPcb --name "My Project"
altium-cli prjpcb add-document project.PrjPcb sheet.SchDoc
altium-cli prjpcb set-parameter project.PrjPcb Revision "1.0"

# Sync
altium-cli prjpcb import-to-pcb project.PrjPcb --dry-run
altium-cli prjpcb sync-to-pcb project.PrjPcb --dry-run

Integrated Library (intlib)

bash
# Browse
altium-cli intlib overview library.IntLib
altium-cli intlib list library.IntLib
altium-cli intlib search library.IntLib "LM358" --limit 10
altium-cli intlib component library.IntLib LM358 --params
altium-cli intlib crossrefs library.IntLib --footprint SOIC-8

# Extract
altium-cli intlib extract-schlib library.IntLib -o symbols.SchLib
altium-cli intlib extract-pcblib library.IntLib -o footprints.PcbLib

Query Language

Record Selector (Domain-Specific)

PatternMatchesExample
<designator>Exact matchU1
<prefix>*Wildcard suffixR* (all resistors)
<prefix>??Fixed-length wildcardC?? (C01-C99)
$<part>Part number$LM358
~<net>Net name~VCC
@<value>Value@10K
<comp>:<pin>Component.pinU1:VCC

SchQL (CSS-Like)

SelectorDescription
component[field=value]Exact attribute match
component[field*=value]Contains match
component[field^=value]Starts with
pin[type=input]Pin type filter
net:powerNet classification

Edit Operations

bash
# Component operations
altium-cli edit design.SchDoc -c "move U1 1000 2000"
altium-cli edit design.SchDoc -c "delete R3"

# Connectivity operations
altium-cli edit design.SchDoc -c "add-wire 100,100,200,100,200,200"
altium-cli edit design.SchDoc -c "add-net-label VCC 1000 2000"
altium-cli edit design.SchDoc -c "add-power GND 500 500 POWER_GND 0"
altium-cli edit design.SchDoc -c "add-junction 1500 1500"
altium-cli edit design.SchDoc -c "add-missing-junctions"

# Routing and validation
altium-cli edit design.SchDoc -c "route U1.VCC 1000,500"
altium-cli edit design.SchDoc -c "validate"

Output Formats

bash
# Human-readable (default)
altium-cli schdoc components design.SchDoc

# JSON output
altium-cli schdoc components design.SchDoc --json

# Pretty JSON
altium-cli schdoc components design.SchDoc --pretty

Common Analysis Patterns

Generate BOM

bash
# Single schematic
altium-cli schdoc bom design.SchDoc --json > bom.json

# Full project (grouped)
altium-cli prjpcb bom project.PrjPcb --grouped --json > bom.json

Check Design Rules

bash
# List all rules
altium-cli pcbdoc rules design.PcbDoc

# Filter by type
altium-cli pcbdoc rules design.PcbDoc --kind clearance

Measure Footprint

bash
# Get dimensions
altium-cli pcblib measure footprints.PcbLib SOIC-8

# Visual check
altium-cli pcblib render-ascii footprints.PcbLib SOIC-8

Validate Project

bash
# Check integrity
altium-cli prjpcb validate project.PrjPcb --check-files

# Compare schematic vs PCB
altium-cli prjpcb diff-sch-pcb project.PrjPcb

Global Options

All commands accept:

OptionDescription
--jsonJSON output
--prettyPretty-printed JSON output
-v, --verboseVerbose output
-q, --quietErrors only

Coordinate System

Altium uses fixed-point coordinates: 10,000 internal units = 1 mil = 0.001 inch

All edit coordinates are in mils.

Supported File Types

ExtensionTypeReadWriteQuery
.SchLibSchematic LibraryYesYesYes
.SchDocSchematic DocumentYesYesYes
.PcbLibPCB LibraryYesYesYes
.PcbDocPCB DocumentYesYesYes
.PrjPcbPCB ProjectYesYes-
.IntLibIntegrated LibraryYes-Yes

Warning

code
WARNING: EXPERIMENTAL - WORK IN PROGRESS
Breaking changes expected. Use at your own risk.
BACKUP YOUR FILES IN VERSION CONTROL BEFORE USE