Overview
Expert guidance for designing and building Infrahub schemas. Schemas are YAML files defining nodes (concrete types), generics (abstract base types), attributes, relationships, and extensions.
When to Use
- Designing new data models or schema nodes
- Adding attributes or relationships to existing schemas
- Setting up hierarchical location trees or component/parent patterns
- Configuring display properties (human_friendly_id, display_label)
- Migrating or refactoring existing schemas
- Debugging schema validation errors
Rule Categories
| Priority | Category | Prefix | Description |
|---|---|---|---|
| CRITICAL | Naming | naming- |
Namespace, node, attribute naming |
| CRITICAL | Relationships | relationship- |
IDs, peers, component/parent |
| HIGH | Attributes | attribute- |
Defaults, dropdowns, deprecated |
| HIGH | Hierarchy | hierarchy- |
Hierarchical generics, parent/children |
| HIGH | Display | display- |
human_friendly_id, order_weight |
| MEDIUM | Extensions | extension- |
Cross-file via extensions block |
| MEDIUM | Uniqueness | uniqueness- |
Constraint format, __value suffix |
| MEDIUM | Migration | migration- |
Add/remove attributes, state: absent |
| LOW | Validation | validation- |
Common errors, pre-check checklist |
Schema File Basics
---
# yaml-language-server: $schema=https://schema.infrahub.app/infrahub/schema/latest.json
version: "1.0"
generics: # Abstract base definitions (shared attributes/relationships)
- ...
nodes: # Concrete object types
- ...
extensions: # Add attributes/relationships to existing nodes from other files
nodes:
- ...
Always include the $schema comment for IDE validation.
Only version is required at the top level.
Supporting References
- reference.md -- Complete property tables for nodes, generics, attributes, relationships
- examples.md -- Full schema patterns from production repos
- validation.md --
infrahubctlcommands, migration strategies, pre-validation checklist - ../infrahub-common/infrahub-yml-reference.md -- .infrahub.yml project configuration
- ../infrahub-common/rules/ -- Shared rules (git integration, caching) across all skills
- rules/ -- Individual rules by category prefix