load-test — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited load-test (Agent Skill) and scored it 92/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 2 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 2 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are in AUTONOMOUS MODE. Do NOT ask questions. Detect the project's API framework, generate realistic load test scenarios, execute them, and produce a performance analysis report.
INPUT: $ARGUMENTS
If arguments are provided, focus load testing on those specific endpoints or scenarios. If no arguments are provided, generate load tests for ALL critical API endpoints.
============================================================ PHASE 1: API AND TOOL DISCOVERY ============================================================
Step 1.1 -- Detect API Framework
Scan for the API framework:
| Indicator | Framework |
|---|---|
| package.json with fastify | Fastify |
| package.json with express | Express |
| package.json with @nestjs/core | NestJS |
| requirements.txt with fastapi | FastAPI |
| requirements.txt with flask | Flask |
| requirements.txt with django | Django |
| go.mod with gin or echo or net/http | Go |
| Gemfile with rails | Rails |
Step 1.2 -- Discover Endpoints
Find all API endpoints (same discovery method as /integration-test).
Classify each endpoint by criticality:
| Priority | Criteria |
|---|---|
| CRITICAL | Auth endpoints, payment, data writes, main CRUD |
| HIGH | List/search endpoints, frequently accessed reads |
| MEDIUM | Settings, profile, secondary features |
| LOW | Admin-only, rarely accessed, health checks |
Step 1.3 -- Detect Load Testing Tool
Check if a load testing tool is already installed:
| Indicator | Tool |
|---|---|
| k6/ directory or *.k6.js files | k6 |
| locustfile.py or locust in requirements | Locust |
| artillery.yml or artillery in package.json | Artillery |
| jmeter/ directory or *.jmx files | JMeter |
If no tool is detected, select based on stack:
Install the selected tool:
k6 version, if not suggest installation============================================================ PHASE 2: SCENARIO DESIGN ============================================================
Step 2.1 -- Define Virtual User Behaviors
Create realistic user behavior flows, not just individual endpoint hits:
FLOW 1 -- BROWSING USER:
FLOW 2 -- AUTHENTICATED USER:
FLOW 3 -- SEARCH-HEAVY USER:
FLOW 4 -- API CONSUMER (if B2B/API product):
Use realistic think times between requests (1-5 seconds for humans, 100-500ms for API consumers).
Step 2.2 -- Define Load Profiles
Generate four standard load profiles:
RAMP-UP TEST:
SUSTAINED LOAD TEST:
SPIKE TEST:
STRESS TEST:
Step 2.3 -- Define Thresholds
Set pass/fail thresholds:
| Metric | Threshold |
|---|---|
| HTTP error rate | < 1% |
| p95 response time | < 500ms |
| p99 response time | < 2000ms |
| Median response time | < 200ms |
| Requests per second (sustained) | > [baseline from ramp-up] |
| Failed requests | 0 for non-stress tests |
Adjust thresholds based on endpoint type:
============================================================ PHASE 3: TEST GENERATION ============================================================
Step 3.1 -- Generate Test Scripts
FOR K6 (JavaScript):
Create k6/scenarios/ directory with:
Each script must:
FOR LOCUST (Python):
Create locust/ directory with:
Each user class must:
FOR ARTILLERY (YAML + JS):
Create artillery/ directory with:
Each config must:
Step 3.2 -- Generate Test Data
Create realistic test data files:
Test data rules:
============================================================ PHASE 4: EXECUTION ============================================================
Step 4.1 -- Pre-flight Checks
Before running load tests:
Step 4.2 -- Run Tests
Execute in this order:
Run commands:
| Tool | Command |
|---|---|
| k6 | k6 run --out json=results/[test].json k6/scenarios/[test].js |
| Locust | locust -f locust/locustfile.py --headless -u [users] -r [rate] -t [time] --csv=results/[test] |
| Artillery | artillery run artillery/[test].yml -o results/[test].json |
Capture output for each test run.
Step 4.3 -- Results Collection
Parse results from each test run and extract:
============================================================ SELF-HEALING VALIDATION (max 3 iterations) ============================================================
After generating and running tests, validate:
IF STILL FAILING after 3 iterations:
============================================================ OUTPUT ============================================================
| Endpoint | Method | Priority | Auth Required |
|---|
#### Ramp-Up Test (Baseline)
| Metric | Value | Threshold | Status |
|---|---|---|---|
| Total requests | N | - | - |
| Avg RPS | N | - | - |
| Median latency | Nms | < 200ms | PASS/FAIL |
| p95 latency | Nms | < 500ms | PASS/FAIL |
| p99 latency | Nms | < 2000ms | PASS/FAIL |
| Error rate | N% | < 1% | PASS/FAIL |
#### Sustained Load Test [same table format]
#### Spike Test [same table format + recovery time metric]
#### Stress Test
| Endpoint | Median | p95 | p99 | Error Rate | Bottleneck? |
|---|
NEXT STEPS:
/perf for detailed performance optimization."/integration-test to verify correctness under normal conditions."/test-suite to see overall test health including load test coverage."DO NOT:
============================================================ SELF-EVOLUTION TELEMETRY ============================================================
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
~/.claude/projects/skill-telemetry.md in that memory directoryEntry format:
### /load-test — {{YYYY-MM-DD}}
- Outcome: {{SUCCESS | PARTIAL | FAILED}}
- Self-healed: {{yes — what was healed | no}}
- Iterations used: {{N}} / {{N max}}
- Bottleneck: {{phase that struggled or "none"}}
- Suggestion: {{one-line improvement idea for /evolve, or "none"}}Only log if the memory directory exists. Skip silently if not found. Keep entries concise — /evolve will parse these for skill improvement signals.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.