ln-732-cicd-generator

Generates GitHub Actions CI workflow configuration. Use when adding continuous integration to a project.

310 stars

Best use case

ln-732-cicd-generator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Generates GitHub Actions CI workflow configuration. Use when adding continuous integration to a project.

Teams using ln-732-cicd-generator should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/ln-732-cicd-generator/SKILL.md --create-dirs "https://raw.githubusercontent.com/levnikolaevich/claude-code-skills/main/skills-catalog/ln-732-cicd-generator/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/ln-732-cicd-generator/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How ln-732-cicd-generator Compares

Feature / Agentln-732-cicd-generatorStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Generates GitHub Actions CI workflow configuration. Use when adding continuous integration to a project.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

> **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. If `shared/` is missing, fetch files via WebFetch from `https://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}`.

# ln-732-cicd-generator

**Type:** L3 Worker
**Category:** 7XX Project Bootstrap

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](references/github_ci_dotnet.template.yml) or [github_ci_python.template.yml](references/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:
1. Check if workflow already exists (warn before overwrite)
2. Apply variable substitution
3. Write to `.github/workflows/ci.yml`
4. 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

1. Checkout code
2. Setup Node.js with caching
3. Install dependencies (`npm ci`)
4. Run linter (`npm run lint`)
5. Build application (`npm run build`)
6. Run tests (`npm test`)

### Backend Job Steps (.NET)

1. Checkout code
2. Setup .NET SDK
3. Restore dependencies (`dotnet restore`)
4. Build (`dotnet build`)
5. Run tests (`dotnet test`)

### Backend Job Steps (Python)

1. Checkout code
2. Setup Python with pip caching
3. Install dependencies (`pip install -r requirements.txt`)
4. Run linter (`ruff check`)
5. Run tests (`pytest`)

### Docker Job Steps

1. Checkout code
2. Build images (`docker compose build`)
3. Start containers (`docker compose up -d`)
4. Wait for startup (30 seconds)
5. Health check frontend (port 3000)
6. Health check backend (port 5000/8000)
7. Show logs on failure
8. 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:
- [ ] Pass YAML syntax validation
- [ ] Use pinned action versions (not `@latest`)
- [ ] Include dependency caching
- [ ] Have health checks for docker job
- [ ] Clean up resources on completion

---

## Critical Notes

1. **GitHub Actions Only**: This skill generates only GitHub Actions workflows. No Azure/GitLab support.
2. **Template-based**: Use templates from references/. Do NOT hardcode workflow contents.
3. **Idempotent**: Check if .github/workflows/ exists. Warn before overwriting ci.yml.
4. **Version Detection**: Use detected versions, not hardcoded defaults.

---

## Reference Files

| File | Purpose |
|------|---------|
| [github_ci.template.yml](references/github_ci.template.yml) | Full template with comments |
| [github_ci_dotnet.template.yml](references/github_ci_dotnet.template.yml) | Compact .NET stack template |
| [github_ci_python.template.yml](references/github_ci_python.template.yml) | Compact Python stack template |

---

## Definition of Done

- [ ] `.github/workflows/ci.yml` generated and passes YAML validation
- [ ] Pipeline includes lint, build, test, and docker jobs
- [ ] All action versions pinned (not `@latest`)

---

**Version:** 1.1.0
**Last Updated:** 2026-01-10

Related Skills

ln-775-api-docs-generator

310
from levnikolaevich/claude-code-skills

Configures Swagger/OpenAPI documentation for backend APIs. Use when adding interactive API docs to a project.

ln-731-docker-generator

310
from levnikolaevich/claude-code-skills

Generates Dockerfile and docker-compose configuration for multi-container development. Use when containerizing a project.

ln-723-seed-data-generator

310
from levnikolaevich/claude-code-skills

Generates seed data from ORM schemas or entity definitions to any target format. Use when populating databases for development.

ln-722-backend-generator

310
from levnikolaevich/claude-code-skills

Generates .NET Clean Architecture backend structure from entity definitions. Use when bootstrapping .NET backend projects.

ln-914-community-responder

310
from levnikolaevich/claude-code-skills

Responds to unanswered GitHub discussions and issues with codebase-informed replies. Use when clearing community question backlog.

ln-913-community-debater

310
from levnikolaevich/claude-code-skills

Launches RFC and debate discussions on GitHub. Use when proposing changes that need community input or voting.

ln-912-community-announcer

310
from levnikolaevich/claude-code-skills

Composes and publishes announcements to GitHub Discussions. Use when sharing releases, updates, or news with the community.

ln-911-github-triager

310
from levnikolaevich/claude-code-skills

Produces prioritized triage report from open GitHub issues, PRs, and discussions. Use when reviewing community backlog.

ln-910-community-engagement

310
from levnikolaevich/claude-code-skills

Analyzes community health and delegates engagement tasks. Use when managing GitHub issues, discussions, and announcements.

ln-840-benchmark-compare

310
from levnikolaevich/claude-code-skills

Runs built-in vs hex-line benchmark with scenario manifests, activation checks, and diff-based correctness. Use when measuring hex-line MCP performance against built-in tools.

ln-832-bundle-optimizer

310
from levnikolaevich/claude-code-skills

Reduces JS/TS bundle size via tree-shaking, code splitting, and unused dependency removal. Use when optimizing frontend bundle size.

ln-831-oss-replacer

310
from levnikolaevich/claude-code-skills

Replaces custom modules with OSS packages using atomic keep/discard testing. Use when migrating custom code to established libraries.