SKILL
Create a new Factory contract.
Parse args: a product SKU and industry (healthcare | higher-education | municipality | membership | nonprofit).
-
Gate: a Product Definition for this SKU must exist (run the
product-definitionskill first). If none exists, or it has not passed the Commercial Work Gate (buyer, offer, revenue horizon established), stop and produce the definition before scaffolding a contract. A Factory without a defined Product is technology, not a product. -
Copy
factories/amcs/factory.yamlas the reference (never start blank). Set metadata andspec.product(sku, industry, outcomes, catalog, operator_api blu-cli). - Compose the seven domains as ownership boundaries: each
owns: compositionpointing at its upstream: Authority=Drupal business authority + OSSA/DUADP; Governance=ContextControl/ContractPlane/Cedar/Dragonfly; Runtime=Gas City; Experience=Canvas/AGUI/OpenClaw/Dashboard (four surfaces); Network=A2A (authority none); Delivery=GitLab/IaC; Marketplace. - Fill
spec.outputsper domain (the generated artifacts) for the chosen industry. - Only add
custom_justificationswhen an upstream genuinely can't cover a gap, and name the gap. - Gate:
python3 scripts/factory.py check factories/<sku>/factory.yaml; do not finish until it passes. Show the passing gate +plan.
Always load the operating model first (reference/factory-operating-model.md): the architecture is
Product → Factory → Outputs → Domains → Systems; Bluefly owns composition, not implementation; compose,
never reinvent; factory.yaml is the single source of truth.