Packs

A pack is not a folder of models. It ships archetypes, operations, modifiers, validators, examples, documentation and golden tests — a complete domain toolkit that plugs into the engine's registries.

Official

Build your own

Most new products can be expressed as YAML — archetypes, examples and presets with no Python at all. Python enters only when a geometric or validation capability itself is missing. Community packs live in their own repositories and register through a standard entry point.

  1. 01

    Copy a template

    yaml-pack (archetypes + examples, zero Python beyond a two-line register()) or python-pack (adds self-registering checks with tests). Rename the package, update pack.yaml and the entry-point name.

  2. 02

    Register via entry point

    The engine discovers packs through the artifact_forge_ng.packs entry-point group. register(ctx) runs once at catalog load, fail-fast; collisions with existing ops/joints/checks are errors unless explicitly declared as overrides.

  3. 03

    Follow the honesty rules

    Every archetype ships an example that passes forge validate in strict mode. Every new check has PASS, FAIL and n/a tests on real op-built forms. Claims are explicit — default non-claims stay non-claims unless externally certified.

  4. 04

    Test locally

    uv pip install -e your-pack, forge validate your example, pytest your tests — and verify the core still imports clean with packs disabled.

Pack authoring guide →