smithery.ai

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.

First seen Apr 6, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,452 B
  • docs SUMMARY.md 155 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 2 installs

SKILL.md

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:

```python 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.ensurechildreference(..., 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/testtypegraph.py -q - ato dev test --llm test/compiler/testruntime.py -q

  • Zig-backed traversal tests:

- ato dev test --llm test/core/zig/testinterfacepathfinder.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(traittype=SomeTrait) over stringly-typed traittype_name=....

  • When building reference paths, be explicit about edge semantics (composition vs pointer vs trait) rather than relying on implicit string behavior.