From ork
Provides k6 load tests, Locust stress tests, pytest execution optimization with xdist parallel and plugins, test type classification, and performance benchmarking. Use when writing load tests or optimizing test speed.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ork:testing-perfThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Focused skill for performance testing, load testing, and pytest execution optimization. Covers k6, Locust, pytest-xdist parallel execution, custom plugins, and test type classification.
checklists/performance-checklist.mdchecklists/pytest-production-checklist.mdreferences/custom-plugins.mdreferences/k6-patterns.mdreferences/xdist-parallel.mdrules/_sections.mdrules/execution.mdrules/perf-k6.mdrules/perf-locust.mdrules/perf-types.mdrules/pytest-execution.mdrules/pytest-plugins.mdscripts/test-case-template.mdtest-cases.jsonFocused skill for performance testing, load testing, and pytest execution optimization. Covers k6, Locust, pytest-xdist parallel execution, custom plugins, and test type classification.
| Area | File | Purpose |
|---|---|---|
| k6 Load Testing | rules/perf-k6.md | Thresholds, stages, custom metrics, CI integration |
| Locust Testing | rules/perf-locust.md | Python load tests, task weighting, auth flows |
| Test Types | rules/perf-types.md | Load, stress, spike, soak test patterns |
| Execution | rules/execution.md | Coverage reporting, parallel execution, failure analysis |
| Pytest Markers | rules/pytest-execution.md | Custom markers, xdist parallel, worker isolation |
| Pytest Plugins | rules/pytest-plugins.md | Factory fixtures, plugin hooks, anti-patterns |
| k6 Patterns | references/k6-patterns.md | Staged ramp-up, authenticated requests, test types |
| xdist Parallel | references/xdist-parallel.md | Distribution modes, worker isolation, CI config |
| Custom Plugins | references/custom-plugins.md | conftest plugins, installable plugins, hook reference |
| Perf Checklist | checklists/performance-checklist.md | Planning, setup, metrics, load patterns, analysis |
| Pytest Checklist | checklists/pytest-production-checklist.md | Config, markers, parallel, fixtures, CI/CD |
| Test Template | scripts/test-case-template.md | Full test case documentation template |
Set up a load test with thresholds and staged ramp-up:
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '30s', target: 20 }, // Ramp up
{ duration: '1m', target: 20 }, // Steady state
{ duration: '30s', target: 0 }, // Ramp down
],
thresholds: {
http_req_duration: ['p(95)<500'], // 95th percentile under 500ms
http_req_failed: ['rate<0.01'], // Less than 1% error rate
},
};
export default function () {
const res = http.get('http://localhost:8000/api/health');
check(res, {
'status is 200': (r) => r.status === 200,
'response time < 200ms': (r) => r.timings.duration < 200,
});
sleep(1);
}
Run: k6 run --out json=results.json tests/load/api.js
| Type | Duration | VUs | Purpose | When to Use |
|---|---|---|---|---|
| Load | 5-10 min | Expected traffic | Validate normal conditions | Every release |
| Stress | 10-20 min | 2-3x expected | Find breaking point | Pre-launch |
| Spike | 5 min | Sudden 10x surge | Test auto-scaling | Before events |
| Soak | 4-12 hours | Normal load | Detect memory leaks | Weekly/nightly |
Speed up test suites with pytest-xdist:
# pyproject.toml
[tool.pytest.ini_options]
addopts = ["-n", "auto", "--dist", "loadscope"]
markers = [
"slow: marks tests as slow",
"smoke: critical path tests for CI/CD",
]
# Run with parallel workers and coverage
pytest -n auto --dist loadscope --cov=app --cov-report=term-missing --maxfail=3
# CI fast path — skip slow tests
pytest -m "not slow" -n auto
# Debug mode — single worker
pytest -n 0 -x --tb=long
When running parallel tests with databases, isolate per worker:
@pytest.fixture(scope="session")
def db_engine(worker_id):
db_name = f"test_db_{worker_id}" if worker_id != "master" else "test_db"
engine = create_engine(f"postgresql://localhost/{db_name}")
yield engine
engine.dispose()
| Metric | Target | Tool |
|---|---|---|
| p95 response time | < 500ms | k6 |
| p99 response time | < 1000ms | k6 |
| Error rate | < 1% | k6 / Locust |
| Business logic coverage | 90% | pytest-cov |
| Critical path coverage | 100% | pytest-cov |
| Scenario | Recommendation |
|---|---|
| JavaScript/TypeScript team | k6 for load testing |
| Python team | Locust for load testing |
| Need CI thresholds | k6 (built-in threshold support) |
| Need distributed testing | Locust (built-in distributed mode) |
| Slow test suite | pytest-xdist with -n auto |
| Flaky parallel tests | --dist loadscope for fixture grouping |
| DB-heavy tests | Worker-isolated databases with worker_id |
ork:testing-unit — Unit testing patterns, pytest fixturesork:testing-e2e — End-to-end performance testing with Playwrightork:performance — Core Web Vitals and optimization patternsnpx claudepluginhub yonatangross/orchestkit --plugin orkGuides load testing with k6 (stages, thresholds, spike/soak tests, CI integration via GitHub Actions) and Locust for Python teams. Use for verifying performance, finding capacity limits before launch.
Checks and configures load and performance testing infrastructure with k6, Artillery, or Locust. Audits coverage for smoke/stress tests, sets up CI/CD pipelines, and supports framework migration.
Creates and runs load tests with k6, JMeter, and Artillery for web apps and APIs. Validates performance under stress, spike, soak, scalability to detect bottlenecks.