cicdlisted
Install: claude install-skill Bobi-Labs/bobi-stack-template
# CI/CD Setup
Generate a self-contained `.github/workflows/ci.yml` tailored to the project's language stack. The workflow runs on every PR and on pushes to `main`, with lint + test + (optional) build gates.
**Self-contained.** No external reusable workflows, no shared repos. Each project owns its CI file outright.
**Idempotent.** If `.github/workflows/ci.yml` already exists, do not overwrite. Tell the user it exists, show its language coverage, and ask whether to reconcile (add missing language jobs) or leave it.
## Steps
### 1. Detect the language stack
Read the repo root and identify which of the supported languages are in play. Look for these markers (a project can be polyglot, generate jobs for every language found):
| Language | Marker files |
|---|---|
| Node / TypeScript | `package.json` (check `engines.node`, scripts, lockfile for npm/pnpm/yarn/bun) |
| Python | `pyproject.toml`, `requirements.txt`, `setup.py`, `Pipfile` |
| Go | `go.mod` |
| Rust | `Cargo.toml` |
If none of these are present, tell the user the project's language stack isn't recognized and stop. Don't write a workflow that won't work.
If multiple languages are detected, generate a workflow with one job per language. The jobs run in parallel.
### 2. Check for existing workflow
If `.github/workflows/ci.yml` exists:
- Read it.
- Identify which languages it covers (look for `setup-node`, `setup-python`, `setup-go`, `dtolnay/rust-toolchain`).
- If it already covers everything detected in step 1,