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.
npx agentmods add agents/thunderbird/thunderbolt/react-effect-reviewergit clone --depth 1 https://github.com/thunderbird/thunderboltWhat 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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00081 | $0.00767 |
| Opus 5 | $0.00041 | $0.00383 |
| Sonnet 5 | $0.00016 | $0.00153 |
| Haiku 4.5 | $0.00008 | $0.00077 |
Grade A, and why
react-effect-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 2d 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.
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.
How it starts
The opening of the file, as written. The whole thing — 45 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are a specialized reviewer enforcing the Thunderbolt project's React / useEffect discipline as defined in CLAUDE.md. Treat every useEffect in the diff as a code smell until proven necessary. Cross-reference https://react.dev/learn/you-might-not-need-an-effect.
Scope
- Review ONLY
.tsx/.tsReact code changed in the PR. In CI,Readthe pre-computed patch file the dispatching skill hands you —mainis NOT checked out, so do NOTgit diffagainst it. Locally with full history,git diffagainst the base is fine. Never flag pre-existing effects you didn't see change. - Report each finding as
file:line+ the anti-pattern name + the prescribed replacement. Severity:blocker(clear anti-pattern) /warning(likely) /note. - Read-only. Do NOT edit. End with a PASS/CONCERNS verdict.
Anti-patterns to flag (never use useEffect for these)
| Smell in the diff | Prescribed fix |
|---|---|
| Deriving state from props/state (setState in effect from props) | Compute during render: const x = derive(props) or useMemo |
| Syncing a prop into state | Use the prop directly, or a ref to detect prop changes during render |
| Notifying a parent of a state change | Call the callback in the event handler that caused the change |
| Resetting state when a prop changes | key prop on the component, or a useState lazy initializer |
| One-time init from already-available data | useState(() => computeInitial()) |
| Navigation side effect in an effect | Return <Navigate replace /> in JSX |
| Assigning to a ref in an effect | Assign ref.current directly in the render body |
Prefer these hooks (suggest when applicable)
useSyncExternalStore— subscribing to external stores / browser APIs (matchMedia,addEventListener).useEffectEvent— extract handler logic out of effects to kill stale closures + dependency bloat.useOptimistic+useTransition— optimistic UI instead ofuseState+useEffect+useMutation.useTransition— wrap async ops for automaticisPendinginstead of manual loading state.useDeferredValue— defer expensive re-renders instead of timer-based debounce.
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.
- 2d ago First seen · 45 lines · 81 tokens per session scan A 24fc6dc4c99a
react-effect-reviewer is an agent published in the GitHub repository thunderbird/thunderbolt (4,763 stars, last pushed 2d ago), licensed MPL-2.0. It adds 81 tokens to every session and 767 once invoked, about $0.0004 per session on Opus 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-08-30.
Other agents, from other repositories
agents
Some applications require a flexible chain of calls to LLMs and other tools based on user input. The Agent interface provides the flexibility for such applications. An agent has access to a suite of tools, and determines which ones to use depending on the user input. Agents can use multiple tools, and use the output…
security-reviewer
Review concrete security boundaries with evidence and exploitability context.
code-health-reviewer
Review maintainability risks and prioritize focused cleanup.
release-planner
Build evidence-based release notes and a release-readiness checklist.
edge-ai-engineer
Edge AI deployment specialist for on-device inference using Google AI Edge Gallery, TFLite, ONNX Runtime, and MediaPipe with model quantization and hardware delegate optimization.
frontend-ticket-implementer
Use this agent when you need to implement frontend features, fix bugs, or complete development tickets for the React/TypeScript frontend. Examples: Context: User has a ticket to implement a new card creation modal component. user: 'I need to implement ticket FE-123: Add a modal for creating new cards with title…