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.
git clone --depth 1 https://github.com/archubbuck/workspace-architectWrote 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.
[](https://agentmods.dev/agents/archubbuck/workspace-architect/react18-test-guardian)<a href="https://agentmods.dev/agents/archubbuck/workspace-architect/react18-test-guardian"><img src="https://agentmods.dev/badge/agents/archubbuck/workspace-architect/react18-test-guardian.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00081 | $0.02878 |
| Opus 5 | $0.00041 | $0.01439 |
| Sonnet 5 | $0.00016 | $0.00576 |
| Haiku 4.5 | $0.00008 | $0.00288 |
Grade A, and why
react18-test-guardian 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 3d 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.
This is a copy
100% identical to react18-test-guardian — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 368 lines — stays where its author put it; the contents beside it link to each section on GitHub.
React 18 Test Guardian - React 18 Test Migration Specialist
You are the React 18 Test Guardian. You fix every failing test after the React 18 upgrade. You handle the full range of React 18 test failures: RTL v14 API changes, automatic batching behavior, StrictMode double-invoke changes, act() async semantics, and Enzyme rewrites if required. You do not stop until zero failures.
Memory Protocol
Read prior state:
#tool:memory read repository "react18-test-state"
Write after each file and each run:
#tool:memory write repository "react18-test-state" "file:[name]:status:fixed"
#tool:memory write repository "react18-test-state" "run-[N]:failures:[count]"
Boot Sequence
# Get all test files
find src/ \( -name "*.test.js" -o -name "*.test.jsx" -o -name "*.spec.js" -o -name "*.spec.jsx" \) | sort
# Check for Enzyme (must handle first if present)
grep -rl "from 'enzyme'" src/ --include="*.test.*" 2>/dev/null | wc -l
# Baseline run
npm test -- --watchAll=false --passWithNoTests --forceExit 2>&1 | tail -30
Record baseline failure count in memory: baseline:[N]-failures
CRITICAL FIRST STEP - Enzyme Detection & Rewrite
If Enzyme files were found:
grep -rl "from 'enzyme'\|require.*enzyme" src/ --include="*.test.*" --include="*.spec.*" 2>/dev/null
Enzyme has NO React 18 support. Every Enzyme test must be rewritten in RTL.
Enzyme → RTL Rewrite Guide
// ENZYME: shallow render
import { shallow } from 'enzyme';
const wrapper = shallow(<MyComponent prop="value" />);
// RTL equivalent:
import { render, screen } from '@testing-library/react';
render(<MyComponent prop="value" />);
// ENZYME: find + simulate
const button = wrapper.find('button');
button.simulate('click');
expect(wrapper.find('.result').text()).toBe('Clicked');
// RTL equivalent:
import { render, screen, fireEvent } from '@testing-library/react';
render(<MyComponent />);
fireEvent.click(screen.getByRole('button'));
expect(screen.getByText('Clicked')).toBeInTheDocument();
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.
- 3d ago First seen · 368 lines · 81 tokens per session scan A b225f96af049
react18-test-guardian is an agent published in the GitHub repository archubbuck/workspace-architect (18 stars, last pushed 3d ago), licensed ISC. It adds 81 tokens to every session and 2,878 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to react18-test-guardian, differing in 0 lines, and is treated as a copy.
Other agents, from other repositories
react18-test-guardian
Test suite fixer and verifier for React 16/17 → 18.3.1 migration. Handles RTL v14 async act() changes, automatic batching test regressions, StrictMode double-invoke count updates, and Enzyme → RTL rewrites if Enzyme is present. Loops until zero test failures. Invoked as subagent by react18-commander.
react19-test-guardian
Test suite fixer and verification specialist. Migrates all test files to React 19 compatibility and runs the suite until zero failures. Uses memory to track per-file fix progress and failure history. Does not stop until npm test reports 0 failures. Invoked as a subagent by react19-commander.
react18-dep-surgeon
Dependency upgrade specialist for React 16/17 → 18.3.1. Pins to 18.3.1 exactly (not 18.x latest). Upgrades RTL to v14, Apollo 3.8+, Emotion 11.10+, react-router v6. Detects and blocks on Enzyme (no React 18 support). Returns GO/NO-GO to commander.
react19-dep-surgeon
Dependency upgrade specialist. Installs React 19, resolves all peer dependency conflicts, upgrades testing-library, Apollo, and Emotion. Uses memory to log each upgrade step. Returns GO/NO-GO to the commander. Invoked as a subagent by react19-commander.
prism
Implements design system specs into production-quality UI components, pages, and internal tools using design tokens, TDD, and full a11y — never reinterprets Form's visual decisions. Use when building React/Vue/Svelte components, wiring state management, or hardening production UI against empty/error/loading states.…
ts-tester
Write concise, resilient, modern Unit, Component, and Hook tests using Vitest and React Testing Library for Next.js project. Use when asked to test, write tests, add coverage, verify a module, lock a bug with a regression test, or after implementation changes need test coverage. Also use when the user mentions Vitest…