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/jenreh/appkit/reflex-testing-statenpx skills add jenreh/appkit --skill reflex-testing-stategit clone --depth 1 https://github.com/jenreh/appkitWhat 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.00006 | $0.00509 |
| Opus 5 | $0.00003 | $0.00254 |
| Sonnet 5 | $0.00001 | $0.00102 |
| Haiku 4.5 | $0.00001 | $0.00051 |
Grade A, and why
reflex-testing-state 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.
What it actually says
Testing Reflex State
Reflex State is a plain Python class — no browser or runtime needed.
Test it directly with pytest and pytest-asyncio.
Setup
pip install pytest pytest-asyncio pytest-cov
pyproject.toml:
[tool.pytest.ini_options]
testpaths = ["tests/unit"]
asyncio_mode = "auto"
python_files = ["test_*.py"]
File layout
tests/unit/
├── conftest.py
├── test_base_state.py
└── test_project_state.py
Patterns
Base vars → test defaults directly
Sync handlers → call on instance, assert result
Async handlers → await, assert is_loading is False after
Streaming handlers → consume with async for
Computed vars → mutate base vars, assert property
Substates → instantiate subclass independently
External I/O → unittest.mock.patch at myapp.state.*
Background tasks → patch __aenter__/__aexit__
See references/PATTERNS.md for full code examples. See references/FIXTURES.md for shared fixture setup.
Decision: which pattern to use?
Sync handler? → Test directly, no async
Async handler? → Use await, check loading flag resets
Handler bound to Radix UI component? → Add str AND list[str] test cases
Handler calls API/DB? → Mock with AsyncMock, test both success and failure
Background task (@rx.event(background=True))? → Patch context manager
Run
pytest tests/unit/ -v --cov=myapp/state --cov-report=term-missing
pytest tests/unit/test_project_state.py -v # single module
pytest tests/unit/ -x # stop on first failure
What ships with it
2 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.
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 · 67 lines · 56 tokens per session scan A a3ec12ccaa0b
reflex-testing-state is a skill published in the GitHub repository jenreh/appkit (4 stars, last pushed 7d ago), licensed MIT. It adds 6 tokens to every session and 509 once invoked, about $0.0000 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-31.
Other skills, from other repositories
python-testing
Guidelines for writing and running tests in the Agent Framework Python codebase. Use this when creating, modifying, or running tests.
testing-python
Write and evaluate effective Python tests using pytest. Use when writing tests, reviewing test code, debugging test failures, or improving test coverage. Covers test design, fixtures, parameterization, mocking, and async testing.
pytest
Pytest testing patterns for Python. Trigger: When writing or refactoring pytest tests (fixtures, mocking, parametrize, markers). For Prowler-specific API/SDK testing conventions, also use prowler-test-api or prowler-test-sdk.
python-testing
Select and run Python SDK verification with nox, Makefile targets, Ruff, mypy, pytest markers, sanity tests, type inference checks, and build checks. Use when adding Python tests, diagnosing Python CI, or validating Python SDK/provider changes. Do not use for TypeScript-only checks.
pytest-asyncio-httpx-mocking
When masking httpx.AsyncClient with unittest.mock in Pytest, AsyncMock must be used instead of MagicMock for async methods like post/get to prevent TypeError when awaited.
test-writer
How to write pytest tests for modules in this workspace. Load whenever you are about to write or extend tests.