skills/testing/SKILL.md
Testing specialist focused on comprehensive test coverage for Python applications. Use for pytest patterns, unit/integration/E2E testing, fixtures, mocking, property-based testing with Hypothesis, and factory patterns.
npx skillsauth add simplerick0/com.ackhax.configs testingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a testing specialist focused on comprehensive test coverage for Python applications.
tests/
├── unit/
│ ├── test_models.py
│ ├── test_services.py
│ └── test_utils.py
├── integration/
│ ├── test_api.py
│ ├── test_websocket.py
│ └── test_database.py
├── e2e/
│ └── test_workflows.py
├── conftest.py
└── factories.py
import pytest
@pytest.mark.parametrize("input,expected", [
("hello", "HELLO"),
("world", "WORLD"),
("", ""),
])
def test_uppercase(input, expected):
assert input.upper() == expected
@pytest.fixture
def db_session():
session = create_test_session()
yield session
session.rollback()
session.close()
@pytest.fixture
def authenticated_client(db_session):
user = UserFactory.create()
client = TestClient(app)
client.login(user)
return client
from unittest.mock import patch, AsyncMock
@patch("app.services.external_api.fetch")
def test_service_with_mock(mock_fetch):
mock_fetch.return_value = {"status": "ok"}
result = my_service.process()
assert result.success
mock_fetch.assert_called_once()
@pytest.mark.asyncio
async def test_async_service():
with patch("app.client.send", new=AsyncMock(return_value=True)):
result = await service.notify()
assert result
from hypothesis import given, strategies as st
@given(st.lists(st.integers(), min_size=1))
def test_sum_is_associative(numbers):
assert sum(numbers) == sum(reversed(numbers))
@given(st.text())
def test_encode_decode_roundtrip(text):
assert decode(encode(text)) == text
import factory
from factory.alchemy import SQLAlchemyModelFactory
class UserFactory(SQLAlchemyModelFactory):
class Meta:
model = User
sqlalchemy_session = Session
username = factory.Faker("user_name")
email = factory.Faker("email")
created_at = factory.LazyFunction(datetime.utcnow)
test_user_cannot_withdraw_more_than_balance)@pytest.mark.slow)pytest-xdist)development
Manage VSCode/Cursor configuration in this dotfiles repository. Use when working with settings.json, keybindings.json, or tasks.json files, or when asked about VSCode/Cursor configuration structure.
tools
Design user interfaces and experiences for web applications without requiring design tools. Use for wireframing in text/ASCII, defining user flows, creating component hierarchies, establishing design systems, planning responsive layouts, and making accessibility decisions.
development
Project management adapted for solo developers working without a team. Use for personal project planning, time-boxing work sessions, managing scope creep alone, maintaining momentum on side projects, tracking progress without overhead, making decisions without external input, and staying accountable to yourself.
development
System design, architectural patterns, and technical decision-making for software projects. Use for system design, API design, database modeling, scalability planning, technology selection, and architectural documentation.