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 skills/gohypergiant/agent-skills/accelint-react-testingnpx skills add gohypergiant/agent-skills --skill accelint-react-testinggit clone --depth 1 https://github.com/gohypergiant/agent-skillsWrote 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/skills/gohypergiant/agent-skills/accelint-react-testing)<a href="https://agentmods.dev/skills/gohypergiant/agent-skills/accelint-react-testing"><img src="https://agentmods.dev/badge/skills/gohypergiant/agent-skills/accelint-react-testing.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.00124 | $0.03218 |
| Opus 5 | $0.00062 | $0.01609 |
| Sonnet 5 | $0.00025 | $0.00644 |
| Haiku 4.5 | $0.00012 | $0.00322 |
Grade A, and why
accelint-react-testing 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 6d 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 — 172 lines — stays where its author put it; the contents beside it link to each section on GitHub.
React Testing Best Practices
Expert guidance for writing maintainable, user-centric React component tests with Testing Library. Focused on query selection, accessibility-first testing, and avoiding implementation details.
NEVER Do When Writing React Tests
- NEVER query by test IDs before trying accessible queries - Test IDs bypass accessibility verification: a button with
data-testid="submit"but no accessible name works in tests but fails for screen reader users. When tests pass with test IDs, you ship inaccessible UIs. Query hierarchy:getByRole>getByLabelText>getByText>getByTestId. Each step down this list means less confidence your UI is usable. - NEVER use
fireEventfor user interactions whenuserEventis available -fireEventdispatches single DOM events, missing the event sequence real users trigger:fireEvent.click()fires one click event, but real users trigger focus → mousedown → mouseup → click. Components that work with fireEvent break in production when users interact normally.userEvent.click()simulates the full interaction sequence, catching bugs fireEvent misses. - NEVER test implementation details instead of user behavior - Tests that verify "state variable X equals Y" or "function Z was called" create false failures: you refactor from useState to useReducer, all tests fail, yet the UI works identically. Testing implementation details punishes refactoring and provides zero confidence the user experience works. Test what users see and do (rendered output, interaction results), not how your component achieves it internally.
- NEVER query from
containeror use destructured queries after initial render -const { getByText } = render(<Component />)creates stale queries that miss updates: after state changes, destructured queries search the initial DOM snapshot, missing newly rendered elements. This causes "element not found" errors for elements that are actually present. Always usescreen.getByText()which automatically queries the current DOM state. Using screen consistently also makes tests more maintainable - adding a new query doesn't require updating the destructuring. - NEVER add aria-label or role attributes solely for tests - If you're adding
aria-label="submit-button"orrole="button"just so tests can find elements, you're working backwards. Tests should verify the component is already accessible, not make it accessible for tests. Adding test-only ARIA pollutes production code and masks real accessibility problems. Fix the component's semantic HTML and existing ARIA first. - NEVER snapshot entire component trees without specific assertions - Massive snapshots with 500+ lines break on any change (updated classname, new prop, reordered elements), forcing reviewers to approve diffs they can't meaningfully evaluate. When test failures require "just update the snapshot" without understanding why, the test has zero value. Snapshot specific critical structures (error messages, data tables) with targeted assertions for everything else.
- NEVER use
waitForfor actions that return promises -waitFor(() => expect(element).toBeInTheDocument())polls repeatedly until timeout when a promise-basedfindByquery solves it in one shot:await screen.findByText('loaded')waits for the element to appear without polling. Reserve waitFor for assertions that can't use findBy (checking element disappears, waiting for attribute changes). - NEVER perform side effects inside waitFor callback -
waitFor(() => { fireEvent.click(button); expect(text).toBeInTheDocument(); })runs the click multiple times as waitFor retries, causing unpredictable behavior. waitFor is for waiting on assertions, not triggering actions. Perform all actions outside waitFor, then use waitFor only for the assertion:fireEvent.click(button); await waitFor(() => expect(text).toBeInTheDocument());or better yet,await userEvent.click(button); expect(await screen.findByText(text)).toBeInTheDocument();. - NEVER create custom renders without documenting provider requirements - A custom
renderWithReduxfunction with undocumented required store shape breaks for every developer: they callrender(<Component />)instead ofrenderWithRedux(), tests fail with cryptic "Cannot read property of undefined", wasting 15 minutes debugging. Centralize provider setup in test utils with TypeScript types that enforce correct usage, or document required wrappers prominently. - NEVER mix queries from different Testing Library imports - Importing both
@testing-library/reactrender and@testing-library/domqueries creates confusion:screenfrom react package doesn't work withgetByRolefrom dom package, causing "screen.getByRole is not a function" errors. Import all queries from@testing-library/reactfor React components - it re-exports everything from dom with React-specific enhancements.
What ships with it
14 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- AGENTS.md 3.2 KB
- assets/custom-render-template.tsx 4.0 KB
- assets/output-report-template.md 10 KB
- README.md 3.4 KB
- references/accessibility-queries.md 8.5 KB
- references/anti-patterns.md 12 KB
- references/async-testing.md 7.8 KB
- references/custom-render.md 9.2 KB
- references/query-priority.md 7.0 KB
- references/query-variants.md 10 KB
- references/user-events.md 10 KB
- scripts/check-query-priority.sh 2.4 KB runs code
- scripts/detect-wrapper-queries.sh 2.9 KB runs code
- scripts/find-fire-event.sh 2.6 KB runs code
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.
- 6d ago First seen · 172 lines · 124 tokens per session scan A 9744f94ea0d0
accelint-react-testing is a skill published in the GitHub repository gohypergiant/agent-skills (22 stars, last pushed yesterday), licensed Apache-2.0. It adds 124 tokens to every session and 3,218 once invoked, about $0.0006 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 skills, from other repositories
react-native-testing
Write tests using React Native Testing Library (RNTL) v13 and v14 (@testing-library/react-native). Use when writing, reviewing, or fixing React Native component tests. Covers: render, screen, queries (getBy/getAllBy/queryBy/findBy), Jest matchers, userEvent, fireEvent, waitFor, and async patterns. Supports v13 (React…
react-testing
Write and review React/TypeScript tests for Sentry's frontend using Jest and React Testing Library. Use when adding or editing tests in static/ (.spec.tsx), writing component/hook tests, mocking API responses with MockApiClient, testing routing or network requests, or when asked to "write a frontend test", "add a…
frontend-testing
Generate Vitest + React Testing Library tests for frontend components, hooks, and utilities. Triggers on testing, spec files, coverage, Vitest, RTL, unit tests, integration tests, or write/review test requests.
authoring-data-quality-checks
Adds and runs data quality checks (dbt-test style assertions) on a project's warehouse tables and saved-query views: not-null, uniqueness, accepted values, referential integrity, row-count bounds, freshness, and custom HogQL. Use when asked to test a model, validate a view, check for nulls or duplicates, add data…
writing-unit-tests
Guidelines for writing unit tests in the Hex1b TUI library. Use when creating new tests for widgets, nodes, or terminal functionality.
authoring-benchmarks
Design, implement, run, debug, and interpret browser performance benchmarks for Elements components and utilities. Use whenever the user asks to benchmark or performance-test runtime code, create or update a .test.bench.ts file, compare benchmark results, investigate a browser performance regression, understand Vitest…