Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Orchestrates the QUALITY pipeline stage for egregore work items, running code review, unbloat, and test updates. Use when running quality checks before a PR.
.claude/skills/athola-quality-gate/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 39% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 538% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 106% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 115% | 0% |
make lint directly)Orchestrate the QUALITY stage of egregore's pipeline. Each quality step runs convention checks from the codex and invokes mapped skills.
| Step | Conventions | Skills | Modes | |------|------------|--------|-------| | code-review | C1,C2,C3,C4,C5 | pensive:unified-review | self, pr | | unbloat | - | conserve:unbloat | self | | code-refinement | - | pensive:code-refinement | self | | update-tests | - | sanctum:update-tests | self | | update-docs | C5 | sanctum:update-docs, scribe:slop-detector | self |
The orchestrator invokes this skill with:
When mode is "self-review":
git diff --name-only main...HEADconventions/codex.ymlconventions.pyIf blocking findings exist:
"fix-required"
if no findings:
verdict = "pass"
elif all findings are severity "warning":
verdict = "pass-with-warnings"
elif blocking findings remain after auto-fix:
verdict = "fix-required"Record verdict in manifest decisions:
json{ "step": "code-review", "chose": "pass-with-warnings", "why": "2 warnings (C4: noqa in hooks), 0 blocking" }
By default the loop runs indefinitely and autonomously: a fix-required verdict is recorded but does not, on its own, stop the item from advancing. This preserves the historical hands-off posture.
When config.pipeline.completion_integrity is true, the verdict becomes a gate the agent cannot talk its way past:
fix-required verdict is reported to the orchestrator asa step failure, so the item cannot advance to the ship stage with unresolved blocking findings. It retries in place and, on exhausting max_attempts, is marked failed and the overseer is alerted (never silently completed).
auto_merge:the PR is prepared but left open.
This binds "done" to the verifier (convention checks plus the mapped review skills), not to the agent's own say-so. The principle comes from shipped agent harnesses, stated best by KbWen/agentic-os: an agent "can still cut a corner, it just can't cut this one past a check it doesn't control." The recurring patterns across those harnesses:
| Pattern | What it does | Source | |---------|--------------|--------| | Verifier gate as completion judge | Bind "done" to tests, lints, or result hashes the agent cannot fake | Aider, snarktank/ralph, gaasher | | Completion promise + max-iterations cap | String-matching "done" is insufficient; pair it with an iteration ceiling and manual abort | anthropics ralph-wiggum | | Evidence gates the agent does not control | Credential scan, test-execution validation, phase-log parsing enforced by hooks or CI | KbWen/agentic-os | | Keep-if-better / revert-if-worse ledger | Score each change, revert regressions, log to an append-only ledger for review | gaasher/Agent-Loop-Skills | | Legibility anchor | A persisted current-state or repo-map file that lets a human re-enter the loop | Aider repo map, agentic-os | | Human observer checkpoint | Watch early iterations, monitor diffs, reserve loops for defined problems | anthropics, ghuntley |
Further rationale: .claude/rules/prefer-invariants-over-fallbacks.md (evidence base) and Armin Ronacher, "The Coming Loop" (2026), https://lucumr.pocoo.org/2026/6/23/the-coming-loop/. The flag is off by default; enabling it is a deliberate choice to keep a human as the final judge.
When mode is "pr-review":
gh pr diff <number> --name-onlypensive:unified-review on the diffMap findings to GitHub review:
gh api POST review withevent "APPROVE"
findings as inline comments
"REQUEST_CHANGES", blocking findings as inline comments with "must fix" prefix
Comment format per finding:
[egregore:{convention_id}] {message}
Convention: {convention_name}
Severity: {severity}Work items may have a quality_config field:
json{ "skip": ["unbloat"], "only": ["code-review", "update-docs"] }
skip: list of steps to skip (run all others)only: list of steps to run (skip all others)only takes precedenceNot all conventions run on every step. The routing table above defines which conventions apply to which step. The quality gate filters the loaded codex accordingly before running checks.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 12,936 | 7,751 | -40% | 1 | 1 | 0% | 2,577 | 2,194 | -15% | 0 | 0 | — |
case-02 | fail→fail | 9,752 | 5,287 | -46% | 1 | 1 | 0% | 1,788 | 1,910 | +7% | 0 | 0 | — |
case-03 | fail→fail | 14,528 | 7,282 | -50% | 1 | 1 | 0% | 2,598 | 2,108 | -19% | 0 | 0 | — |
case-04 | fail→pass | 8,431 | 2,097 | -75% | 1 | 1 | 0% | 1,356 | 1,888 | +39% | 0 | 0 | — |
case-05 | fail→pass | 2,468 | 3,689 | +49% | 1 | 1 | 0% | 331 | 2,111 | +538% | 0 | 0 | — |
case-06 | pass→fail | 3,252 | 13,675 | +321% | 1 | 1 | 0% | 452 | 3,508 | +676% | 0 | 0 | — |
case-07 | fail→pass | 11,553 | 11,780 | +2% | 1 | 1 | 0% | 1,813 | 3,726 | +106% | 0 | 0 | — |
case-08 | fail→pass | 6,875 | 2,914 | -58% | 1 | 1 | 0% | 1,129 | 2,107 | +87% | 0 | 0 | — |
case-21 | pass→pass | 8,220 | 5,247 | -36% | 1 | 1 | 0% | 1,282 | 2,499 | +95% | 0 | 0 | — |
case-09 | fail→pass | 7,893 | 5,681 | -28% | 1 | 1 | 0% | 1,177 | 2,533 | +115% | 0 | 0 | — |
case-10 | fail→pass | 4,284 | 2,497 | -42% | 1 | 1 | 0% | 744 | 2,019 | +171% | 0 | 0 | — |
case-11 | fail→pass | 9,134 | 2,157 | -76% | 1 | 1 | 0% | 1,383 | 1,968 | +42% | 0 | 0 | — |
case-12 | fail→pass | 6,042 | 2,530 | -58% | 1 | 1 | 0% | 931 | 1,992 | +114% | 0 | 0 | — |
case-13 | pass→pass | 4,424 | 2,424 | -45% | 1 | 1 | 0% | 663 | 1,970 | +197% | 0 | 0 | — |
case-14 | pass→pass | 3,095 | 1,912 | -38% | 1 | 1 | 0% | 469 | 1,869 | +299% | 0 | 0 | — |
case-15 | pass→pass | 11,789 | 5,519 | -53% | 1 | 1 | 0% | 1,856 | 2,558 | +38% | 0 | 0 | — |
case-16 | fail→pass | 12,338 | 5,009 | -59% | 1 | 1 | 0% | 1,772 | 2,418 | +36% | 0 | 0 | — |
case-17 | pass→pass | 9,810 | 2,934 | -70% | 1 | 1 | 0% | 1,411 | 2,051 | +45% | 0 | 0 | — |
case-18 | pass→fail | 5,774 | 1,600 | -72% | 1 | 1 | 0% | 894 | 1,837 | +105% | 0 | 0 | — |
case-19 | fail→pass | 8,564 | 1,563 | -82% | 1 | 1 | 0% | 1,315 | 1,803 | +37% | 0 | 0 | — |
case-20 | fail→fail | 3,032 | 1,831 | -40% | 1 | 1 | 0% | 526 | 1,865 | +255% | 0 | 0 | — |
case-22 | pass→pass | 6,986 | 1,350 | -81% | 1 | 1 | 0% | 1,154 | 1,740 | +51% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 19 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.