Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add babarot/gh-infra --skill ci-cdgit clone --depth 1 https://github.com/babarot/gh-infraWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/babarot/gh-infra/ci-cd)<a href="https://agentmods.dev/skills/babarot/gh-infra/ci-cd"><img src="https://agentmods.dev/badge/skills/babarot/gh-infra/ci-cd/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/babarot/gh-infra/ci-cd"><img src="https://agentmods.dev/badge/skills/babarot/gh-infra/ci-cd.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00063 | $0.01283 |
| Opus 5.5 | $0.00025 | $0.00513 |
| Sonnet 5.5 | $0.00013 | $0.00257 |
| Haiku 4.5 | $0.00006 | $0.00128 |
Grade A, and why
ci-cd scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 26d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 58 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CI/CD Integration
Use this skill when the user wants GitHub Actions workflows around gh-infra.
Recommended Setup
Three workflows; full YAML in references/workflows.md. Copy them and change only the paths and the secret name.
| Workflow | Trigger | Command |
|---|---|---|
| Plan on pull request | pull_request |
gh infra plan <paths> --changed-since origin/${{ github.base_ref }} --detailed-exitcode -o markdown > plan.md, then gh pr comment --body-file plan.md --edit-last --create-if-none |
| Apply on merge | push to main, workflow_dispatch |
gh infra apply <paths> --changed-since "$BEFORE" --auto-approve; without --changed-since when github.event.before is empty or all zeros |
| Drift detection | schedule, workflow_dispatch |
gh infra plan <paths> --detailed-exitcode -o markdown > plan.md (no --changed-since), notify on exit 2 |
Optional fourth: pull changes made on GitHub into the manifests on a schedule with gh infra import --into=<path> --auto-approve and open a pull request (also in workflows.md).
Use the three unless the user wants less. Drift detection is also the safety net for apply runs that failed: a failed apply --changed-since is not retried by the next push.
Rules For Every Workflow
- install the extension:
- run: gh extension install babarot/gh-infraafteractions/checkout, withGH_TOKENset at job level - pass every manifest directory to one command:
gh infra plan ./repos/ ./files/. One exit status, and cross-manifest validation (shared PR branch) covers all of them. Do not run one command per directory: with--detailed-exitcodethe first exits 2 and the second never runs --changed-sinceneeds the ref in the checkout:actions/checkoutwithfetch-depth: 0--auto-approveonapply(andimport --into) in CI; the prompt needs a TTY- capture exit codes instead of letting the step fail:
... --detailed-exitcode ... || echo "code=$?" >> "$GITHUB_OUTPUT", thenif: steps.plan.outputs.code == '1'->exit 1. Exit 0 no changes (also when--changed-sinceselected nothing), 1 error (wins over changes; also bad ref, no manifests), 2 changes --ciis deprecated (exits 1 for changes and errors alike); use--detailed-exitcode, andNO_COLOR=1for plain output- pull request workflow:
permissions: pull-requests: write; skip PRs from forks (if: github.event.pull_request.head.repo.full_name == github.repository) since they get no secrets and a read-only token; never suggestpull_request_targetfor this (it runs the fork's manifests with your token); guard the comment with[ -s plan.md ](empty when the plan failed early) paths:filters must include directories read throughsource:/patches:(e.g.templates/**), or a template-only change does not trigger the workflow. Withoutpaths:,--changed-sincealready makes unrelated runs free. Apaths:-filtered workflow cannot be a required check- FileSet commit messages can link the trigger:
env: GH_INFRA_SOURCE_URL: ${{ github.event.head_commit.url }}on the apply job, used as<% if .Source.URL %>Source: <% .Source.URL %><% end %>
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 26d ago Changed · -13 lines · +24 tokens per session 3aa6b7dbc649
- 27d ago Changed 4beecbf4e2ed
- 2mo ago First seen · 71 lines · 39 tokens per session scan A 3be692ad773b
ci-cd is a skill published in the GitHub repository babarot/gh-infra (140 stars, last pushed 3d ago), licensed MIT. It adds 63 tokens to every session and 1,283 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
ci-cd compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| ci-cdbabarot/gh-infra | Skill | 140 | 3d ago | MIT | A | 63 | Claude Code, Codex |
| gh-attachsudosubin/gh-attach | Skill | 45 | 10d ago | MIT | A | 94 | Claude Code, Codex |
| watch-commitjustincampbell/gh-watch | Skill | 4 | 7d ago | MIT | A | 48 | Claude Code |
| gh-stackgithub/gh-stack | Skill | 1.7k | 3d ago | MIT | A | 80 | Claude Code, Codex |
| pkup-enchantpPrecel/pkup-gen | Skill | 12 | 2mo ago | MIT | A | 59 | Claude Code, Codex |
| pkup-genpPrecel/pkup-gen | Skill | 12 | 2mo ago | MIT | A | 27 | Claude Code, Codex |
| github-pr-workflowfurkangonel/cowrangler | Skill | 1 | 1mo ago | MIT | B | 25 | Claude Code, Codex |