Borrowing it
Nothing to install: this file belongs to aesoper101/image-gen-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/aesoper101/image-gen-mcp/main/.claude/skills/rstest-best-practices/SKILL.mdgit clone --depth 1 https://github.com/aesoper101/image-gen-mcpWrote 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/aesoper101/image-gen-mcp/rstest-best-practices)<a href="https://agentmods.dev/skills/aesoper101/image-gen-mcp/rstest-best-practices"><img src="https://agentmods.dev/badge/skills/aesoper101/image-gen-mcp/rstest-best-practices/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.
<a href="https://agentmods.dev/skills/aesoper101/image-gen-mcp/rstest-best-practices"><img src="https://agentmods.dev/badge/skills/aesoper101/image-gen-mcp/rstest-best-practices.svg" alt="Reviewed on agentmods" width="80" 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.00054 | $0.01856 |
| Opus 5 | $0.00027 | $0.00928 |
| Sonnet 5 | $0.00011 | $0.00371 |
| Haiku 4.5 | $0.00005 | $0.00186 |
Grade A, and why
rstest-best-practices 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 10d 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 rstest-best-practices — 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 — 134 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Rstest Best Practices
Apply these rules when writing or reviewing Rstest test projects.
Configuration
- Use
rstest.config.tsanddefineConfigfrom@rstest/core - Prefer explicit imports
import { test, expect, describe } from '@rstest/core'overglobals: true - For Rsbuild projects, use
@rstest/adapter-rsbuildwithextends: withRsbuildConfig()to reuse build config - For Rslib projects, use
@rstest/adapter-rslibwithextends: withRslibConfig()to reuse build config - Use
setupFilesfor shared test setup (e.g., custom matchers, cleanup hooks) - When using Rsbuild plugins (e.g.,
@rsbuild/plugin-react), add them via thepluginsfield - For deep-level or advanced build configuration needs, use
tools.rspackortools.bundlerChain
CLI
- Use
rstestorrstest runto run tests (rundisables watch mode, suitable for CI) - Use
rstest --watchorrstest watchfor local development with file watching - Use
rstest listto list all test files and test names - Use
rstest -uto update snapshots - Use
--reporter=verbosewhen debugging test failures for detailed output - Use
--config(-c) to specify a custom config file path
Test writing
- Import test APIs from
@rstest/core:test,describe,expect,beforeEach,afterEach, etc. - Use
testoritfor test cases; usedescribefor grouping related tests - Use
.onlyto focus on specific tests during development, but never commit.onlyto the codebase - Use
.skipor.todoto mark incomplete or temporarily skipped tests - Prefer small, focused test cases that test a single behavior
- For async error paths, prefer
await expect(fn()).rejects.toThrow(ErrorClass)(or.rejects.toMatchObject({ ... })) overtry/catchwithexpect.failor.catch(e => e)patterns — the matcher form fails clearly if the promise unexpectedly resolves, keeps the assertion in one chain, and avoids forgetting to assert the throw at all - For async happy paths, use
await expect(fn()).resolves.toEqual(...)for the same reason - Use
includeSourcefor in-source testing of small utility functions (Rust-styleimport.meta.rstest) - For in-source tests, wrap test code in
if (import.meta.rstest) { ... }and defineimport.meta.rstestasfalsein production build config
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.
- 10d ago First seen · 134 lines · 54 tokens per session scan A e400fa526d82
rstest-best-practices is a skill published in the GitHub repository aesoper101/image-gen-mcp (0 stars, last pushed 20d ago), licensed MIT. It adds 54 tokens to every session and 1,856 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to rstest-best-practices, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
migrate-xunit-to-xunit-v3
Migrate .NET test projects from xUnit.net v2 to xunit.v3 and fix v3 breaks. Use for package/CPM conversion, OutputType=Exe, preserving the VSTest or MTP runner (including projects currently using YTest.MTP.XUnit2), incompatible TFMs, async void tests, string-to-Type attributes, custom Fact/Theory/BeforeAfterTest…
go-testing
Trigger: Go tests, go test coverage, Bubbletea teatest, golden files. Apply focused Go testing patterns.
nw-fp-clojure
Clojure language-specific patterns, data-first modeling, REPL-driven development, and spec.
mobiai-ios-testing
Use when writing or running tests in an iOS project — unit tests, UI tests, snapshot tests, choosing the right framework.
restore-internals-seams-in-finally-blocks-after-each-test
When delegating a task affected by this skill, include.
unit-test-parameterized
Provides parameterized testing patterns with JUnit 5, generates data-driven unit tests using @ParameterizedTest, @ValueSource, @CsvSource, @MethodSource. Creates tests that run the same logic with multiple input values. Use when writing data-driven Java tests, multiple test cases from single method, or boundary value…