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 onsager-ai/dev-skills --skill ci-triagegit clone --depth 1 https://github.com/onsager-ai/dev-skillsWrote 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/onsager-ai/dev-skills/ci-triage)<a href="https://agentmods.dev/skills/onsager-ai/dev-skills/ci-triage"><img src="https://agentmods.dev/badge/skills/onsager-ai/dev-skills/ci-triage.svg" alt="Measured on agentmods" 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.00127 | $0.01587 |
| Opus 5 | $0.00063 | $0.00794 |
| Sonnet 5 | $0.00025 | $0.00317 |
| Haiku 4.5 | $0.00013 | $0.00159 |
Grade A, and why
ci-triage 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 8d 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 — 113 lines — stays where its author put it; the contents beside it link to each section on GitHub.
ci-triage
Shared logic for classifying a failed CI workflow run and recording the outcome. Used by humans (or Claude in an interactive session) when triaging a red main workflow or a red check on an open PR — the latter via the global pr-lifecycle skill, whose CI-triage section delegates the taxonomy here.
This skill owns the taxonomy, the de-dup rules for the main-red issue, and the issue template. Repo-specific reproduction steps and failure patterns live in the consumer repo's CLAUDE.md / <repo>-dev-process (read by pr-lifecycle), and e2e classification is delegated to web-testing.
Taxonomy
Every failure lands in exactly one bucket. Be explicit — "unclear" is not a bucket, needs-human is.
| Bucket | Signal | Default action |
|---|---|---|
regression |
Reproduces deterministically on main at HEAD |
File/update main-red, @-mention suspect author |
flake |
Same workflow passed on the previous main commit without code change | Comment on the existing main-red issue if one is open; otherwise skip |
infra |
Postgres service didn't come up, rustup 403, pnpm registry down | File/update main-red labelled infra; do not @-mention authors |
needs-human |
Logs truncated, auth failed, classification genuinely ambiguous | Open a main-red issue with raw log excerpt, label needs-human |
Do not invent a fifth bucket. If the signal you see fits nothing above, it's needs-human.
Suspect commit identification
The GitHub workflow_run payload includes head_sha. That's the commit that triggered this run — on a push: main event, it is the merge commit.
- Fetch the commit via
mcp__github__get_commit. - If the commit message matches
Merge pull request #N, the suspect PR is#N; its author is the suspect author. - Otherwise (direct push to main, squash-merge), use the commit author directly.
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.
- 8d ago First seen · 113 lines · 127 tokens per session scan A 381fedf4569e
ci-triage is a skill published in the GitHub repository onsager-ai/dev-skills (5 stars, last pushed 26d ago), licensed MIT. It adds 127 tokens to every session and 1,587 once invoked, about $0.0006 per session on Opus 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-31.
Other skills, from other repositories
Verification & Quality Assurance
Comprehensive truth scoring, code quality verification, and automatic rollback system with 0.95 accuracy threshold for ensuring high-quality agent outputs and codebase reliability.
smoke-test
Health smoke tests + auto-fix for gbrain installs (and OpenClaw services when present). Run after machine/container restarts or whenever something seems broken. Tests critical services, auto-fixes bounded local issues, and reports worker topology without starting daemons. Extensible via user-defined test scripts in…
mcore-create-issue
Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.
debug-task
Diagnose and fix moon tasks that are broken, misconfigured, or behaving unexpectedly. Use this skill when a moon task is failing, not running, skipped, hanging, producing stale or wrong output, cached when it shouldn't be, re-running every time when it should be cached, or when outputs are empty or missing after a…
github-ci-fix
Fix failing GitHub CI / Actions checks via fixgithubprci and push to the existing PR head, or fix a branch's failing CI via a linked repair worktree.
github-ci-fix
Use when the user asks OpenSRE to fix failing GitHub CI, GitHub Actions checks, failing pull request checks, a broken PR branch, or CI on a named branch such as main.