Gen ci
Nyann (ငြမ်း) is Burmese for scaffolding. Nyann is a Claude Code plugin that sets up and maintains project governance.
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.
One thing 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.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
5.3 KB, 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.