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', '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.From its SKILL.md
npx -y skills add thettwe/nyann --skill gen-ciAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 4 commands, including `bin/detect-stack.sh --path .` and 3 more.
SKILL.md
5.3 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
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
- Run
bin/detect-stack.sh --path .to get a StackDescriptor JSON. - Resolve and load the active profile via
bin/load-profile.sh <name>(resolves preferences → CLAUDE.md markers →"default"fallback).
Phase 2: Preview the workflow
- Run
bin/gen-ci.sh --profile <profile> --stack <stack> --target . --dry-runto preview the generated workflow. - 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
- Ask the user: "Write this CI workflow to
.github/workflows/ci.yml?" - On confirmation, run:
bin/gen-ci.sh --profile <profile> --stack <stack> --target . [--governance] - Report what was written (ci.yml, and governance-check.yml if
--governance).
Phase 4: Suggest next steps
- Suggest:
- "Run
/nyann:gen-templatesto add PR and issue templates" - "Run
/nyann:doctorto check overall repo health" - If governance was generated: "Add a
governanceblock to your profile to customize threshold and severity" - "Commit and push to see the workflow run"
- "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.ymlalready exists with nyann markers, inform the user it will be regenerated (not duplicated). - If
.github/workflows/ci.ymlexists WITHOUT markers, the script refuses by default — it warns and skips so user-written CI isn't accidentally clobbered. Pass--allow-merge-existingto 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.ymltemplate, warn that lint/test steps are placeholders - No profile found → use
defaultprofile (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.shon 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-templatesskill. - "Check repo health" →
doctorskill. - "Apply branch protection" →
gh-protectskill. - "Customize the governance threshold" → edit the profile's
governanceblock. - "Commit and ship" →
commitskill, thenshipskill.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.