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/ruslan-korneev/claude-pluginsWrote 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/commands/ruslan-korneev/claude-plugins/test-first)<a href="https://agentmods.dev/commands/ruslan-korneev/claude-plugins/test-first"><img src="https://agentmods.dev/badge/commands/ruslan-korneev/claude-plugins/test-first/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/commands/ruslan-korneev/claude-plugins/test-first"><img src="https://agentmods.dev/badge/commands/ruslan-korneev/claude-plugins/test-first.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.00017 | $0.01197 |
| Opus 5.5 | $0.00007 | $0.00479 |
| Sonnet 5.5 | $0.00003 | $0.00239 |
| Haiku 4.5 | $0.00002 | $0.00120 |
Grade A, and why
test:first 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 1mo 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 — 203 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Command /test:first — TDD Red Phase
Create a test BEFORE writing implementation. This is the key command for TDD workflow.
TDD Principle
- Red — write a failing test (this command)
- Green — write minimal code to pass the test
- Refactor — improve code while keeping tests green
Instructions
Step 1: Determine test structure
Based on the feature description, determine:
- What to test (function, method, endpoint)
- Which scenarios to cover (happy path, edge cases, errors)
- Which dependencies to mock
Step 2: Determine test location
src/modules/users/services.py → tests/modules/users/test_services.py
src/modules/users/routers.py → tests/modules/users/test_routers.py
src/core/security.py → tests/core/test_security.py
Step 3: Create a failing test
import pytest
from unittest.mock import AsyncMock, MagicMock
# Import what does NOT exist yet — test will fail
from src.modules.users.services import UserService
class TestUserService:
"""Tests for UserService — user creation."""
@pytest.fixture
def mock_repository(self) -> AsyncMock:
"""Mock repository."""
return AsyncMock()
@pytest.fixture
def service(self, mock_repository: AsyncMock) -> UserService:
"""Service with mocked dependencies."""
return UserService(repository=mock_repository)
async def test_create_user_success(
self,
service: UserService,
mock_repository: AsyncMock,
) -> None:
"""Successful user creation."""
# Arrange
user_data = {"email": "[email protected]", "name": "Test User"}
mock_repository.save.return_value = {"id": 1, **user_data}
# Act
result = await service.create(user_data)
# Assert
assert result["id"] == 1
assert result["email"] == "[email protected]"
mock_repository.save.assert_called_once()
async def test_create_user_duplicate_email_raises_conflict(
self,
service: UserService,
mock_repository: AsyncMock,
) -> None:
"""Creating user with existing email raises ConflictError."""
# Arrange
from src.core.exceptions import ConflictError
user_data = {"email": "[email protected]", "name": "Test User"}
mock_repository.get_by_email.return_value = {"id": 1} # already exists
# Act & Assert
with pytest.raises(ConflictError):
await service.create(user_data)
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.
- 1mo ago First seen · 203 lines · 17 tokens per session scan A 04a69f46579e
test:first is a command published in the GitHub repository ruslan-korneev/claude-plugins (5 stars, last pushed 7mo ago), licensed MIT. It adds 17 tokens to every session and 1,197 once invoked, about $0.0001 per session on Opus 5.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 commands, from other repositories
test-skill
Test Claude Code skills using RED/GREEN/REFACTOR TDD phases in fresh subagents to prevent priming bias.
atdd
Start the ATDD workflow for a new feature. Optionally provide a feature description as an argument.
symfony-tdd-pest
Start a TDD workflow using Pest PHP for Symfony with RED-GREEN-REFACTOR cycle.
debug
Systematic root-cause investigation, then fix with TDD — never proposes a fix before finding the cause; resumable diagnosis + regression test in .orc/ state. Workspace-aware. For a quick one-off look without session state, prefer the bundled /debug.
bugfix
TDD-driven bugfix workflow: tester writes failing test (RED) → developer fixes (GREEN) → developer refactors (REFACTOR) → reviewer validates. Accepts issue number, description, or both. Asks before pushing and creating a PR; --no-pr commits locally without asking.
loop
Autonomous execution loop. Runs the TDD cycle repeatedly until all tasks in an epic are complete, with circuit breaker protection and PR workflow.