How the Zig-backed instance graph works (GraphView/NodeReference/EdgeReference), the real Python API surface, and the invariants around allocation, attributes, and cleanup. Use when working with low-level graph APIs, memory management, or building systems that traverse the instance graph.
cd ~/.claude/skills
git clone https://github.com/atopile/atopile.git atopile mkdir -p ~/.claude/skills/graph
curl -fsSL https://raw.githubusercontent.com/atopile/atopile/HEAD/.claude/skills/graph/SKILL.md \
-o ~/.claude/skills/graph/SKILL.md The faebryk.core.graph module is a thin Python wrapper around the Zig graph implementation.
Source-of-truth for behavior is:
src/faebryk/core/zig/src/graph/graph.zigsrc/faebryk/core/zig/src/python/graph/graph_py.zigsrc/faebryk/core/zig/gen/graph/graph.pyifrom faebryk.core.graph import GraphView
g = GraphView.create()
try:
_ = g.create_and_insert_node()
finally:
g.destroy()
src/faebryk/core/graph.pysrc/faebryk/core/zig/src/graph/graph.zigsrc/faebryk/core/zig/src/python/graph/graph_py.zigsrc/faebryk/core/zig/gen/graph/graph.pyisrc/faebryk/core/node.py (FabLL: nodes/traits are graph-backed)src/atopile/compiler/gentypegraph.py (compiler constructs typegraphs/instances via graph APIs)src/faebryk/core/graph_render.py (graph visualization)NodeReference / EdgeReference: value-like handles (UUIDs) into global backing storage in Zig.GraphView: a membership + adjacency view over those references (per-view arena + maps + bitsets).BoundNode / BoundEdge: “reference + owning GraphView pointer” wrappers used for traversal helpers.GraphView(), NodeReference(), EdgeReference() are not meant to be called; use the exposed factory methods.
GraphView.create()NodeReference.create(**attrs)EdgeReference.create(source=..., target=..., edge_type=..., **attrs)GraphView.create() allocates a Zig-side graph on the C allocator; it is freed only by GraphView.destroy().
u8 in Zig; treat them as 0..255 in Python (hashing/modulo happens on the Zig side).GraphView.init inserts a self_node; counts include it.src/faebryk/core/zig/gen/graph/graph.pyi)from faebryk.core.graph import GraphView, Node, Edge
g = GraphView.create()
try:
n1 = g.create_and_insert_node() # -> BoundNode
n2 = Node.create(name="n2") # -> NodeReference (not inserted yet)
bn2 = g.insert_node(node=n2) # -> BoundNode
e = Edge.create(source=n1.node(), target=bn2.node(), edge_type=7, name="link")
_be = g.insert_edge(edge=e) # -> BoundEdge
finally:
g.destroy()
GraphView.__repr__() prints GraphView(id=..., |V|=..., |E|=...) from Zig.python -m faebryk.core.graph (runs test_graph_garbage_collection).src/faebryk/core/zig/src/graph/*.ato dev compile (imports faebryk.core.zig, which compiles in editable installs).src/faebryk/core/zig/src/python/graph/graph_py.zig and ensure stubs regenerate.Key test entrypoints:
python -m faebryk.core.graphzig test src/faebryk/core/zig/src/graph/graph.zigCreating 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.
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.
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
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.
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).
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.