Paths: File paths (shared/, references/, ../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.
ln-732-cicd-generator
Type: L3 Worker
Category: 7XX Project Bootstrap
Parent: ln-730-devops-setup
Generates GitHub Actions CI pipeline for automated testing and validation.
Purpose & Scope
Creates CI/CD workflow for GitHub:
- Does: Generate .github/workflows/ci.yml with lint, test, build, docker jobs
- Does NOT: Configure deployment, manage secrets, set up CD pipelines
Inputs
| Input |
Source |
Description |
| Stack Type |
ln-730 coordinator |
backend-dotnet, backend-python |
| Versions |
Auto-detected |
Node.js, .NET or Python versions |
| Frontend Path |
Auto-detected |
Path to frontend directory |
| Build Commands |
Auto-detected |
npm scripts, dotnet/pytest commands |
Outputs
| File |
Purpose |
Template |
.github/workflows/ci.yml |
Main CI pipeline |
github_ci_dotnet.template.yml or github_ci_python.template.yml |
Workflow
Phase 1: Stack Analysis
Determine which template to use:
| Detection |
Backend Template |
.sln or .csproj present |
github_ci_dotnet.template.yml |
requirements.txt or pyproject.toml present |
github_ci_python.template.yml |
Detect commands:
- Frontend: Read scripts from package.json (lint, build, test)
- .NET: Standard dotnet restore/build/test
- Python: pip install, ruff lint, pytest
Phase 2: Variable Substitution
Replace template variables:
| Variable |
Source |
Default |
{{NODE_VERSION}} |
package.json engines |
22 |
{{DOTNET_VERSION}} |
*.csproj TargetFramework |
9.0.x |
{{PYTHON_VERSION}} |
pyproject.toml |
3.12 |
{{FRONTEND_PATH}} |
Directory detection |
src/frontend |
Phase 3: Directory Creation
Create .github/workflows/ directory if not exists.
Phase 4: File Generation
Generate ci.yml from selected template:
- Check if workflow already exists (warn before overwrite)
- Apply variable substitution
- Write to
.github/workflows/ci.yml
- Validate YAML syntax
Generated Pipeline Structure
Jobs Overview
| Job |
Purpose |
Dependencies |
| frontend |
Lint, build, test React/Vite |
None |
| backend |
Build, test .NET or Python |
None |
| docker |
Build images, health checks |
frontend, backend |
Frontend Job Steps
- Checkout code
- Setup Node.js with caching
- Install dependencies (
npm ci)
- Run linter (
npm run lint)
- Build application (
npm run build)
- Run tests (
npm test)
Backend Job Steps (.NET)
- Checkout code
- Setup .NET SDK
- Restore dependencies (
dotnet restore)
- Build (
dotnet build)
- Run tests (
dotnet test)
Backend Job Steps (Python)
- Checkout code
- Setup Python with pip caching
- Install dependencies (
pip install -r requirements.txt)
- Run linter (
ruff check)
- Run tests (
pytest)
Docker Job Steps
- Checkout code
- Build images (
docker compose build)
- Start containers (
docker compose up -d)
- Wait for startup (30 seconds)
- Health check frontend (port 3000)
- Health check backend (port 5000/8000)
- Show logs on failure
- Stop containers (
docker compose down)
Triggers
| Event |
Branches |
| Push |
main, develop |
| Pull Request |
main |
Best Practices Applied
| Practice |
Implementation |
| Dependency caching |
npm cache, pip cache |
| Pinned versions |
actions/checkout@v4, setup-node@v4 |
| Parallel jobs |
frontend and backend run in parallel |
| Fail fast |
docker job waits for both to succeed |
| Clean up |
docker compose down runs always |
| Debug support |
logs shown on failure |
Quality Criteria
Generated workflow must:
Critical Notes
- GitHub Actions Only: This skill generates only GitHub Actions workflows. No Azure/GitLab support.
- Template-based: Use templates from references/. Do NOT hardcode workflow contents.
- Idempotent: Check if .github/workflows/ exists. Warn before overwriting ci.yml.
- Version Detection: Use detected versions, not hardcoded defaults.
Reference Files
| File |
Purpose |
| github_ci.template.yml |
Full template with comments |
| github_ci_dotnet.template.yml |
Compact .NET stack template |
| github_ci_python.template.yml |
Compact Python stack template |
Version: 1.1.0
Last Updated: 2026-01-10
1---2name: ln-732-cicd-generator-53description: Generates GitHub Actions CI workflow configuration4---56> **Paths:** File paths (`shared/`, `references/`, `../ln-*`) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.78# ln-732-cicd-generator910**Type:** L3 Worker11**Category:** 7XX Project Bootstrap12**Parent:** ln-730-devops-setup1314Generates GitHub Actions CI pipeline for automated testing and validation.1516---1718## Purpose & Scope1920Creates CI/CD workflow for GitHub:21- **Does**: Generate .github/workflows/ci.yml with lint, test, build, docker jobs22- **Does NOT**: Configure deployment, manage secrets, set up CD pipelines2324---2526## Inputs2728| Input | Source | Description |29|-------|--------|-------------|30| **Stack Type** | ln-730 coordinator | backend-dotnet, backend-python |31| **Versions** | Auto-detected | Node.js, .NET or Python versions |32| **Frontend Path** | Auto-detected | Path to frontend directory |33| **Build Commands** | Auto-detected | npm scripts, dotnet/pytest commands |3435---3637## Outputs3839| File | Purpose | Template |40|------|---------|----------|41| `.github/workflows/ci.yml` | Main CI pipeline | [github_ci_dotnet.template.yml](references/github_ci_dotnet.template.yml) or [github_ci_python.template.yml](references/github_ci_python.template.yml) |4243---4445## Workflow4647### Phase 1: Stack Analysis4849Determine which template to use:5051| Detection | Backend Template |52|-----------|------------------|53| `.sln` or `.csproj` present | github_ci_dotnet.template.yml |54| `requirements.txt` or `pyproject.toml` present | github_ci_python.template.yml |5556Detect commands:57- Frontend: Read scripts from package.json (lint, build, test)58- .NET: Standard dotnet restore/build/test59- Python: pip install, ruff lint, pytest6061### Phase 2: Variable Substitution6263Replace template variables:6465| Variable | Source | Default |66|----------|--------|---------|67| `{{NODE_VERSION}}` | package.json engines | 22 |68| `{{DOTNET_VERSION}}` | *.csproj TargetFramework | 9.0.x |69| `{{PYTHON_VERSION}}` | pyproject.toml | 3.12 |70| `{{FRONTEND_PATH}}` | Directory detection | src/frontend |7172### Phase 3: Directory Creation7374Create `.github/workflows/` directory if not exists.7576### Phase 4: File Generation7778Generate ci.yml from selected template:791. Check if workflow already exists (warn before overwrite)802. Apply variable substitution813. Write to `.github/workflows/ci.yml`824. Validate YAML syntax8384---8586## Generated Pipeline Structure8788### Jobs Overview8990| Job | Purpose | Dependencies |91|-----|---------|--------------|92| **frontend** | Lint, build, test React/Vite | None |93| **backend** | Build, test .NET or Python | None |94| **docker** | Build images, health checks | frontend, backend |9596### Frontend Job Steps97981. Checkout code992. Setup Node.js with caching1003. Install dependencies (`npm ci`)1014. Run linter (`npm run lint`)1025. Build application (`npm run build`)1036. Run tests (`npm test`)104105### Backend Job Steps (.NET)1061071. Checkout code1082. Setup .NET SDK1093. Restore dependencies (`dotnet restore`)1104. Build (`dotnet build`)1115. Run tests (`dotnet test`)112113### Backend Job Steps (Python)1141151. Checkout code1162. Setup Python with pip caching1173. Install dependencies (`pip install -r requirements.txt`)1184. Run linter (`ruff check`)1195. Run tests (`pytest`)120121### Docker Job Steps1221231. Checkout code1242. Build images (`docker compose build`)1253. Start containers (`docker compose up -d`)1264. Wait for startup (30 seconds)1275. Health check frontend (port 3000)1286. Health check backend (port 5000/8000)1297. Show logs on failure1308. Stop containers (`docker compose down`)131132---133134## Triggers135136| Event | Branches |137|-------|----------|138| **Push** | main, develop |139| **Pull Request** | main |140141---142143## Best Practices Applied144145| Practice | Implementation |146|----------|----------------|147| **Dependency caching** | npm cache, pip cache |148| **Pinned versions** | actions/checkout@v4, setup-node@v4 |149| **Parallel jobs** | frontend and backend run in parallel |150| **Fail fast** | docker job waits for both to succeed |151| **Clean up** | docker compose down runs always |152| **Debug support** | logs shown on failure |153154---155156## Quality Criteria157158Generated workflow must:159- [ ] Pass YAML syntax validation160- [ ] Use pinned action versions (not `@latest`)161- [ ] Include dependency caching162- [ ] Have health checks for docker job163- [ ] Clean up resources on completion164165---166167## Critical Notes1681691. **GitHub Actions Only**: This skill generates only GitHub Actions workflows. No Azure/GitLab support.1702. **Template-based**: Use templates from references/. Do NOT hardcode workflow contents.1713. **Idempotent**: Check if .github/workflows/ exists. Warn before overwriting ci.yml.1724. **Version Detection**: Use detected versions, not hardcoded defaults.173174---175176## Reference Files177178| File | Purpose |179|------|---------|180| [github_ci.template.yml](references/github_ci.template.yml) | Full template with comments |181| [github_ci_dotnet.template.yml](references/github_ci_dotnet.template.yml) | Compact .NET stack template |182| [github_ci_python.template.yml](references/github_ci_python.template.yml) | Compact Python stack template |183184---185186**Version:** 1.1.0187**Last Updated:** 2026-01-10