Skip to content
Back to skills

Afx Cicd Scaffold

ASecurity

Bootstrap a complete .github/workflows/ set for a new project: CI (build/test/lint), CD (workflow_dispatch with env choice + OIDC + ECR), security-scan (gitleaks + dependency scan + CodeQL), and optional database-migration. Use this skill when the user wants to add GitHub Actions CI/CD to a project that does not already have it, or when they want to add missing workflows alongside existing ones.

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 12, 2026
securityrustgobashnodeawsgitdatabaseci/cdsecurity

Works with

  • claude code

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill afx-cicd-scaffold --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Afx Cicd Scaffold?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Afx Cicd Scaffold
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-afx-cicd-scaffold/badge)](https://www.skillsdirectory.com/skills/aibot88-afx-cicd-scaffold)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: afx-cicd-scaffold
description: Bootstrap a complete .github/workflows/ set for a new project: CI (build/test/lint), CD (workflow_dispatch with env choice + OIDC + ECR), security-scan (gitleaks + dependency scan + CodeQL), and optional database-migration. Use this skill when the user wants to add GitHub Actions CI/CD to a project that does not already have it, or when they want to add missing workflows alongside existing ones.
---

# Artifex CI/CD Scaffold Skill

**For Claude Code AI Assistant**

This skill generates a production-ready `.github/workflows/` set for a project, replicating the patterns used in `zoe` and `xenia/pms`. It auto-detects the project stack and produces correctly-wired workflow files with all required secrets and variables documented inline.

## What this skill generates

| File | Purpose |
|------|---------|
| `.github/workflows/ci.yml` | Runs on PR open/sync: build, test, lint. Stack-aware. |
| `.github/workflows/cd.yml` | Manual deploy via `workflow_dispatch` with environment choice (staging / prod). OIDC auth, ECR image build/push, ECS deploy. |
| `.github/workflows/security-scan.yml` | GitLeaks secret scan + OWASP dependency check + CodeQL SAST. Scheduled daily + PR trigger. |
| `.github/workflows/database-migration.yml` | Optional. Flyway migrations via Gradle. Validates on PR, deploys on `workflow_dispatch`. |
| `.gitleaks.toml` | GitLeaks configuration (dropped at project root alongside `.github/`). |

## Stack detection

The script scans the project root for these marker files:

| Marker | Detected stack |
|--------|---------------|
| `gradlew` or `pom.xml` | JVM/Gradle (default) |
| `package.json` | Node.js |
| `Cargo.toml` | Rust |
| `go.mod` | Go |

If none is found, JVM/Gradle is used (the user's primary stack).

## Key design decisions

- **Manual deploy only.** `cd.yml` uses `workflow_dispatch` with an environment input — no auto-deploy on push to main. This is intentional and must not be changed.
- **OIDC for AWS auth.** No long-lived credentials. The required IAM role pattern is documented in the `cd.yml` header as `arn:aws:iam::<account>:role/<project>-gha-deploy-<env>`.
- **Concurrency group `deploy-${{ inputs.environment }}`** with `cancel-in-progress: false`. Prevents two prod deploys racing. This is the xenia/pms pattern.
- **`--force` required to overwrite.** Existing files are never silently clobbered. New files are always added side-by-side.

## Conversational Routing

| User phrasing | Action |
|---------------|--------|
| "add CI/CD to my project", "scaffold GitHub Actions", "set up workflows" | Run `init` in the project directory |
| "add CI/CD without the database migration" | Run `init --no-db-migration` |
| "preview what would be created" | Run `init --dry-run` |
| "overwrite my existing workflows" | Run `init --force` |
| "add security scanning" | Run `init` — security-scan.yml is always included |

If the user is working in a specific project directory, use that directory as the target. If no project directory is given, default to the current working directory.

## How to run this skill

### Standard scaffolding

1. Confirm the target project directory.
2. Preview with `--dry-run`:
   ```bash
   ~/.claude/skills/afx-cicd-scaffold/afx-cicd-scaffold.sh init /path/to/project --dry-run
   ```
3. Show the user what would be generated.
4. If they approve, run for real (with optional `--no-db-migration` if they do not use a database):
   ```bash
   ~/.claude/skills/afx-cicd-scaffold/afx-cicd-scaffold.sh init /path/to/project
   ```
5. Walk the user through the next steps printed by the script:
   - Review and customise the generated files
   - Set the secrets and variables listed in the file header comments
   - Create the OIDC IAM roles for `cd.yml`
   - Commit the files

### Adding workflows to an existing project

If `.github/workflows/` already exists:
- New files (ones not already present) are added automatically without `--force`.
- Existing files are skipped with a warning.
- If the user wants to regenerate all files from scratch, re-run with `--force`.

### Database migration workflow

When the script runs interactively, it prompts whether to include `database-migration.yml`. The user can suppress the prompt with `--no-db-migration`. If the session is non-interactive (piped), the migration file is skipped by default.

## Required secrets and variables reference

All are documented inline in the generated file headers. Key ones for `cd.yml`:

| Name | Type | Description |
|------|------|-------------|
| `AWS_ROLE_ARN_STAGING` | Secret | OIDC role ARN for staging: `arn:aws:iam::<acct>:role/<project>-gha-deploy-staging` |
| `AWS_ROLE_ARN_PROD` | Secret | OIDC role ARN for production: `arn:aws:iam::<acct>:role/<project>-gha-deploy-prod` |
| `STAGING_URL` | Secret | Base URL for staging smoke tests |
| `PROD_URL` | Secret | Base URL for production smoke tests |
| `AWS_REGION` | Variable | AWS region (e.g. `us-east-1`) |
| `ECR_REPOSITORY` | Variable | ECR repository name |
| `ECS_SERVICE` | Variable | ECS service name |
| `ECS_CLUSTER_STAGING` | Variable | ECS cluster name for staging |
| `ECS_CLUSTER_PROD` | Variable | ECS cluster name for production |

## Version

1.0.0 (ticket 12.2)

Files in this skill

  • SKILL.md5.1 KB
  • source.json937 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.