test:mock

test:mock is a command for coding agents from ruslan-korneev/claude-plugins. It costs 14 tokens per session (1,458 once invoked), scanned A, original, MIT.

A testing command that creates a mock, a stand-in for an external dependency such as an email service, payment gateway, network request, or clock.

In plain words
What is it for?
Use it to prepare mocks for external dependencies, including asynchronous services, while keeping the code under test and databases real.
Why use it?
It lets tests check code without contacting real services or relying on unpredictable outside systems.

Command

Part of the python plugin — 4 skills, 10 commands, 1 agent, 1 hook shipped together

Install

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.

agentmods
npx agentmods add commands/ruslan-korneev/claude-plugins/test-mock
Clone the repo
git clone --depth 1 https://github.com/ruslan-korneev/claude-plugins

Or install python, the plugin that ships this one along with the rest of its 4 skills, 10 commands, 1 agent, 1 hook.

Wrote 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.

agentmods badge for test:mock

README.md
[![agentmods](https://agentmods.dev/badge/commands/ruslan-korneev/claude-plugins/test-mock.svg)](https://agentmods.dev/commands/ruslan-korneev/claude-plugins/test-mock)
Your own site
<a href="https://agentmods.dev/commands/ruslan-korneev/claude-plugins/test-mock"><img src="https://agentmods.dev/badge/commands/ruslan-korneev/claude-plugins/test-mock.svg" alt="Measured on agentmods" height="20"></a>
Per session 14 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,458 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00014 $0.01458
Opus 5 $0.00007 $0.00729
Sonnet 5 $0.00003 $0.00292
Haiku 4.5 $0.00001 $0.00146

Measured 4d ago against content hash 62b84a6b2eb3, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

test:mock 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 4d 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.

plugins/python/commands/test-mock.md · 281 lines

How it starts

The opening of the file, as written. The whole thing — 281 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Command /test:mock

Create a mock for an external dependency in tests.

When to Use Mocks

  • External services — email, SMS, payment gateways
  • Network requests — HTTP clients, API calls
  • File system — file read/write operations
  • Time — datetime.now(), time.sleep()
  • Random values — random, uuid

Do NOT Mock

  • Code under test — pointless
  • Simple functions — if you can use real ones
  • Database — better to use a test database with rollback

Instructions

Step 1: Identify what to mock

Find the dependency in code:

# src/modules/users/services.py
class UserService:
    def __init__(self, email_service: EmailService) -> None:
        self._email = email_service

    async def register(self, data: UserCreate) -> User:
        user = await self._repo.create(data)
        await self._email.send_welcome(user.email)  # ← this needs to be mocked
        return user

Step 2: Create the mock

Mock Examples

AsyncMock for async dependencies

import pytest
from unittest.mock import AsyncMock


@pytest.fixture
def mock_email_service() -> AsyncMock:
    """Mock email service."""
    mock = AsyncMock()
    mock.send_welcome.return_value = True
    mock.send_reset_password.return_value = True
    return mock


# Usage
async def test_register_sends_welcome_email(
    mock_email_service: AsyncMock,
) -> None:
    service = UserService(email_service=mock_email_service)

    await service.register({"email": "[email protected]"})

    mock_email_service.send_welcome.assert_called_once_with("[email protected]")

MagicMock for sync dependencies

from unittest.mock import MagicMock


@pytest.fixture
def mock_cache() -> MagicMock:
    """Mock cache."""
    mock = MagicMock()
    mock.get.return_value = None
    mock.set.return_value = True
    mock.delete.return_value = True
    return mock

patch for module-level replacement

from unittest.mock import patch, AsyncMock


async def test_external_api_call():
    with patch(
        "src.modules.orders.services.httpx.AsyncClient.post",
        new_callable=AsyncMock,
    ) as mock_post:
        mock_post.return_value.status_code = 200
        mock_post.return_value.json.return_value = {"success": True}

        result = await order_service.create_payment(order_id=1)

        assert result["success"] is True
        mock_post.assert_called_once()

Read the full file on GitHub · 281 lines

Changes

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.

  1. 4d ago First seen · 281 lines · 14 tokens per session scan A 62b84a6b2eb3

Subscribe to this mod's changes

test:mock is a command published in the GitHub repository ruslan-korneev/claude-plugins (4 stars, last pushed 6mo ago), licensed MIT. It adds 14 tokens to every session and 1,458 once invoked, about $0.0001 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.

Related

Other commands, from other repositories

sync

Sync the audit manifest with Azure DevOps work items — set the connector up for the first time (connect: verify the transport, report which auth path is in effect, prove access read-only, detect the board's process), push manifest bugs/tasks/phases to ADO (board states, sprint stamp, Remaining Work, comments), pull…

AleksandarBisevac/claude-plugins · 100 tokens

init

Multi-agent codebase audit that GENERATES the audit manifest (phases/tasks) at manifestPath. Interviews you for scope/goals, fans out parallel read-only explorers, synthesizes findings, then presents the proposed phases for approval BEFORE writing — approve to materialize, or park them as proposals for later…

AleksandarBisevac/claude-plugins · 92 tokens

task

Add a tracked task to the audit manifest — every answer is a flag, and the dialogue only covers what the caller did not pass — move one between phases, or cancel work that will not be done. add allocates the id, initializes all orchestrator fields, updates fileIndex, and revalidates; move renumbers a task into another…

AleksandarBisevac/claude-plugins · 149 tokens

panel

Audit pipeline: open / stop / check a local control-panel UI to visually manage .claude/audit.config.json and the manifest's composition levers (reviewSkill, per-task skills/models, buildCommands) — with live validation and discovery of the skills & agents available in this repo + globally. Ephemeral, on-demand; a…

AleksandarBisevac/claude-plugins · 79 tokens

doctor

Audit pipeline: diagnose the setup before it bites — interpreter the hooks will use, git root, config, manifest + shard integrity, which plan-gate tier is active, submodule conflicts, build runners, whether the skills the plan names would resolve from a clone or only here, whether hooks have ever fired and which copy…

AleksandarBisevac/claude-plugins · 108 tokens

layout

Audit pipeline: choose how the manifest is stored — sharded (an index plus one file per phase: fewer tokens per phase run, parallel-safe across worktrees) or single-file (one file, one diff, no index). A layout CHOICE, not a version upgrade: both shapes are current, neither goes out of date, and this command moves in…

AleksandarBisevac/claude-plugins · 93 tokens