air CLAUDE.md

air CLAUDE.md is an instructions file for coding agents from VorobiovD/air. It costs 19,783 tokens per session, scanned A, original, MIT.

Repository instructions for air, a Claude Code plugin that reviews pull requests, with an optional cloud-based mode for running reviews in continuous integration.

In plain words
What is it for?
They guide the review commands, specialist review agents, wiki cleanup, Python-based managed reviews, and GitHub Actions setup.
Why use it?
They explain where the review logic lives and how to run or maintain it without guessing about the project structure.

Instructions file

Install

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.

agentmods
npx agentmods add instructions/vorobiovd/air/claude-md
Clone the repo
git clone --depth 1 https://github.com/VorobiovD/air

Wrote 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.

agentmods badge for air CLAUDE.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/vorobiovd/air/claude-md.svg)](https://agentmods.dev/instructions/vorobiovd/air/claude-md)
Your own site
<a href="https://agentmods.dev/instructions/vorobiovd/air/claude-md"><img src="https://agentmods.dev/badge/instructions/vorobiovd/air/claude-md.svg" alt="Measured on agentmods" height="20"></a>
Per session 19,783 This file is loaded in full into every session.
When invoked 19,783 The same file — it is already loaded in full.
Security scan A 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.19783 $0.19783
Opus 5 $0.09891 $0.09891
Sonnet 5 $0.03957 $0.03957
Haiku 4.5 $0.01978 $0.01978

Measured 5d ago against content hash 251478372674, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-05, from the pricing page.

Security

Grade A, and why

air CLAUDE.md scanned grade A with 1 finding 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 5d 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.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

- **CLI store-awareness** (`commands/review.md` + `learn.md`, `meta.py read-author`) — fixes two ways the CLI mis-handled a store-backed repo whose wiki is a deterministic render mirror (the repo-C 2026-06-27 incident).
CLAUDE.md · 168 lines

How it starts

The opening of the file, as written. The whole thing — 168 lines — stays where its author put it; the contents beside it link to each section on GitHub.

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

What This Is

air is a Claude Code plugin for automated PR code review, with an optional Managed Agent mode for CI automation.

The CLI plugin (plugins/air/) is markdown files and JSON metadata — no build system or dependencies. The Managed Agent (managed/) adds Python scripts for Anthropic's cloud API + a GitHub Actions workflow.

Two CLI commands: /air:review (13-step review pipeline) and /air:learn (wiki cleanup/regeneration). For CI: managed/review.py or the reusable GitHub Action.

Project Structure

plugins/air/
├── agents/              # 6 review specialists + 1 managed-mode coordinator (markdown prompts)
│   ├── code-reviewer.md
│   ├── security-auditor.md
│   ├── simplify.md
│   ├── git-history-reviewer.md
│   ├── ui-copy-reviewer.md    # UI/business-audience copy + static UX/a11y (conditional — UI-touching diffs)
│   ├── review-verifier.md
│   └── coordinator.md         # Managed-mode delegator — fans out specialists via callable_agents (not a reviewer)
├── commands/            # CLI command orchestration
│   ├── review.md              # Main pipeline — the core of the plugin
│   ├── review-self.md         # Self-review flow (--self mode)
│   ├── review-respond.md      # Respond flow (--respond mode)
│   ├── review-solo.md         # Solo flow (--solo mode — one Fable agent, all lenses, gate-capable)
│   └── learn.md               # Wiki maintenance
├── hooks/               # Pre-commit drift-check hook (v1.6.0+)
│   ├── hooks.json             # PreToolUse hook registration
│   ├── pre-commit-drift.py    # Wrapper: narrows to `git commit`, routes custom/built-in
│   └── builtin-checks.sh      # Zero-config auto-detection (version mirror + badge)
├── lib/                 # Shared Python helpers (stdlib-only, called by CLI + managed)
│   ├── meta.py                # /air:learn trigger counter (wiki file or memory-store backend + find-store)
│   ├── wiki_git.py            # Clone + commit-meta-with-retry (legacy wiki backend)
│   ├── pattern_lifecycle.py   # Deterministic author-pattern strengthen/clean/decline/archive ops
│   ├── pr_conversation.py     # Merge GitHub PR comments/reviews into <pr-conversation> agent context
│   ├── agent_loop.py          # Self-hosted Messages-API tool-use loop for headless mode (5m cache default, thinking round-trip)
│   ├── tool_exec.py           # Read-only sandbox for headless agents (path-jailed Read/Grep/Glob + fixed-verb git, shell=False)
│   ├── solo_prompt.py         # THE solo-prompt assembly (CLI --solo runs it; managed setup.py imports it)
│   ├── agent_md.py            # THE agents/*.md frontmatter parser — single source for solo_prompt / setup / headless._persona_model
│   ├── diff_hygiene.py        # THE diff stub-generated/vendored + size-cap pass — single source: managed github_client fetchers re-export it; CLI review.md pipes its diff saves through it
│   ├── wiki_cap.py            # THE deterministic wiki bloat-cap (per-file byte ceilings; managed learn/render + CLI learn all call it)
│   ├── env.py                 # THE tolerant AIR_* env parsing (env_int/float/bool — crash-safe on a typo'd value) + report_env() startup drift report
│   └── verdict.py             # THE review-gating contract (shared: CLI Step 12 runs it via --decide; managed imports it)
└── .claude-plugin/
    └── plugin.json      # Plugin metadata (name, version, author)

.air-checks.sh           # Opt-in per-repo drift checks (consumed by the hook above)

.claude-plugin/
└── marketplace.json     # Marketplace distribution definition

managed/                          # Managed Agent (CI automation)
├── api.py                        # Shared API helpers
├── setup.py                      # Creates/updates agents + environment via API
├── review.py                     # Client-side driver: orchestrates the review run (launches coordinator, posts)
├── headless.py                   # `messages-api` mode driver: self-hosted specialist+verifier loop (full lens set), reuses verdict/prompts/github_client/review helpers
├── github_client.py              # GitHub REST: fetchers, pagination, comment/verdict POSTs
├── verdict.py                    # Thin shim re-exporting plugins/air/lib/verdict.py (the shared gating contract)
├── session_runner.py             # Session lifecycle: run_session, REST drain, billing retry, SIGTERM cleanup
├── prompts.py                    # Prompt builders: PR context block + verifier-task templates
├── learn.py                      # Triggers wiki/store maintenance sessions (single-agent, managed)
├── learn_headless.py             # MA-independent learn: client-side map-reduce store curation (no managed session)
├── memory_store.py               # Per-repo pattern memory store: discovery, reads, sha256-preconditioned writes
├── pattern_writer.py             # Applies pattern_lifecycle ops to the store after each review
├── migrate_wiki_to_store.py      # One-shot wiki → store migration (per-author split, --dry-run)
├── migrate_workspace_stores.py   # One-shot store → store copy across workspaces (sha256-verified)
├── render_store_to_wiki.py       # Deterministic store→wiki mirror render (throttled per-review + on learn)
├── salvage_review.py             # Drain a finished orphaned session and post its review ($0 — e.g. after a job cancel)
├── test-session.py               # Quick 9-test verification script
├── prompts/learn-orchestrator.md # System prompt for cloud learn agent
│                                 # (review orchestrator.md deleted in v1.7.0 — review.py orchestrates client-side)
├── requirements.txt              # Python dependencies
└── README.md

.github/workflows/
├── managed-review.yml            # Reusable GitHub Action (teams reference this)
├── air-review.yml                # Dogfood caller for this repo (PR + workflow_dispatch)
├── release-please.yml            # Automated tag + GitHub Release on version bumps
└── drift-checks.yml              # Runs .air-checks.sh on every PR (closes the local-hook-only gap)

Read the full file on GitHub · 168 lines

Changes

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.

  1. 5d ago First seen · 168 lines · 19,783 tokens per session scan A 251478372674

Subscribe to this mod's changes

air CLAUDE.md is an instructions file published in the GitHub repository VorobiovD/air (5 stars, last pushed 10d ago), licensed MIT. It adds 19,783 tokens to every session, about $0.0989 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.