Skip to content
Development
Skill

/gen-ci

Generate GitHub Actions CI workflows for this repository. TRIGGER ON: 'generate CI', 'add GitHub Actions', 'create CI workflow', 'set up CI', 'add CI/CD', 'create a CI pipeline', 'generate CI/CD', 'add continuous integration', 'set up GitHub Actions', 'add a lint+test workflow',

From plugin
nyann
741 skills41 commands3 hooks

Claude Code

$ npx -y skills add thettwe/nyann --skill gen-ci --agent claude-code

SKILL.md

gen-ci.SKILL.md
name: gen-ci
description: "Generate GitHub Actions CI workflows for this repository. TRIGGER ON: 'generate CI', 'add GitHub Actions', 'create CI workflow', 'set up CI', 'add CI/CD', 'create a CI pipeline', 'generate CI/CD', 'add continuous integration', 'set up GitHub Actions', 'add a lint+test workflow', 'add governance check', 'add PR health check', 'add drift check to CI', 'set up governance gate', 'enforce governance in CI'. Generates .github/workflows/ci.yml with lint, typecheck, and test jobs, and optionally .github/workflows/governance-check.yml with drift + health-score PR gating."

gen-ci — Generate GitHub Actions CI Workflow

You are the gen-ci skill. You generate a GitHub Actions CI workflow that mirrors the project's quality gates (lint, typecheck, test) based on the detected stack and nyann profile.

When to trigger

  • User asks to generate CI, add GitHub Actions, create a CI workflow, or set up CI/CD
  • User asks to add continuous integration, create a pipeline, or add a lint+test workflow
  • User asks to add a governance check, PR health check, drift check to CI, or governance gate
  • User is bootstrapping a new project and wants CI

**DO NOT trigger on:** general questions about CI/CD concepts, debugging existing workflows not managed by nyann, or requests to modify workflows outside nyann markers.

Execution flow

Phase 1: Detect stack and resolve profile

1. Run `bin/detect-stack.sh --path .` to get a StackDescriptor JSON. 2. Resolve and load the active profile via `bin/load-profile.sh <name>` (resolves preferences → CLAUDE.md markers → `"default"` fallback).

Phase 2: Preview the workflow

4. Run `bin/gen-ci.sh --profile <profile> --stack <stack> --target . --dry-run` to preview the generated workflow. 5. Show the user what will be generated:

  • Template selected (typescript/python/go/rust/generic)
  • Jobs and steps (lint, typecheck, test)
  • Package manager and version matrix
  • Path filters (if monorepo)

Phase 2.5: Offer governance check

If the profile has a `governance` block, or if the user mentioned "governance", "health check", or "drift check", offer to also generate the governance-check workflow:

> "Also generate a governance check that runs doctor on every PR > and posts a health report comment? (adds `governance-check.yml`)"

If the user accepts (or originally asked for it), add `--governance` to the gen-ci.sh invocation.

Phase 3: Confirm and write

6. Ask the user: "Write this CI workflow to `.github/workflows/ci.yml`?" 7. On confirmation, run:

   bin/gen-ci.sh --profile <profile> --stack <stack> --target . [--governance]

8. Report what was written (ci.yml, and governance-check.yml if `--governance`).

Phase 4: Suggest next steps

9. Suggest:

  • "Run `/nyann:gen-templates` to add PR and issue templates"
  • "Run `/nyann:doctor` to check overall repo health"
  • If governance was generated: "Add a `governance` block to your

profile to customize threshold and severity"

  • "Commit and push to see the workflow run"

Key constraints

  • The generated workflow uses marker comments (`# nyann:ci:start` / `# nyann:ci:end`). Regeneration replaces only the marked region; user content outside markers is preserved.
  • If the profile has `ci.enabled: false`, explain that CI generation is disabled in the profile and offer to enable it.
  • If `.github/workflows/ci.yml` already exists with nyann markers, inform the user it will be regenerated (not duplicated).
  • If `.github/workflows/ci.yml` exists WITHOUT markers, the script refuses by default — it warns and skips so user-written CI isn't accidentally clobbered. Pass `--allow-merge-existing` to gen-ci.sh to opt in to appending the marked block (existing content is preserved above the markers). Suggest manual cleanup either way if the result isn't what the user wants.

Error handling

  • No stack detected → use `generic.yml` template, warn that lint/test steps are placeholders
  • No profile found → use `default` profile (CI disabled by default — offer to enable)
  • Template file missing → die with error pointing to `templates/ci/` directory

Governance check details

The `--governance` flag generates `.github/workflows/governance-check.yml`:

  • Runs `bin/doctor-ci.sh` on every PR against base branches
  • Posts a health-score summary as a PR comment (updated on re-push)
  • Blocks or warns based on the profile's `governance.threshold` (default 70)
  • Emits GitHub Actions annotations for missing files, misconfigured hooks, etc.

Profile governance configuration (optional — all fields have defaults):

{
  "governance": {
    "enabled": true,
    "threshold": 70,
    "severity": "block",
    "ignore": ["orphans", "stale"]
  }
}

| Field | Default | Effect | |---|---|---| | `enabled` | `true` | Set `false` to disable governance check generation | | `threshold` | `70` | Minimum health score (0-100) to pass the gate | | `severity` | `"block"` | `block` = fail check; `warn` = annotate only; `off` = skip | | `ignore` | `[]` | Categories excluded from score (e.g. `orphans`, `stale`) |

When to hand off

  • "Add PR and issue templates too" → `gen-templates` skill.
  • "Check repo health" → `doctor` skill.
  • "Apply branch protection" → `gh-protect` skill.
  • "Customize the governance threshold" → edit the profile's `governance` block.
  • "Commit and ship" → `commit` skill, then `ship` skill.
Read more
@thettwe
Ships withnyann

ငြမ်း is Burmese for scaffolding. Nyann is the Claude Code plugin that picks expert git defaults for your stack — branching, working hooks (Husky / pre-commit.com / lefthook), commits, releases, CI, docs — then keeps the repo on those rails through every PR

Stars on GitHub

Momentum

stars in total
7
Star history of thettwe/nyann on GitHub, a chart by star-history.com

Other skills on nyann.

add-team-source

add-team-source

Register a git URL as a team-profile source so nyann can periodically sync and expose its profiles under a namespace. TRIGGER…

@thettwe@thettweInstall Skill
bootstrap-project

bootstrap-project

Bootstrap a fresh or existing repo with nyann. TRIGGER when the user says "set up this project", "initialize git workflow",…

@thettwe@thettweInstall Skill
check-prereqs

check-prereqs

Survey the machine and report which nyann features are usable right now. TRIGGER when the user says "is my machine ready for…

@thettwe@thettweInstall Skill
cleanup-branches

cleanup-branches

Prune local branches whose work is already merged into the base. TRIGGER when the user says "clean up branches", "delete merged…

@thettwe@thettweInstall Skill
commit

commit

Generate a Conventional Commits message from the staged diff and create the commit after user confirmation. TRIGGER when the user…

@thettwe@thettweInstall Skill
diagnose

diagnose

Bundle a redacted, support-grade snapshot of the current nyann state for inclusion in a bug report or support request. Combines…

@thettwe@thettweInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about gen-ci.

Which coding agents can use gen-ci?
gen-ci installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.