automationlisted
Install: claude install-skill alex-macra/claude-codex-skills-assembly
# Automation
Manual steps are a bug. Anything done more than twice - install, build, test, deploy, backup, restore - gets a script. Anything done on a schedule gets a job runner.
Stack recipes - GitHub Actions layout, deploy-script shape, container builds, scheduled jobs, dev-server orchestration, release workflow, backups, observability - live in `references/recipes.md`; read it when writing the actual pipeline or script.
## Principles
- **Idempotent.** Running the script twice should produce the same outcome as running it once.
- **Fail loud.** `set -euo pipefail` in bash; exit non-zero on any unhandled error; never `|| true` to swallow failures.
- **Reproducible from a clean checkout.** No "you also need to install X manually" - that goes in the script.
- **One thing per script.** `build.sh`, `test.sh`, `deploy.sh`. A 600-line `do-everything.sh` is a footgun.
- **Inputs via flags or env, outputs to stdout, errors to stderr.** The Unix way composes; a script that writes to random paths doesn't.
## When to automate
- Twice is a coincidence; the third manual run is a bug - script it.
- Automate the check before the action: a deploy script without a smoke check automates the outage too.
- One workflow per concern (`ci.yml`, `deploy.yml`, `nightly.yml`); required checks either block merge or don't exist - no "advisory only" gates.
- Prefer boring, inspectable scripts committed to the repo over bespoke tooling; the runbook is the script's `--help` output and the README.
-