ciloop — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ciloop (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Drive a failing CI run to green. Pull the real error from the logs, reproduce it locally, fix the failures you're confident about, push once, and confirm — looping until green.
Core principle: CI is slow and costs minutes, so don't use it as your edit-test loop. Reproduce the failure locally, fix until local is green, then push once. And don't flail: fix what you can diagnose with confidence; for failures you can't (flaky, infra, secrets, ambiguous logic), stop and hand back rather than guess. Loop the fixable; hand back the judgment calls.
When NOT to use: You only want to read why CI failed without fixing → just gh run view --log-failed. The failures are all infra/deploy/flaky (nothing to fix in code) → ciloop will just hand those back.
| Category | Examples | Action |
|---|---|---|
| Confident-fix | lint, format/prettier, type errors (tsc), clear test/assertion failures, missing import, obvious compile error | reproduce locally → fix → loop |
| Hand-back | flaky/non-deterministic tests, infra/network timeouts, missing secrets/credentials, deploy/release steps, ambiguous logic failures you can't pin down | don't touch — record the real error + why, report at the end |
A step that can't run locally (needs live services, secrets, a built artifact) is hand-back, not a guess. Never push a speculative fix for something you couldn't reproduce.
BRANCH=$(git rev-parse --abbrev-ref HEAD)
HEAD_SHA=$(git rev-parse HEAD)
gh run list --branch "$BRANCH" --limit 5 \
--json databaseId,headSha,status,conclusion,workflowNamePick the most recent run for `HEAD_SHA`. If it's success → report "already green" and stop. If still in_progress → wait (gh run watch). See references/gh-ci.md.
gh run view <run-id> --json jobs \
--jq '.jobs[] | select(.conclusion=="failure") | {name, steps: [.steps[] | select(.conclusion=="failure") | .name]}'
gh run view <run-id> --log-failedRead the actual error from --log-failed — not just "job X failed". Find the line that caused it.
Split into fix and hand-back. If there are zero fixable failures, skip to the report.
For each fixable job, map it to its local command by reading the workflow that ran it:
# find the failed step's exact command
cat .github/workflows/*.y*ml # locate the failing job → its `run:` stepRun that exact command locally (e.g. pnpm lint, pnpm typecheck, pnpm test <file>), read the error in context, fix the root cause, and re-run the command until it passes locally. Repeat per fixable job. (If the YAML is a composite/opaque action, fall back to the obvious local command for the job's purpose — but if you can't reproduce it, treat it as hand-back.)
Only after every fixable job is green locally:
git add -A
git commit -m "fix CI: <what failed> (ciloop iteration N)"
git pushOne push per iteration — not one per fix.
git rev-parse HEAD # new sha — watch THIS run, not the stale one
gh run watch <new-run-id> --exit-statusGuard against acting on a stale run: only evaluate the run whose headSha matches the new local HEAD.
| Mistake | Fix |
|---|---|
| Using CI as the edit-test loop (push every fix) | Reproduce locally, fix to local-green, push once. |
| Pushing a fix you couldn't reproduce locally | If it won't run locally, it's hand-back — don't guess. |
| Reading "job failed" but not the actual error | Always --log-failed and find the causing line. |
| Watching the old run after pushing | Re-resolve the run id for the new HEAD sha before watching. |
| Looping forever on a flaky/infra failure | Classify it hand-back; stop and report instead. |
| "Fixing" a flaky test by rerunning until it passes | That's hand-back — report it; don't mask flakiness. |
Ciloop complete.
Branch: eng-522-migrate-the-voice_service
Iterations: 2
Fixed: lint (3 files), typecheck (1 error), unit test auth.spec.ts
Handed back: e2e job — flaky (timeout on external service), not a code issue
Final CI: green ✅If stopped at max iterations or on hand-back failures, list each remaining failure with its real error and a suggested next step.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.