Performance
aiskillstore/marketplace
Comprehensive performance specialist covering analysis, optimization, load testing, and framework-specific performance.
Test application performance with k6 load/stress/soak/spike scripts and k6 scenarios, Lighthouse CI for Web Vitals, and performance budgets as CI gates.
$ npx skills add petrkindlmann/qa-skills --skill performance-testing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install petrkindlmann/qa-skills performance-testing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/performance-testing .claude/skills/performance-testing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "performance-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/performance-testing into .claude/skills/performance-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "performance-testing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/petrkindlmann/qa-skills/tree/main/skills/performance-testingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add petrkindlmann/qa-skills --skill performance-testing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install petrkindlmann/qa-skills performance-testing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/performance-testing .agents/skills/performance-testing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "performance-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/performance-testing into .agents/skills/performance-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "performance-testing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add petrkindlmann/qa-skills --skill performance-testing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install petrkindlmann/qa-skills performance-testing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/performance-testing .cursor/skills/performance-testing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "performance-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/performance-testing into .cursor/skills/performance-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "performance-testing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/petrkindlmann/qa-skills.git --path skills/performance-testing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add petrkindlmann/qa-skills --skill performance-testing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install petrkindlmann/qa-skills performance-testing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/performance-testing .gemini/skills/performance-testing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "performance-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/performance-testing into .gemini/skills/performance-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "performance-testing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install petrkindlmann/qa-skills performance-testingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add petrkindlmann/qa-skills --skill performance-testing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/performance-testing .github/skills/performance-testing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "performance-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/performance-testing into .github/skills/performance-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "performance-testing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add petrkindlmann/qa-skills --skill performance-testing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install petrkindlmann/qa-skills performance-testing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/performance-testing .opencode/skills/performance-testing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "performance-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/performance-testing into .opencode/skills/performance-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "performance-testing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
performance-testingTest application performance with k6 load/stress/soak/spike scripts and k6 scenarios, Lighthouse CI for Web Vitals, and performance budgets as CI gates.
Performance Testing is an agent skill from petrkindlmann/qa-skills. Test application performance with k6 load/stress/soak/spike scripts and k6 scenarios, Lighthouse CI for Web Vitals, and performance budgets as CI gates. Covers load profiles, custom metrics, bottleneck identification, and Core Web Vitals (LCP, INP, CLS). Use when: "performance test," "load test," "stress test," "soak test," "spike test," "k6," "k6 scenarios," "Lighthouse," "Web Vitals," "Core Web Vitals," "performance budget." Not for: scheduled production probes — use synthetic-monitoring; pixel-diff regressions…
Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/recipes.md`).
It sits in Testing & QA, covering Web performance and Load testing. The repository describes itself as: 50 QA and test-automation skills for Claude Code, Codex, Cursor, and any Agent Skills Standard runtime. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b3bb61b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
grafana.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Performance Testing loads about 4.4k tokens when it runs, and up to ~6.9k if it reads all its reference files. Until then it costs about 173 tokens; SKILL.md has 2,194 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from petrkindlmann/qa-skills at commit b3bb61b, republished under its MIT licence (© petrkindlmann). 2,194 words, ~4,390 tokens.
.claude/skills/performance-testing/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.<objective>
Measure, assert, and protect application performance with budgets enforced in CI, not
subjective "feels fast enough" assessments. This skill covers two domains: **load testing**
(can the backend handle traffic?) and **web performance** (is the frontend fast for users?).
A report that says "LCP is 3.2s" is information; a CI gate that fails the build at 2.5s is
accountability.
</objective>
| You need to... | Go to |
|---|---|
| Test backend capacity / throughput / latency under traffic | k6 Load Testing → references/recipes.md |
| Pick a load shape (constant / ramp / spike / soak) | Load Profiles table |
| Measure frontend speed for real users (LCP, INP, CLS) | Web Performance + Core Web Vitals |
| Gate page perf in CI | Lighthouse CI (gate TBT, not INP — see below) |
| A budget is breached and you must find why | Bottleneck Identification |
| Migrate an existing suite from k6 v1 → v2 | k6 v2 Migration callout |
Check .agents/qa-project-context.md first — if it exists, use it and skip questions
already answered there.
Performance intuition is unreliable; developers routinely optimize the wrong thing. Profile first, identify the actual bottleneck, then optimize. A profiled 50ms win in the right place beats an assumed 500ms win in the wrong one.
A budget documented in a wiki but not checked in CI is violated within weeks. Wire budgets into the pipeline as k6 thresholds and Lighthouse assertions so regressions fail the build, not a quarterly review.
A stress test to 10x traffic tells you the breaking point. A load test at 1.5x expected traffic tells you whether tomorrow's real users have a good experience. Both have value, but realistic load runs more often and catches regressions earlier.
Server-side metrics (latency, throughput) matter, but users experience performance through the browser. LCP, INP, and CLS measure perceived speed. A fast API that renders slowly is still slow to users.
It does not happen by accident. It needs dedicated test infrastructure, budgets, and monitoring, and the same continuous attention as functional correctness. Treat a performance regression with the same urgency as a functional bug.
k6 is an open-source load testing tool that uses JavaScript/TypeScript for scripts, runs from the CLI, and integrates with CI. Current stable: k6 v2.0.0 (final shipped 2026-05). v2 has breaking changes from v1 — see the migration callout below.
A load test is built from three pieces: a load profile (the stages/scenarios
shape), checks (per-request assertions), and thresholds (pass/fail budgets that
set the exit code). Always drive the base URL from __ENV so the same script runs against
local, staging, and CI.
See references/recipes.md for the full basic load test, custom metrics, and scenarios.
A minimal threshold block:
export const options = {
stages: [
{ duration: '1m', target: 20 },
{ duration: '3m', target: 20 },
{ duration: '1m', target: 0 },
],
thresholds: {
http_req_duration: ['p(95)<500', 'p(99)<1000'],
http_req_failed: ['rate<0.01'],
},
};| Profile | Question | Shape | Duration |
|---|---|---|---|
| Constant | Can the system handle normal traffic? | vus: 50, duration: '10m' | 10 min |
| Ramp-up (stress) | At what point does it degrade? | 50 → 100 → 200 → 400 → 800 → 0 | 12 min |
| Spike | Does it recover from a sudden surge? | 50 → spike 500 → sustain → drop 50 → recover | 6 min |
| Soak | Does it leak resources over time? | Ramp to 100, sustain 4h, ramp down | 4+ hours |
A spike test is not done until "does it recover?" is an assertion, not a comment. Tag
the post-spike window (e.g. phase:recovery) and scope a threshold to it so the run fails
if p95 stays elevated. See the recovery-detection recipe in references/recipes.md.
k6 has four metric types: Counter (cumulative count), Rate (proportion of non-zero/true
values, 0..1), Trend (statistical distribution — p50/p95/p99), Gauge (latest value). Tag
requests with { tags: { name: 'endpoint' } } to filter metrics per endpoint, scenario, or
flow.
Scenarios run distinct user flows concurrently, each with its own executor and
per-scenario thresholds ('http_req_duration{scenario:checkout}': ['p(95)<500']). Use them
to model a real mix — browsers + checkout + API-heavy load at once. Full custom-metric and
scenario examples are in references/recipes.md.
Install k6 with the official grafana/setup-k6-action@v1 — not a hand-rolled apt/gpg
keyserver block (brittle, rots, no version pin). k6 exits non-zero when any threshold is
breached, so a breached budget fails the job with no extra wiring. The full GitHub Actions
workflow (checkout → setup-k6 → run → upload artifact) is in references/recipes.md.
k6 v1 → v2 migration (v2.0.0 final, 2026-05):
k6/experimental/websockets→k6/websockets(drop theexperimental/prefix; stable now)k6/experimental/redis→k6/x/redis— NOT removed. The import auto-resolves thexk6-redisextension (auto-extension-resolution is on by default; JS usage unchanged). Do not hand-roll a Redis client.externally-controlledexecutor removedoptions.ext.loadimpactremoved → useoptions.cloud(Grafana Cloud k6, formerly k6 Cloud / Load Impact)- CLI:
--no-summary→--summary-mode=disabled;--upload-only→k6 cloud upload script.js;k6 login/pause/resume/scale/statusremoved (usek6 cloud login, etc.); positionalk6 cloud script.jsremoved- Exit code 97 is new: a non-threshold cloud-side abort. Wire it into CI handling. Reference: https://grafana.com/docs/k6/latest/get-started/migrating-to-v2/
Lighthouse CI (@lhci/cli) automates Google Lighthouse audits and enforces budgets in the
pipeline via lighthouserc.js assertions. Current: @lhci/cli 0.15.x on the Lighthouse 12.6
engine. The project is in maintenance mode (last release ~a year ago) and does not yet
support Lighthouse 13 (needs Node 22.19+); it remains the standard CI surface for Lighthouse,
but watch upstream before adopting in greenfield projects.
The full lighthouserc.js (LCP/CLS/TBT/perf-score assertions) and the lhci autorun CI
step are in references/recipes.md.
This is the single most-misunderstood point in web perf, so be precise:
interaction-to-next-paint in a standard lhci autorun run gates something Lighthouse
never produces.'total-blocking-time': ['error', { maxNumericValue: 200 }]. TBT correlates with INP but
is not identical (a page can hit 0ms TBT and still fail field INP).k6/browser with a PerformanceObserver on
event entries. Treat that as a scripted lab proxy, still not field INP.FID is gone: FID was deprecated and
web-vitalsv5+ removed it; INP became a Core Web Vital in March 2024. Do not assert on FID in any new code.
For a per-page lab check inside your existing Playwright suite, use page.evaluate with a
PerformanceObserver to capture LCP and CLS (both observe cleanly on page load), then assert
the thresholds. Full test in references/recipes.md. For under-load CWV capture, use the
k6/browser recipe in the same file.
The three metrics Google uses for user-perceived performance.
| Metric | Measures | Good | Needs Improvement | Poor |
|---|---|---|---|---|
| LCP (Largest Contentful Paint) | Loading — when the largest element renders | ≤ 2.5s | 2.5s–4.0s | > 4.0s |
| INP (Interaction to Next Paint) | Responsiveness — interaction → next paint (field-only) | ≤ 200ms | 200ms–500ms | > 500ms |
| CLS (Cumulative Layout Shift) | Visual stability — unexpected layout movement | ≤ 0.1 | 0.1–0.25 | > 0.25 |
Common fixes:
preload the LCP image).scheduler.yield(), requestIdleCallback), heavy handlers (debounce/throttle, Web Workers), layout thrashing (batch DOM reads/writes via requestAnimationFrame).width/height on images, reserve space for injected content (aspect-ratio/min-height), font-display: swap with size-adjust, fixed-size containers for ads/embeds.| Lab Data | Field Data | |
|---|---|---|
| Source | Lighthouse, WebPageTest, Playwright, k6/browser | Chrome UX Report (CrUX), RUM tools |
| Environment | Simulated, controlled | Real users, real devices, real networks |
| Use for | Debugging, CI gates, pre-deployment | Understanding actual user experience |
| Limitation | No real-world variance; no field INP | Cannot reproduce specific conditions |
Use lab data for CI gates and debugging; use field data to understand the real user experience. A page that scores 100 in Lighthouse but has poor CrUX data has a real problem — and INP only ever shows up in the field column.
When a budget is breached, investigate in this order — never guess, never optimize before profiling:
Trend metrics in k6 give p50/p95/p99 per API. The slowest is the first target.EXPLAIN), N+1 patterns (JOIN/batch), lock contention on write-heavy tables (optimize transactions), unbounded result sets (paginate).cache-control on static assets (public, max-age=31536000, immutable) and the x-cache: HIT rate.blockedUrlPatterns for analytics/chat/tracking; compare scores with and without to quantify the cost.Load tests can trigger auto-scaling (expensive), rate limiting (test fails), alerts (unnecessary pages), or outages. Always coordinate with operations and target staging or a dedicated load-test environment.
Testing 10,000 concurrent users when the product has 500 DAU, or uniform traffic when real traffic has peaks. Model load from analytics; absent that, start at 2x estimated peak and increase.
Looking only at k6's client-side response times. The server may be at 95% CPU, the connection pool exhausted, or memory leaking. Correlate load results with server metrics.
A quarterly pre-release load test lets dozens of regressions accumulate with untraceable root causes. Run in CI on every merge to main with budgets that catch regressions immediately.
"LCP is 3.2s" is information; "LCP must be under 2.5s" is a gate. Define budgets, enforce them as k6 thresholds and Lighthouse assertions, and treat violations as bugs.
Standard lhci autorun lab mode cannot produce an INP audit — no user interaction. Gating interaction-to-next-paint there gates a number Lighthouse never measures. Gate total-blocking-time as the lab proxy and track real INP from CrUX/RUM.
Spending days on a function that is 2% of response time. Profile, find the actual bottleneck, then optimize. The 200ms query beats the 5ms JS function every time.
Load testing against 100 seeded rows when production has 10 million. Query performance is radically different at scale. Seed the load-test environment with production-scale (anonymized) data first.
Prove the artifacts actually work before claiming done:
k6 run --summary-mode=disabled load-tests/api-load.js exits 0 and the
end-of-test summary shows every thresholds line green (✓). A red threshold line means a
breached budget and a non-zero exit.{phase:recovery} threshold
appears in the summary and passes — proving recovery is asserted, not just commented.lhci autorun exits 0 with all ['error', ...] assertions passing;
a breached LCP/CLS/TBT assertion exits non-zero.__ENV-driven base URL.http_req_duration{phase:recovery}), not just a // recovery comment.p(95)<500, http_req_failed rate<0.01) that fail the CI job when exceeded.lighthouserc.js gates merges on largest-contentful-paint, cumulative-layout-shift, and total-blocking-time (the lab proxy for INP) as ['error', ...] assertions; real INP tracked from CrUX/RUM, not asserted in lab.references/)grafana/setup-k6-action), lighthouserc.js, the k6/browser CWV-under-load example, and the Playwright LCP/CLS test.© petrkindlmann, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/performance-testing of petrkindlmann/qa-skills.
Open the folder on GitHubat commit b3bb61b
Performance Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Performance Testing this skillpetrkindlmann/qa-skills | 163 | — | ~4.4k | Automated safety check: Pass | MIT | |
| Performanceaiskillstore/marketplace | 430 | 1 repos | ~2.6k | Automated safety check: Pass | None | |
| Nuxt Productionsecondsky/claude-skills | 227 | — | ~3.3k | Automated safety check: Notes | MIT | |
| Nuxt Productionsecondsky/claude-skills | 227 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Capacity PlannerFerroxLabs/wayland | 608 | — | ~4.4k | Automated safety check: Pass | Apache-2.0 | |
| Performance Profileralirezarezvani/claude-skills | 28k | — | ~684 | Automated safety check: Pass | MIT |
aiskillstore/marketplace
Comprehensive performance specialist covering analysis, optimization, load testing, and framework-specific performance.
secondsky/claude-skills
| Nuxt 4 production optimization: hydration, performance, testing with Vitest, deployment to Cloudflare/Vercel/Netlify, and v4 migration.
secondsky/claude-skills
| Nuxt 5 production optimization: hydration, performance, testing with Vitest, deployment to Cloudflare/Vercel/Netlify, and migration from Nuxt 4.
FerroxLabs/wayland
Capacity planning expertise covering load testing methodologies, autoscaling policies, resource forecasting, performance budgets, cost-capacity curves, bottleneck identification, queue theory…
alirezarezvani/claude-skills
Systematic performance profiling for Node.js, Python, and Go applications.
hashgraph-online/awesome-codex-plugins
Verify and design for load scaling — data volume, transaction volume, request rate, and user count.
petrkindlmann/qa-skills
Test for WCAG 2.2 AA compliance with axe-core + Playwright, keyboard navigation audits, screen reader testing, ARIA pattern validation, and legal compliance mapping (ADA, EAA, Section 508).
petrkindlmann/qa-skills
Goal-driven E2E testing where a browser agent (Playwright MCP / computer-use) reads a natural-language goal and explores the app via the accessibility tree to assert outcomes — no pre-written script.
petrkindlmann/qa-skills
Use AI to write NEW test code from specs, PRDs, user stories, code diffs, bug reports, or OpenAPI specs.
petrkindlmann/qa-skills
Test REST and GraphQL APIs with Playwright APIRequestContext, Supertest, or standalone HTTP clients.
petrkindlmann/qa-skills
Design CI/CD pipelines that run test suites. An agent skill from petrkindlmann/qa-skills.
petrkindlmann/qa-skills
Test for regulatory compliance: GDPR/CMP consent verification, Google Consent Mode v2, Global Privacy Control (GPC), CCPA/US state opt-out, EU AI Act Article 50 transparency, Better Ads Standards…
Categories
Test application performance with k6 load/stress/soak/spike scripts and k6 scenarios, Lighthouse CI for Web Vitals, and performance budgets as CI gates. Performance Testing is an agent skill from petrkindlmann/qa-skills. Test application performance with k6 load/stress/soak/spike scripts and k6 scenarios, Lighthouse CI for Web Vitals, and performance budgets as CI gates.
Performance Testing fits situations like: : performance test; core Web Vitals; performance budget. Not for: scheduled production probes — use synthetic-monitoring; pixel-diff regressions — use visual-testing.
Run `npx skills add petrkindlmann/qa-skills --skill performance-testing -a claude-code`. Or copy the skill folder (skills/performance-testing in petrkindlmann/qa-skills) into .claude/skills/performance-testing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add petrkindlmann/qa-skills --skill performance-testing -a codex`. Or copy the skill folder (skills/performance-testing in petrkindlmann/qa-skills) into .agents/skills/performance-testing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add petrkindlmann/qa-skills --skill performance-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/performance-testing, .gemini/skills/performance-testing, .github/skills/performance-testing and .opencode/skills/performance-testing in your project.
SKILL.md names no scripts, command-line tools or credentials: Performance Testing is instructions for the agent only.
SKILL.md names 1 domain. As links in the text: grafana.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Performance Testing is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Performance Testing: Performance (aiskillstore/marketplace, 430 stars), Nuxt Production (secondsky/claude-skills, 227 stars), Nuxt Production (secondsky/claude-skills, 227 stars) and Capacity Planner (FerroxLabs/wayland, 608 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
petrkindlmann (a GitHub user) maintains it in petrkindlmann/qa-skills, which has 163 GitHub stars. The repository holds 45 skills in this directory. The repository was last updated on June 10, 2026.
Source: petrkindlmann/qa-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.