Provides guidance on the Faebryk library structure, component definitions, and the auto-generation of _F.py exports.

Install

mkdir -p .claude/skills/library && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3010" && unzip -o skill.zip -d .claude/skills/library && rm skill.zip

Installs to .claude/skills/library

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

How the Faebryk component library is structured, how `_F.py` is generated, and the conventions/invariants for adding new library modules. Use when adding or modifying library components, traits, or module definitions.
217 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Structure Faebryk component library modules
  • Manage auto-generation of _F.py facade files
  • Define conventions for components, traits, and interfaces
  • Support topological sorting for library exports

How it works

The skill uses a generator script to scan library files, detect class definitions, and write a barrel module that re-exports types via topological sort.

Inputs & outputs

You give it
New component definition or library module modification
You get back
Updated _F.py facade and library module structure

When to use library

  • Creating new hardware components
  • Adding behavior traits to modules
  • Modifying existing library definitions

About this skill

Library Module

The library module (located in src/faebryk/library/) contains the collection of reusable components, traits, and interfaces that form the "standard library" of the hardware design language.

Quick Start

import faebryk.core.faebrykpy as fbrk
import faebryk.core.graph as graph
import faebryk.library._F as F

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

resistor = F.Resistor.bind_typegraph(tg=tg).create_instance(g=g)

Relevant Files

  • Facade (auto-generated): src/faebryk/library/_F.py
    • Eagerly imports and re-exports library modules/types for the import faebryk.library._F as F pattern.
    • This file is generated; do not hand-edit it.
  • Generator: tools/library/gen_F.py
    • Scans src/faebryk/library/*.py, detects whether the file contains a same-named class, and writes _F.py.
    • Orders exports via a topological sort of F.<Name> references to avoid import-order cycles.
  • Components: src/faebryk/library/ contains specific component definitions (e.g. Resistor.py, Capacitor.py, LED.py).
  • Traits/Interfaces: Also contains trait definitions (e.g. can_bridge.py, is_power.py).

Dependants (Call Sites)

  • User Code: atopile projects heavily import from faebryk.library._F (aliased as F).
  • Compiler: The compiler maps ato built-ins to these classes.

How to Work With / Develop / Test

Core Concepts

  • Traits vs Components: Use Traits for behavior (what it can do like can_bridge) and Components for physical things (what it is like Resistor).
  • Export model: _F.py is a generated “barrel” module; importing it is intentionally convenient but can be heavyweight.

Development Workflow

  1. New Component: Create a new file MyComponent.py in src/faebryk/library/. Inherit from Node (or a more specific base).
  2. Naming Convention: Class names should match the file basename (usually).
  3. Regenerate _F.py: run python tools/library/gen_F.py and commit the updated src/faebryk/library/_F.py.

Testing

  • Library tests live under test/library/ (including test/library/nodes/).
  • A good smoke test for new modules is:
    • ato dev test --llm test/library/test_instance_library_modules.py -q

Best Practices

  • Atomic Parts: Mark leaf components (specifically verified part numbers) with the is_atomic_part trait.
  • Parameters: Use F.Parameters to define physical properties like resistance, capacitance, etc.
  • Documentation: Add docstrings to components explaining their ports and parameters.

When not to use it

  • When manually editing the auto-generated _F.py file

Prerequisites

Faebryk development environment

Limitations

  • Requires manual regeneration of _F.py after adding new components
  • Requires adherence to specific class naming conventions

How it compares

It automates the maintenance of the facade module, preventing manual import errors and circular dependencies.

Compared to similar skills

library side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
library (this skill)15moNo flagsIntermediate
python-project-structure86moNo flagsBeginner
graph66moNo flagsAdvanced
generate-subsystem-skills17moNo flagsAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry