{"id":33116082,"url":"https://github.com/circuit-synth/kicad-sch-api","last_synced_at":"2026-02-28T19:32:17.365Z","repository":{"id":309847156,"uuid":"1037658920","full_name":"circuit-synth/kicad-sch-api","owner":"circuit-synth","description":"API for manipulating sexpr in KiCAD schematic editor","archived":false,"fork":false,"pushed_at":"2025-12-05T05:39:17.000Z","size":7940,"stargazers_count":26,"open_issues_count":9,"forks_count":6,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-13T23:47:44.801Z","etag":null,"topics":["automation","circuits","circuits-as-code","eda","kicad","mcp","python","sexpression-language","sexpression-library"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/circuit-synth.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-13T23:25:15.000Z","updated_at":"2026-02-13T03:13:42.000Z","dependencies_parsed_at":"2025-08-14T06:12:43.181Z","dependency_job_id":"6d9fdf1e-3736-4b87-b0b5-5a839fb18393","html_url":"https://github.com/circuit-synth/kicad-sch-api","commit_stats":null,"previous_names":["circuit-synth/kicad-sch-api"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/circuit-synth/kicad-sch-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/circuit-synth%2Fkicad-sch-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/circuit-synth%2Fkicad-sch-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/circuit-synth%2Fkicad-sch-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/circuit-synth%2Fkicad-sch-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/circuit-synth","download_url":"https://codeload.github.com/circuit-synth/kicad-sch-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/circuit-synth%2Fkicad-sch-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29948871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T18:42:55.706Z","status":"ssl_error","status_checked_at":"2026-02-28T18:42:48.811Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","circuits","circuits-as-code","eda","kicad","mcp","python","sexpression-language","sexpression-library"],"created_at":"2025-11-15T02:00:36.831Z","updated_at":"2026-02-28T19:32:17.318Z","avatar_url":"https://github.com/circuit-synth.png","language":"Python","funding_links":[],"categories":["Servers"],"sub_categories":[],"readme":"# KiCAD Schematic API\n\n[![Documentation Status](https://readthedocs.org/projects/kicad-sch-api/badge/?version=latest)](https://kicad-sch-api.readthedocs.io/en/latest/?badge=latest)\n[![PyPI version](https://badge.fury.io/py/kicad-sch-api.svg)](https://badge.fury.io/py/kicad-sch-api)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n**Python library for reading and writing KiCAD schematic files**\n\nGenerates valid `.kicad_sch` files that open in KiCAD 7/8. Focus on exact format preservation and simple API design.\n\n## Overview\n\nRead and write KiCAD schematic files programmatically. This library parses and generates `.kicad_sch` files with exact format preservation - output matches KiCAD's native formatting byte-for-byte.\n\n## Core Features\n\n- **Exact format preservation** - Output matches KiCAD's native formatting byte-for-byte\n- **Standalone library** - No KiCAD installation required\n- **Simple API** - Object-oriented interface for components, wires, labels, and symbols\n- **Tested compatibility** - 70+ tests verify format preservation against KiCAD reference files\n- **KiCAD library access** - Read actual KiCAD symbol libraries for component validation\n- **Connectivity analysis** - Trace electrical connections through wires, labels, and hierarchy\n- **Hierarchical design** - Complete support for multi-sheet schematic projects\n- **Component bounding boxes** - Calculate precise component boundaries for layout algorithms\n- **Wire routing** - Manhattan-style orthogonal routing with basic obstacle avoidance\n- **BOM property management** - Audit, update, and transform component properties for manufacturing\n- **MCP server** - 15 tools for programmatic schematic manipulation via Model Context Protocol\n\n## Quick Start\n\n### Installation\n\n```bash\n# Install from PyPI\npip install kicad-sch-api\n\n# Or install from source\ngit clone https://github.com/circuit-synth/kicad-sch-api.git\ncd kicad-sch-api\nuv pip install -e .\n```\n\n### Basic Usage\n\n```python\nimport kicad_sch_api as ksa\n\n# Create a new schematic\nsch = ksa.create_schematic(\"My Circuit\")\n\n# Add components with proper validation\nresistor = sch.components.add(\n    lib_id=\"Device:R\",\n    reference=\"R1\",\n    value=\"10k\",\n    position=(100.0, 100.0),\n    footprint=\"Resistor_SMD:R_0603_1608Metric\"\n)\n\n# Add wires for connectivity\nsch.wires.add(start=(100, 110), end=(150, 110))\n\n# Pin-to-pin wiring\nwire_uuid = sch.add_wire_between_pins(\"R1\", \"2\", \"C1\", \"1\")\n\n# Add labels for nets\nsch.add_label(\"VCC\", position=(125, 110))\n\n# Save with exact format preservation\nsch.save(\"my_circuit.kicad_sch\")\n```\n\n## ⚠️ Critical: KiCAD Coordinate System\n\n**Understanding this is CRITICAL for working with this library.**\n\n### The Two Coordinate Systems\n\nKiCAD uses **two different Y-axis conventions**:\n\n1. **Symbol Space** (library definitions): Normal Y-axis (+Y is UP, like math)\n2. **Schematic Space** (placed components): Inverted Y-axis (+Y is DOWN, like graphics)\n\n### The Transformation\n\nWhen placing a symbol on a schematic, **Y coordinates are negated**:\n\n```python\n# Symbol library (normal Y, +Y up):\nPin 1: (0, +3.81)   # 3.81mm UPWARD in symbol\nPin 2: (0, -3.81)   # 3.81mm DOWNWARD in symbol\n\n# Component placed at (100, 100) in schematic (inverted Y, +Y down):\n# Y is NEGATED during transformation:\nPin 1: (100, 100 + (-3.81)) = (100, 96.52)   # LOWER Y = visually HIGHER\nPin 2: (100, 100 + (+3.81)) = (100, 103.81)  # HIGHER Y = visually LOWER\n```\n\n### Visual Interpretation\n\nIn schematic space (inverted Y-axis):\n- **Lower Y values** = visually HIGHER on screen (top)\n- **Higher Y values** = visually LOWER on screen (bottom)\n- **X-axis is normal** (increases to the right)\n\n### Grid Alignment\n\n**ALL positions MUST be grid-aligned:**\n- Default grid: **1.27mm (50 mil)**\n- Component positions, wire endpoints, pin positions, labels must all align to grid\n- Common values: 0.00, 1.27, 2.54, 3.81, 5.08, 6.35, 7.62, 8.89, 10.16...\n\n```python\n# Good - on grid\nsch.components.add('Device:R', 'R1', '10k', position=(100.33, 101.60))\n\n# Bad - off grid (will cause connectivity issues)\nsch.components.add('Device:R', 'R2', '10k', position=(100.5, 101.3))\n```\n\nThis coordinate system is critical for:\n- Pin position calculations\n- Wire routing and connectivity\n- Component placement\n- Hierarchical connections\n- Electrical connectivity detection\n\n## 🔧 Core Features\n\n### Component Management\n\n```python\n# Add and manage components\nresistor = sch.components.add(\"Device:R\", \"R1\", \"10k\", (100, 100))\n\n# Search and filter\nresistors = sch.components.find(lib_id_pattern='Device:R*')\n\n# Bulk updates\nsch.components.bulk_update(\n    criteria={'lib_id': 'Device:R'},\n    updates={'properties': {'Tolerance': '1%'}}\n)\n\n# Remove components\nsch.components.remove(\"R1\")\n```\n\n**📖 See [API Reference](docs/API_REFERENCE.md) for complete component API**\n\n### Text Effects \u0026 Styling\n\n```python\n# Read text effects from component properties\nr1 = sch.components.get(\"R1\")\neffects = r1.get_property_effects(\"Reference\")\n# Returns: {'font_face': 'Arial', 'font_size': (2.0, 2.0), 'bold': True, ...}\n\n# Modify text effects (partial updates - preserves other effects)\nr1.set_property_effects(\"Reference\", {\n    \"color\": (0, 255, 0, 1.0),  # Green\n    \"bold\": True,\n    \"font_size\": (2.0, 2.0)\n})\n\n# Create components with custom styling\nr2 = sch.components.add(\"Device:R\", \"R2\", \"10k\", position=(100, 100))\nr2.set_property_effects(\"Value\", {\n    \"rotation\": 90.0,           # Sideways\n    \"justify_h\": \"left\",        # Left justified\n    \"color\": (160, 32, 240, 1.0),  # Purple\n    \"italic\": True\n})\n\n# Supported effects: position, rotation, font_face, font_size, font_thickness,\n# bold, italic, color (RGBA), justify_h, justify_v, visible\n```\n\n**📖 See [API Reference](docs/API_REFERENCE.md#text-effects) for text effects details**\n\n### Connectivity Analysis\n\n```python\n# Check if pins are electrically connected\nif sch.are_pins_connected(\"R1\", \"2\", \"R2\", \"1\"):\n    print(\"Connected!\")\n\n# Get net information\nnet = sch.get_net_for_pin(\"R1\", \"2\")\nprint(f\"Net: {net.name}, Pins: {len(net.pins)}\")\n\n# Get all connected pins\nconnected = sch.get_connected_pins(\"R1\", \"2\")\n```\n\nConnectivity analysis includes:\n- Direct wire connections\n- Connections through junctions\n- Local and global labels\n- Hierarchical labels (cross-sheet)\n- Power symbols (VCC, GND)\n- Sheet pins (parent/child)\n\n**📖 See [API Reference](docs/API_REFERENCE.md#connectivity-analysis) for complete connectivity API**\n\n### Hierarchy Management\n\n```python\n# Build hierarchy tree\ntree = sch.hierarchy.build_hierarchy_tree(sch, schematic_path)\n\n# Find reused sheets\nreused = sch.hierarchy.find_reused_sheets()\nfor filename, instances in reused.items():\n    print(f\"{filename} used {len(instances)} times\")\n\n# Validate sheet connections\nconnections = sch.hierarchy.validate_sheet_pins()\nerrors = sch.hierarchy.get_validation_errors()\n\n# Trace signals through hierarchy\npaths = sch.hierarchy.trace_signal_path(\"VCC\")\n\n# Flatten design\nflattened = sch.hierarchy.flatten_hierarchy(prefix_references=True)\n\n# Visualize hierarchy\nprint(sch.hierarchy.visualize_hierarchy(include_stats=True))\n```\n\n**📖 See [Hierarchy Features Guide](docs/HIERARCHY_FEATURES.md) for complete hierarchy documentation**\n\n### Wire Routing \u0026 Pin Connections\n\n```python\n# Direct pin-to-pin wiring\nsch.add_wire_between_pins(\"R1\", \"2\", \"R2\", \"1\")\n\n# Manhattan routing with obstacle avoidance\nwires = sch.auto_route_pins(\n    \"R1\", \"2\", \"R2\", \"1\",\n    routing_mode=\"manhattan\",\n    avoid_components=True\n)\n\n# Get pin positions\npos = sch.get_component_pin_position(\"R1\", \"1\")\n```\n\n**📖 See [Recipes](docs/RECIPES.md) for routing patterns and examples**\n\n### Component Bounding Boxes\n\n```python\nfrom kicad_sch_api.core.component_bounds import get_component_bounding_box\n\n# Get bounding box\nbbox = get_component_bounding_box(resistor, include_properties=False)\nprint(f\"Size: {bbox.width:.2f}×{bbox.height:.2f}mm\")\n\n# Visualize with rectangles\nsch.draw_bounding_box(bbox, stroke_color=\"blue\")\nsch.draw_component_bounding_boxes(include_properties=True)\n```\n\n**📖 See [API Reference](docs/API_REFERENCE.md#bounding-boxes) for bounding box details**\n\n### Configuration \u0026 Customization\n\n```python\nimport kicad_sch_api as ksa\n\n# Customize property positioning\nksa.config.properties.reference_y = -2.0\nksa.config.properties.value_y = 2.0\n\n# Tolerances\nksa.config.tolerance.position_tolerance = 0.05\n\n# Grid settings\nksa.config.grid.component_spacing = 5.0\n```\n\n**📖 See [API Reference](docs/API_REFERENCE.md#configuration) for all configuration options**\n\n#### Library Path Configuration\n\nThe library automatically discovers KiCAD symbol libraries from:\n- **Environment variables** (`KICAD_SYMBOL_DIR`, `KICAD8_SYMBOL_DIR`, `KICAD7_SYMBOL_DIR`)\n- **Standard KiCAD installations** (version-flexible detection)\n- **User document directories**\n\n**Set environment variable** (Unix/macOS):\n```bash\n# Single path\nexport KICAD_SYMBOL_DIR=/path/to/kicad/symbols\n\n# Multiple paths (colon-separated)\nexport KICAD_SYMBOL_DIR=/path/to/symbols:/path/to/custom/symbols\n```\n\n**Set environment variable** (Windows):\n```cmd\n# Single path\nset KICAD_SYMBOL_DIR=C:\\KiCad\\symbols\n\n# Multiple paths (semicolon-separated)\nset KICAD_SYMBOL_DIR=C:\\KiCad\\symbols;D:\\Custom\\symbols\n```\n\n**Add library paths programmatically**:\n```python\nimport kicad_sch_api as ksa\n\n# Get cache\ncache = ksa.library.get_symbol_cache()\n\n# Add specific library file\ncache.add_library_path(\"/path/to/Device.kicad_sym\")\n\n# Discover all libraries in directory\ncache.discover_libraries([\"/path/to/custom/symbols\"])\n```\n\n**📖 See [Library Configuration Guide](docs/LIBRARY_CONFIGURATION.md) for complete documentation**\n\n## 📝 Examples\n\nLearn by example with our polished reference circuits in the **[examples/](examples/)** directory:\n\n### Basic Circuits\n- **[voltage_divider.py](examples/voltage_divider.py)** - Simple 10k/10k voltage divider with grid-based parametric design\n- **[rc_filter.py](examples/rc_filter.py)** - RC low-pass filter demonstrating wire routing and junctions\n- **[power_supply.py](examples/power_supply.py)** - AMS1117-3.3 voltage regulator (5V → 3.3V) with power symbols\n\n### Microcontroller Examples\n- **[stm32_simple.py](examples/stm32_simple.py)** - STM32G030K8Tx with reset circuit, LED, and SWD debug interface\n\n### Run All Examples\n- **[COMBINED.py](examples/COMBINED.py)** - Master script that generates all example schematics at once\n\n### Getting Started\nStart with **[WALKTHROUGH.md](examples/WALKTHROUGH.md)** - a complete tutorial from basics to advanced parametric circuits.\n\nAll examples use:\n- Grid-based positioning with intuitive grid units (1.27mm)\n- Parametric `p(x, y)` helper for clean, readable coordinates\n- Individual `add_wire()` calls with descriptive comments\n- Proper wire junctions at all T-connection points\n- Comprehensive inline documentation\n\n```bash\n# Run any example\nuv run python examples/voltage_divider.py\nuv run python examples/rc_filter.py\nuv run python examples/power_supply.py\nuv run python examples/stm32_simple.py\n\n# Or run all examples at once\nuv run python examples/COMBINED.py\n```\n\n## 📚 Advanced Features\n\nFor comprehensive documentation on all features:\n\n- **[API Reference](docs/API_REFERENCE.md)** - Complete API documentation with examples\n- **[Hierarchy Features](docs/HIERARCHY_FEATURES.md)** - Multi-sheet design guide\n- **[Recipes](docs/RECIPES.md)** - Common patterns and examples\n- **[Getting Started](docs/GETTING_STARTED.md)** - Detailed tutorial\n- **[Architecture](docs/ARCHITECTURE.md)** - Library design and internals\n\n## MCP Server\n\nIncludes an MCP (Model Context Protocol) server with 15 tools for programmatic schematic manipulation:\n\n```bash\n# Start the MCP server\nuv run kicad-sch-mcp\n\n# Or install and run directly\npip install kicad-sch-api\nkicad-sch-mcp\n```\n\n### MCP Tool Suite (15 Tools)\n\n**Component Management (5 tools):**\n- `add_component` - Add components with auto-reference/position\n- `list_components` - List all components with metadata\n- `update_component` - Update properties (value, position, rotation, footprint)\n- `remove_component` - Remove components\n- `filter_components` - Advanced filtering by lib_id, value, footprint\n\n**Connectivity (3 tools):**\n- `add_wire` - Create wire connections between points\n- `add_label` - Add net labels for logical connections\n- `add_junction` - Add wire junctions for T-connections\n\n**Pin Discovery (3 tools):**\n- `get_component_pins` - Complete pin information with positions\n- `find_pins_by_name` - Semantic lookup with wildcards (*, CLK*, *IN*)\n- `find_pins_by_type` - Filter by electrical type (passive, input, output, power_in)\n\n**Schematic Management (4 tools):**\n- `create_schematic` - Create new KiCAD schematics\n- `load_schematic` - Load existing .kicad_sch files\n- `save_schematic` - Save schematics to disk\n- `get_schematic_info` - Query schematic metadata\n\n### MCP Server Capabilities\n\nThe MCP server provides tools for:\n- Adding components, creating connections, and labeling nets\n- Creating, loading, saving, and modifying schematic files\n- Listing components, filtering by criteria, and discovering pin information\n- Building circuits like voltage dividers, filters, LED drivers, and power supplies\n\n### Example: Building Complete Circuits via MCP\n\n#### Voltage Divider (Verified Working ✅)\n\n**Natural Language Request**:\n```\n\"Create a voltage divider with R1=10k and R2=20k, fully wired with VCC and GND labels\"\n```\n\n**The AI agent executes**:\n1. `create_schematic(name=\"Voltage Divider\")` - Create new schematic\n2. `add_component(lib_id=\"Device:R\", reference=\"R1\", value=\"10k\", position=(127.0, 76.2))` - Add R1\n3. `add_component(lib_id=\"Device:R\", reference=\"R2\", value=\"20k\", position=(127.0, 95.25))` - Add R2\n4. `get_component_pins(\"R1\")` - Get R1 pin positions\n5. `get_component_pins(\"R2\")` - Get R2 pin positions\n6. `add_wire(start=(127.0, 72.39), end=(127.0, 66.04))` - VCC to R1\n7. `add_wire(start=(127.0, 80.01), end=(127.0, 91.44))` - R1 to R2\n8. `add_wire(start=(127.0, 99.06), end=(127.0, 105.41))` - R2 to GND\n9. `add_label(text=\"VCC\", position=(129.54, 66.04))` - Add VCC label\n10. `add_label(text=\"VOUT\", position=(129.54, 85.725))` - Add output label\n11. `add_label(text=\"GND\", position=(129.54, 105.41))` - Add GND label\n12. `add_junction(position=(127.0, 85.725))` - Add junction at tap point\n13. `save_schematic(file_path=\"voltage_divider.kicad_sch\")` - Save to disk\n\n**Result**: ✅ Fully functional KiCAD schematic verified to open perfectly in KiCAD!\n\n#### LED Circuit with Current Limiting\n\n**Natural Language Request**:\n```\n\"Create an LED circuit with 220Ω current limiting resistor\"\n```\n\n**The AI agent will**:\n- Add LED and 220Ω resistor components\n- Wire VCC → resistor → LED → GND\n- Add appropriate net labels\n- Save the complete circuit\n\n**Result**: Ready-to-use LED driver circuit schematic!\n\n#### RC Low-Pass Filter\n\n**Natural Language Request**:\n```\n\"Create an RC low-pass filter with R=10k, C=100nF\"\n```\n\n**The AI agent will**:\n- Add resistor (10k) and capacitor (100nF)\n- Wire input → R → C → output\n- Add GND connection to capacitor\n- Label INPUT, OUTPUT, and GND nets\n- Add junction at output tap\n- Save filter schematic\n\n**Result**: Complete filter circuit with proper connectivity!\n\n### Claude Desktop Integration\n\nAdd to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"kicad-sch-api\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"kicad-sch-mcp\"],\n      \"env\": {}\n    }\n  }\n}\n```\n\nMCP tools enable programmatic creation, modification, and analysis of KiCAD schematics.\n\n**📖 Complete Documentation**:\n- **[MCP Setup Guide](docs/MCP_SETUP_GUIDE.md)** - Installation, configuration, and troubleshooting\n- **[MCP Examples](docs/MCP_EXAMPLES.md)** - Comprehensive usage examples and patterns\n- **[API Reference](docs/API_REFERENCE.md)** - Complete API documentation\n\n## Architecture\n\n### Design Principles\n\n- **Building Block First**: Designed to be the foundation for other tools\n- **Exact Format Preservation**: Guaranteed byte-perfect KiCAD output\n- **Comprehensive Validation**: Error handling and input validation\n- **MCP Integration**: Includes MCP server for programmatic schematic manipulation\n- **Performance Optimized**: Fast operations on large schematics\n\n**📖 See [Architecture Guide](docs/ARCHITECTURE.md) for detailed design documentation**\n\n## Testing \u0026 Quality\n\n```bash\n# Run all tests (29 tests covering all functionality)\nuv run pytest tests/ -v\n\n# Format preservation tests (critical - exact KiCAD output matching)\nuv run pytest tests/reference_tests/ -v\n\n# Code quality checks\nuv run black kicad_sch_api/ tests/\nuv run mypy kicad_sch_api/\n```\n\n### Test Categories\n\n- **Format Preservation**: Byte-for-byte compatibility with KiCAD native files\n- **Component Management**: Creation, modification, and removal\n- **Connectivity**: Wire tracing, net analysis, hierarchical connections\n- **Hierarchy**: Multi-sheet designs, sheet reuse, signal tracing\n- **Integration**: Real KiCAD library compatibility\n\n## Why This Library?\n\n### vs. Direct KiCAD File Editing\n- **High-level API**: Object-oriented interface vs low-level S-expression manipulation\n- **Format Preservation**: Byte-perfect output vs manual formatting\n- **Validation**: Real KiCAD library integration and component validation\n\n### vs. Other Python KiCAD Libraries\n- **Format Preservation**: Exact KiCAD compatibility vs approximate output\n- **Object-Oriented Design**: Modern collection classes vs legacy patterns\n- **MCP Integration**: Included MCP server vs no programmatic interface\n\n**📖 See [Why Use This Library](docs/WHY_USE_THIS_LIBRARY.md) for detailed comparison**\n\n## Known Limitations\n\n### Connectivity Analysis\n- **Global Labels**: Explicit global label connections not yet fully implemented (power symbols like VCC/GND work correctly)\n\n### ERC (Electrical Rule Check)\n- **Partial Implementation**: ERC validators have incomplete features\n- Net tracing, pin type checking, and power net detection are in development\n- Core functionality works, advanced validation features coming soon\n\n### Performance\n- Large schematics (\u003e1000 components) may experience slower connectivity analysis\n- Symbol cache helps, but first analysis can take time\n- Optimization ongoing\n\n**Report issues**: https://github.com/circuit-synth/kicad-sch-api/issues\n\n## Documentation\n\nFull documentation is available:\n\n### Learning Resources\n- **[Examples Walkthrough](examples/WALKTHROUGH.md)** - Start here! Complete tutorial from basics to advanced\n- **[Example Circuits](examples/)** - Polished reference circuits (voltage divider, RC filter, power supply, STM32)\n- **[Getting Started Guide](docs/GETTING_STARTED.md)** - Complete beginner's tutorial\n\n### API Documentation\n- **[API Reference](docs/API_REFERENCE.md)** - Complete API documentation\n- **[Hierarchy Features](docs/HIERARCHY_FEATURES.md)** - Multi-sheet design guide\n- **[Recipes \u0026 Patterns](docs/RECIPES.md)** - Practical examples\n\n### Project Information\n- **[Why Use This Library](docs/WHY_USE_THIS_LIBRARY.md)** - Value proposition\n- **[Architecture](docs/ARCHITECTURE.md)** - Internal design details\n\n## 🤝 Contributing\n\nWe welcome contributions! Key areas:\n\n- KiCAD library integration and component validation\n- Performance optimizations for large schematics\n- MCP server tools and AI agent capabilities\n- Test coverage and format preservation validation\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## 🔗 Related Projects\n\n- **[circuit-synth](https://github.com/circuit-synth/circuit-synth)** - High-level circuit design automation\n- **[Claude Code](https://claude.ai/code)** - AI development environment with MCP support\n- **[KiCAD](https://kicad.org/)** - Open source electronics design automation\n- **[Model Context Protocol](https://modelcontextprotocol.io/)** - Standard for AI agent tool integration\n\n---\n\n*Made with ❤️ for the open hardware community*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcircuit-synth%2Fkicad-sch-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcircuit-synth%2Fkicad-sch-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcircuit-synth%2Fkicad-sch-api/lists"}