Agent skill · Testing & QA

blue-team

Use when the user has concrete failing cases in code or a guardrail/classifier/filter/prompt/API they own — a red-team failure catalogue OR a CI/CD test-failure report (failing pytest/JUnit tests) — and wants the target patched until those failures are closed without breaking what already works. It points straight at the failed cases (normalize any source with tools/ingest.py), fixes one root-cause class per iteration, and re-checks with tools/verify.py — oracle mode against a red-team oracle, or tests mode against the test suite — keeping a patch only if it closes a class while nothing that p

gaashergithub.com/gaasherGitHub ↗
claude-codeships scriptsMIT
Install
npx skills add gaasher/Agent-Loop-Skills --skill blue-team --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 5
SKILL.md size: 14 KB
Bundled scripts: yes
Version: 0.1.0
Requires: Requires Python 3.9+; git + the gh CLI for the pull-request handoff (degrades to a patch series).
Path: loops/blue-team/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 146
Language: Python

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# Blue Team A **defensive fixer** loop — the inverse of `red-team`. The artifact is the **target, now writable**; the feedback signal is two-part, like `optimize-loop`: a **gate that must hold** (nothing that passed before regresses) and a **metric that must drop** (the count of open failure classes, toward zero). You point it at a set of **concrete failed cases** and fix them one root-cause class at a time. Each iteration you patch one class, then run `tools/verify.py`, and keep the patch only if it closes the class with no regression, else revert. You loop until every class is closed (**dry**) or the budget runs out, then hand the patch set off as a pull request. This is the *fix* half of a find→fix setup (see [Pairing](#pairing)). The failed cases come from a real source; `tools/ingest.py` normalizes any of them into one catalogue: - **`oracle` mode** — a `red-team` `failures.jsonl`: each case is an input where the target's verdict disagrees with a ground-truth **oracle**. A case is closed when target and oracle now agree; a regression is a benign `<holdout>` input that newly disagrees (most often a new over-block). - **`tests` mode** — a **CI/CD test-failure report** (`pytest -

What's inside
Steps it walks through
  1. When to use
  2. Setup
  3. The loop
  4. Ledger
  5. Constraints
  6. Handoff: the pull request
  7. Pairing
Ships with 4 files
  • examples/run.example.yaml
  • examples/tests.run.yaml
  • tools/ingest.py
  • tools/verify.py
More from Agent-Loop-Skills
All skills →
About this skill
What does the blue-team skill do?

Use when the user has concrete failing cases in code or a guardrail/classifier/filter/prompt/API they own — a red-team failure catalogue OR a CI/CD test-failure report (failing pytest/JUnit tests) — and wants the target patched until those failures are closed without breaking what already works. It points straight at the failed cases (normalize any source with tools/ingest.py), fixes one root-cause class per iteration, and re-checks with tools/verify.py — oracle mode against a red-team oracle, or tests mode against the test suite — keeping a patch only if it closes a class while nothing that p

How do I install it?

Run `npx skills add gaasher/Agent-Loop-Skills --skill blue-team --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From gaasher/Agent-Loop-Skills, a repository with 146 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going