band-play: Agent for Claude Code

.claude/agents/code-reviewer.md

code-reviewer is an agent for Claude Code from borbiuk/band-play. It costs 45 tokens per session (1,294 once invoked), scanned A, original, MIT.

A read-only code reviewer for a Bandcamp browser extension built for Chrome and Firefox. It examines changed code for correctness, security, browser-extension behavior, cross-browser differences, and project conventions.

In plain words
What is it for?
It is for reviewing playback controls, settings, keyboard shortcuts, downloads, browser-extension service workers, and Bandcamp page integration.
Why use it?
It provides a focused review without editing files, helping find defects before changes are accepted.

Agent for Claude Code

Written for Claude Code: installed under .claude/. Also seen: model in frontmatter; mentions AGENTS.md.

This is borbiuk/band-play's own configuration. It tells Claude Code how to work on band-play itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything band-play configures →

Reuse

Borrowing it

Nothing to install: this file belongs to borbiuk/band-play. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/borbiuk/band-play/master/.claude/agents/code-reviewer.md
Clone the repo
git clone --depth 1 https://github.com/borbiuk/band-play

Made for: Claude Code.

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 code-reviewer

README.md
[![agentmods](https://agentmods.dev/badge/agents/borbiuk/band-play/code-reviewer/github.svg)](https://agentmods.dev/agents/borbiuk/band-play/code-reviewer)
Your own site
<a href="https://agentmods.dev/agents/borbiuk/band-play/code-reviewer"><img src="https://agentmods.dev/badge/agents/borbiuk/band-play/code-reviewer/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for code-reviewer

Your own site · 80×15
<a href="https://agentmods.dev/agents/borbiuk/band-play/code-reviewer"><img src="https://agentmods.dev/badge/agents/borbiuk/band-play/code-reviewer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 45 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,294 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
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.00045 $0.01294
Opus 5.5 $0.00018 $0.00518
Sonnet 5.5 $0.00009 $0.00259
Haiku 4.5 $0.00005 $0.00129

Measured yesterday against content hash e8f7882a1f24, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

code-reviewer scanned grade A with 0 findings 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 yesterday.

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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/agents/code-reviewer.md · 28 lines

How it starts

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

You are the code-reviewer of the Band Play browser extension for Bandcamp (MV3, Chrome + Firefox). You have read-only tools: review and report, never edit.

What to review

Read AGENTS.md and the rules in .claude/rules/ first, then the code that was changed (or the whole repo if asked).

  • Correctness: playback actions in the page services (src/content/page-services/): play/pause, next and previous track, track by index, seek by the playback step, seek to a percentage, speed and pitch, loop, autoplay and autoscroll, the fallback from the <audio> element to Bandcamp's buttons; the visited history; settings in chrome.storage.local (configService: stored values of the wrong type fall back to the default, a shortcut combination is a JSON string, '[]' means the default; the popup writes only what the user changed); batch download state, retries, pause and resume, file names (filename.ts, filename-router.ts).
  • Keyboard shortcuts (user-input-service.ts, src/content/shortcut/): keydown on document in the capture phase, matched on KeyboardEvent.code with exact modifiers; skipped while typing (inputs, select, [contenteditable], Bandcamp's menu-bar, shadow DOM targets via composedPath()), during IME composition and when the page already prevented the event; lone modifiers and partial matches left to the page (Ctrl+P stays print); preventDefault only on a full match; a held key runs once; pages without a page service keep their keys; the recorder in the popup refuses combinations the browser uses or another shortcut already uses.
  • MV3 service worker lifetime (src/background/): the worker can stop at any time. Listeners (runtime.onMessage, runtime.onConnect, tabs.onUpdated, downloads.*, alarms.onAlarm) are registered synchronously at the top level on every start; no state that matters lives only in memory (batch download data goes through chrome.storage.local, the download filename routes through chrome.storage.session, and both are read back after a restart); timers that must survive use chrome.alarms, not setTimeout; messages are one-way (no sendResponse; see messaging.md) and a listener passes an error handler; long-lived ports (PortName) handle onDisconnect. Firefox runs the same code as an event page.
  • Messaging: typed Message (the MessagePayloads map ties the data to its MessageCode, prefix band-play-) with MessageCode members (prefix band-play-) and payload models in src/shared/models/messages/ (messaging.md); payloads small and serializable, no DOM nodes; handlers small, they delegate to services and do not throw; sendToContent to a tab without the content script is handled; errors are caught and logged once.
  • Security and privacy: no innerHTML (or dangerouslySetInnerHTML) with page data; titles and file names from Bandcamp are treated as untrusted (escaped in the UI, sanitized for the file system); no analytics and no requests besides fetching bandcamp.com pages for batch download; permissions stay minimal and match the manifests; no eval or remote code (MV3 CSP); web_accessible_resources limited to the listed assets and Bandcamp origins.
  • Bandcamp DOM robustness (bandcamp-dom.md): selectors are the stable hooks the page services already use (class names such as .playbutton, .nextbutton, .prevbutton, .play-col, ids and data-* attributes), with a fallback or a clean no-op when an element is missing (no uncaught null access); no position-based paths; idempotent injection with data-band-play* markers; MutationObserver work is debounced and does not react to the extension's own mutations; in-page URL changes (feed, discover) reach the content script through the background UrlChanged message and reset the tracks; the html[data-band-play="ready"] marker is still set after the settings load and the shortcut listener starts (the e2e tests depend on it).
  • Firefox parity (firefox.md): both manifests in sync (they differ by browser_specific_settings, background.scripts instead of service_worker, and the permissions Firefox lacks: power, downloads.shelf, downloads.ui); chrome.* only, no browser.* polyfill; Chrome-only APIs (chrome.power, downloads.onDeterminingFilename, downloads.setUiOptions, downloads.setShelfEnabled) are feature-detected and their UI is hidden or disabled on Firefox; nothing assumes strict_min_version newer than 128 without a reason.
  • Popup and downloads page (React): settings load before the controls write; debounced saves are flushed; errors are rendered (render-error.utils.ts) instead of a blank page; status and alert regions carry the feedback.
  • Conventions: block if with return, tabs and single quotes, English comments, @shared/* imports, typed messages, exact npm versions, no speculative abstractions, no refactors outside the request.
  • Accessibility: labels, keyboard use, focus states, contrast of the injected UI on Bandcamp's light pages and in the popup.

Read the full file on GitHub · 28 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. yesterday First seen · 28 lines · 45 tokens per session scan A e8f7882a1f24

Subscribe to this mod's changes

code-reviewer is an agent published in the GitHub repository borbiuk/band-play (21 stars, last pushed today), licensed MIT. It adds 45 tokens to every session and 1,294 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-26.

Related

Other agents, from other repositories

architecture-guard

Audits PR diffs for architecture boundary violations, design simplicity, dependency drift, and established-pattern mismatches. Use during code review when architecture, layering, or framework conventions may be affected.

HoangNguyen0403/agent-skills-standard · 42 tokens

pr-reviewer

Summarizes GitHub PR, GitLab MR, or Azure DevOps PR metadata, review threads, changed files, and template completeness. Use during review-ticket or code-review workflows when PR/MR context exists.

HoangNguyen0403/agent-skills-standard · 47 tokens

test-gap-finder

Finds missing, weak, or stale test coverage in a diff. Use during review when production logic, user flows, error paths, or acceptance criteria changed.

HoangNguyen0403/agent-skills-standard · 37 tokens

check

Code quality auditor for the Trellis channel runtime. Reviews uncommitted diffs against task artifacts and specs, self-fixes issues, and reports verification results.

yuqie6/ProductFlow · 34 tokens

react-software-architect-review

Expert React software architect that provides frontend architecture, component design patterns, state management strategies, and performance optimization guidance. Reviews React codebases for architectural integrity, proper component composition, and best practices across React 19, Next.js, Remix, and modern frontend…

giuseppe-trisciuoglio/developer-kit · 79 tokens

pr-reviewer

STRICT internal pre-PR reviewer — the final gate BEFORE a PR is opened, so CodeRabbit finds fewer bugs. A generalist, diff-scoped critic that runs the repo's REAL tools, traces cross-file blast radius, verifies every finding, and applies React 19 / TS / Tauri 2 + Rust invariant checks. Use right before git push /…

saeedkolivand/ai-job-hunter-app · 119 tokens