- Pure functions for all generators — no side effects
thiserrorfor error types,clapderive for CLIcargo clippy -- -D warningsmust passcargo fmt --checkmust pass
- Indent: 2 spaces
- Quotes: Double quotes for strings with variables, domains, IPs
- Comments: Above the line, not inline
- Naming: kebab-case for K8s resource names, snake_case for config YAML keys
- Lint:
yamllint -c .yamllint.ymlmust pass
- All config reads from
credentials/andconfig/files only - Jinja2 templates end with
.j2 - Generated output goes to
_generated/(gitignored)
# Run all tests
./tests/run-tests.sh
# Rust tests only
cd scalex-cli && cargo test- RED: Write failing test
- GREEN: Write minimal implementation
- REFACTOR: Clean up
- All tests must pass before committing
- Branch:
feat/,fix/,docs/prefixes - Commits: conventional commits (
feat:,fix:,docs:,chore:) - PR template: summary, test plan, verification steps