Extending ciz
ciz is designed so new commands, stages, and runtime capabilities can be added without collapsing the planner architecture.
Add a new CLI command
Follow the existing command pattern under cmd/ciz:
- keep Cobra wiring in a dedicated
command_*.gofile - place business logic in
internal/* - reuse existing stage packages instead of duplicating parsing or normalization
That keeps the command layer readable and testable.
Extend the planner
Prefer changes that preserve the current package contracts:
internal/modelstays the stage contractexpandremains a pure transformation from normalized input to component instancesrenderremains deterministic and side-effect free except for file writing
Add a new runner backend
Execution backends live behind the executor interface in internal/executor.
When adding a backend:
- implement the executor methods
- register the backend in the executor registry
- document backend-specific semantics in the runtime docs
- add tests for preparation, step execution, and cleanup behavior
Typical extension ideas
graphoutput for richer DAG visualizationslintfor policy-only validation passes- new composition types for additional platform domains
- extra execution backends when the current local, Docker, and GitHub Actions set is not enough