Use when editing web/static/style.css in the JCStream project. Covers the light-theme token system (--bg/--fg/--accent), the 10-tier .tier-F1…MM ladder palette, .ladder-* cells, body.is-table table-mode rules, content-visibility, mobile breakpoint at 720px, and the print at-rule. Trigger phrases: "restyle the cards", "fix the tier colors", "make the hero bigger", "add a CSS rule", "edit the stylesheet", "tweak the lightbox", "fix the table view", "recolor the F3 chip", "tune the print layout".
Use when auditing JCStream for accessibility — WCAG AA color contrast on the light theme, ARIA correctness (aria-current/aria-pressed/aria-modal/role=…), keyboard navigation, focus ring, tab order, alt text, screen-reader-only content, reduced-motion. The new light theme retired the dark theme's hand-tuned contrast tokens, so contrast must be verified empirically rather than assumed from tokens. Trigger phrases: "accessibility audit", "a11y", "a11y review", "WCAG check", "ARIA", "ARIA check", "screen reader", "contrast issue", "color contrast", "focus ring", "keyboard nav", "alt text".
Use when adding or modifying Python helper functions in web/build.py, web/classify.py, or web/shape.py that compute values for Jinja templates in the JCStream project. Covers the env.globals registration pattern (in web/build.py), the Inmate/Snapshot models, the _DEGREE_RE / _CHAPTER_LABEL / _OFFENSE_CATEGORY maps (now in web/classify.py), and the snapshot-shape helpers (now in web/shape.py). Trigger phrases: "add a helper for X", "compute Y per inmate", "expose Z to templates", "register a Jinja global", "compute bond/tier/category for inmate", "categorize this ORC code".
Use when reviewing the JCStream presentation layer — Jinja templates in `web/templates/*.html`, the RSS feed `web/templates/feed.xml`, the XSLT stylesheet `web/static/feed.xsl`, and the no-required-JS enhancement script `web/static/main.js`. Covers XSS-safe escaping (every `{{ }}` and `|safe`), inline JSON-LD shape, RSS validity, semantic HTML structure, XSLT correctness, progressive-enhancement contract (lightbox / filter / tier-tooltip degrade without JS), and third-party-script hygiene (none allowed per FCRA). **Read-only** — produces a finding report and hands fixes off to `jcstream-template-author` / `jcstream-a11y-auditor` / `jcstream-legal-copy-author`. Trigger phrases: "review the templates", "review inmate.html", "review the homepage", "check the RSS feed", "review the JSON-LD", "schema.org review", "review main.js", "review the filter JS", "review the lightbox", "audit the feed.xsl", "template code review", "XSS check", "Jinja escape audit".
Use when conducting a full code review of a JCStream PR, branch, or the whole repo. Orchestrator that fans out to the four language / domain reviewers in parallel — `jcstream-python-reviewer` (55.6% of code), `jcstream-template-reviewer` (29.3%), `jcstream-css-reviewer` (15.1%), `jcstream-security-reviewer` (cross-cutting compliance) — collects their findings, dedupes by file+line, ranks by severity, and emits a single PR-comment-ready consolidated review. **Read-only** — produces a single merged report; the underlying reviewers each produce their own per-domain reports as the trace. Trigger phrases: "code review", "review the whole project", "PR review", "review my changes", "review this branch", "review the diff", "full audit", "review everything", "comprehensive code review", "review PR".
Use when reviewing `web/static/style.css` for code-quality issues distinct from rendered accessibility. Covers dead rules, cascade conflicts, duplicate / self-overriding declarations, 10-tier ladder consistency (`.tier-F1`–`.tier-MM`, `.ladder-F1`–`.ladder-MM`), `body.is-table` table-mode parity, mobile breakpoint hand-offs (720px is the primary, 1024px / 1080px / 540px are secondary), content-visibility correctness, print at-rule completeness, unused CSS custom properties, hex duplication vs token use, and reduced-motion scope. **Read-only** — produces a finding report and hands fixes off to `jcstream-stylesheet-author` for code edits or `jcstream-a11y-auditor` for rendered-contrast / ARIA-affecting findings. Trigger phrases: "review the stylesheet", "audit style.css", "check the cascade", "review the print rules", "review the responsive breakpoints", "CSS code review", "find dead CSS", "find duplicate selectors", "review the tier ladder palette".
Use when reviewing Python code in the JCStream project — `scraper/*.py`, `web/build.py`, `web/classify.py`, `web/shape.py`, `tests/*.py`. Covers type hints, error handling at boundaries only (per CLAUDE.md), regex anchoring (post-`_DEGREE_RE` regression class), security (subprocess, requests `verify=`, eval/exec), dependency footprint, concurrency / thread safety in the sweep loop, stdlib idioms, dead code, and the project's no-print logging convention. **Read-only** — produces a finding report, hands fixes off to the relevant author skill. Trigger phrases: "review the python code", "review the scraper", "review web/build.py", "review classify.py", "audit the test suite", "code review the python", "lint check python", "type check the build helpers", "regex review", "thread-safety review", "python security review".
Use when modifying or extending data pullers in scraper/ — HCSO inmate roster (sweep.py), Cincinnati Open Data feeds (cfs.py, cfs_pdi.py, shootings.py, open_data_feeds.py), the courtclerk URL helpers, PRA email loop. Covers rate-limit budget, sweep health guards (sweep_guards.py: 50% floor, 10% error ceiling, detail watchdog, photo prune), atomic write to data/current.json, and the 30-min cron in .github/workflows/sweep.yml. Trigger phrases: "add a new data feed", "add an Open Data feed", "Socrata pull", "fix the HCSO scraper", "fix the sweep cron", "tune the sweep guard", "tune detail watchdog", "raise/lower roster guard", "PRA email loop", "courtclerk link helper", "photo prune skipped", "rate-limit", "sweep wall-clock".