| name | atmos-core-component-development |
| description | Atmos CORE contributor guide for adding/modifying a component TYPE in the Go codebase (terraform/helmfile/packer/ansible/container): the component registry & provider, the CLI command group, the describe/list type whitelist, custom-component inheritance & deep-merge, schema, and tests. NOT for authoring user components in stacks (that is the atmos-components skill). |
| metadata | {"copyright":"Copyright Cloud Posse, LLC 2026","version":"1.0.0"} |
Atmos Core: Component Type Development
Use this skill when developing Atmos itself — adding or modifying a component type (kind) in the
Go codebase. This is contributor/core guidance, distinct from the user-facing atmos-components skill
(which documents authoring terraform/helmfile/container components in stacks).
Start from docs/developing-component-plugins.md (the component-plugin development guide). The notes
below capture the non-obvious wiring learned while adding the container component type.
The component provider (pkg/component)
A component type is a ComponentProvider (pkg/component/provider.go) registered via init() with
component.Register(...) (pkg/component/registry.go). Reference impls:
pkg/component/ansible/ — typed-config built-in style.
pkg/component/mock/, pkg/component/custom/ — the Plugins-map plugin style.
pkg/component/container/ — provider + /lifecycle split.