Design ★ 3,381

faebryk

How Faebryk's TypeGraph works (GraphView + Zig edges), how to traverse/resolve references, and how FabLL types/traits map onto edge types. Use when working with TypeGraph traversal, edge types, or building type-aware queries.

cd ~/.claude/skills
git clone https://github.com/atopile/atopile.git atopile

Faebryk Core Module

The Faebryk core here is the TypeGraph + edge types implemented in Zig and exposed to Python via faebryk.core.faebrykpy.

Source-of-truth for API + behavior:

  • src/faebryk/core/faebrykpy.py (Python-facing wrapper + type-safe EdgeTrait.traverse)
  • src/faebryk/core/zig/gen/faebryk/typegraph.pyi (public stubbed API surface)
  • src/faebryk/core/zig/src/faebryk/* (Zig implementation)

Quick Start

import faebryk.core.faebrykpy as fbrk
import faebryk.core.graph as graph

g = graph.GraphView.create()
tg = fbrk.TypeGraph.create(g=g)

Relevant Files

  • src/faebryk/core/faebrykpy.py (re-exports + EdgeTraversal + type-safe EdgeTrait.traverse)
  • src/faebryk/core/zig/gen/faebryk/typegraph.pyi (TypeGraph stub)
  • Key edge types (imported by faebrykpy.py):
    • EdgeComposition (parent/child structure)
    • EdgeTrait / Trait (trait attachment)
    • EdgePointer (references)
    • EdgeInterfaceConnection (interface connections)
    • EdgeOperand (solver operand wiring)
    • EdgeType / EdgeNext (type graph plumbing)
  • Linker:
    • Linker (used by compiler/linking stages)

Dependants (Call Sites)

  • FabLL: src/faebryk/core/node.py (binds Python classes into the TypeGraph; uses composition/trait edges)
  • Compiler: src/atopile/compiler/* (creates and links TypeGraphs)
  • Solver: src/faebryk/core/solver/* (operand edges and instance traversal)
  • Build/export pipeline: src/atopile/build_steps.py (visits type/instance edges for PCB/layout features)

How to Work With / Develop / Test

Core Concepts

  • GraphView + TypeGraph: a TypeGraph is created against a GraphView:
    import faebryk.core.graph as graph
    import faebryk.core.faebrykpy as fbrk
    
    g = graph.GraphView.create()
    tg = fbrk.TypeGraph.create(g=g)
  • Type nodes vs instance nodes:
    • TypeGraph stores type definitions (“what exists structurally on a type”)
    • GraphView also holds instances created from those types (“a concrete design graph”)
  • EdgeTraversal: TypeGraph.ensure_child_reference(..., path=[...]) uses EdgeTraversal items to walk references through the type graph.

Development Workflow

  1. Zig-side changes: edit src/faebryk/core/zig/src/faebryk/* (edges, typegraph internals).
  2. Rebuild bindings: ato dev compile (imports faebryk.core.zig).
  3. Python ergonomics: add wrappers/helpers in src/faebryk/core/faebrykpy.py (example: type-safe EdgeTrait.traverse).

Testing

  • TypeGraph-heavy tests live in compiler/runtime suites:
    • ato dev test --llm test/compiler/test_typegraph.py -q
    • ato dev test --llm test/compiler/test_runtime.py -q
  • Zig-backed traversal tests:
    • ato dev test --llm test/core/zig/test_interface_pathfinder.py -q

Best Practices

  • Import edges/TypeGraph via faebryk.core.faebrykpy (so callers get Python helpers, not just raw generated types).
  • Prefer type-safe trait traversal:
    • EdgeTrait.traverse(trait_type=SomeTrait) over stringly-typed trait_type_name=....
  • When building reference paths, be explicit about edge semantics (composition vs pointer vs trait) rather than relying on implicit string behavior.

Similar skills

algorithmic-art Design

Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.

anthropics/skills ★ 146,722
brand-guidelines Design

Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.

anthropics/skills ★ 146,722
claude-api Design

Build, debug, and optimize Claude API / Anthropic SDK apps. Apps built with this skill should include prompt caching. Also handles migrating existing Claude API code between Claude model versions (4.5 → 4.6, 4.6 → 4.7, retired-model replacements). TRIGGER when: code imports `anthropic`/`@anthropic-ai/sdk`; user asks for the Claude API, Anthropic SDK, or Managed Agents; user adds/modifies/tunes a C

anthropics/skills ★ 146,722
frontend-design Design

Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.

anthropics/skills ★ 146,722
mcp-builder Design

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

anthropics/skills ★ 146,722
slack-gif-creator Design

Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack.

anthropics/skills ★ 146,722
More in Design →