admission-control
Use when the user asks to "write a validator", "add validation", "implement admission…
Use when the user wants to performance-test, load-test, or stress-test a public website end-to-end with k6. Produces a hybrid (protocol + browser) test suite, SLO-backed thresholds, a load-generator monitor sidecar, and a Grafana-side investigation playbook for backends the user
$ npx -y skills add grafana/skills --skill k6-perf-test-website --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/k6-perf-test-websiteContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when the user wants to performance-test, load-test, or stress-test a public website end-to-end with k6. Produces a hybrid (protocol + browser) test suite, SLO-backed thresholds, a load-generator monitor sidecar, and a Grafana-side investigation playbook for backends the user
name: k6-perf-test-website description: > Use when the user wants to performance-test, load-test, or stress-test a public website end-to-end with k6. Produces a hybrid (protocol + browser) test suite, SLO-backed thresholds, a load-generator monitor sidecar, and a Grafana-side investigation playbook for backends the user owns. Triggers on "perf test my site", "performance test my site", "load test this URL", "stress test my web app", "I want to load test [URL]", "set up k6 against my website", "write a k6 suite for [site]", "see if my site handles N concurrent users", or "how does my site perform under traffic". Use this skill whenever the user mentions k6, load testing, stress testing, performance testing, or wants to validate a website under traffic — even if they don't explicitly use the word "test" or ask for the specific outputs this skill produces.
An end-to-end, opinionated workflow for performance-testing any public website with k6. The skill produces:
(smoke / average / stress / spike / soak / breakpoint).
This skill enforces a few opinions you should not silently override:
laptop-looks-slow.
to run each test type; don't hardcode.
each script reads cleanly on its own during incident review.
`expect()`, async/await iteration functions, and per-request `tags`.
(`npx playwright install chromium`).
Tools the skill prefers when installed:
lookup. Prefer over hand-writing k6 boilerplate.
during §9 backend investigation.
discovery, and Grafana Cloud k6 cloud-run dispatch.
editing scripts without `mcp-k6` available.
If these tools are not configured the skill falls back to plain CLI tools (`k6`, `npx`, `curl`) and hand-written scripts. The skill does not own toolchain setup; defer to the user's existing setup process.
Explicit non-goals:
Tick these off in order. Each step has a section below.
1. Elicit workflows from the user. [§1](#1-elicit-workflows) 2. Scaffold the project from `assets/`. [§2](#2-scaffold-the-project) 3. Record each workflow with Playwright. [§3](#3-record-each-workflow) 4. Build functional protocol + browser tests; run `tests/run-all.sh` until green. [§4](#4-build-functional-tests) 5. Design SLO-backed thresholds and per-endpoint tags. [§5](#5-design-slos-and-thresholds) 6. Build hybrid load tests, one file per test type. [§6](#6-build-hybrid-load-tests) 7. Run validation locally with the LG sidecar. [§7](#7-run-locally-with-lg-sidecar) 8. Push to Grafana Cloud k6 for the test types the user chose for cloud. [§8](#8-push-to-grafana-cloud-k6) 9. Investigate the backend with Grafana (if owned). [§9](#9-investigate-the-backend) 10. Report back to the user. [§10](#10-report-back)
**The single most important step.** Without explicit workflows, every later step is guesswork.
Ask the user the questions in `references/workflow-elicitation.md` and record answers in a `runbook.md` alongside the scaffolded project.
You must capture: 2-4 named workflows, credentials, read vs write, destructive actions to avoid during soak, worry list, existing SLOs, backend ownership and Grafana access, and **per test type** whether each runs locally or in Grafana Cloud k6.
If the user can't name at least one workflow, **stop and clarify**; do not proceed.
Copy the `assets/` tree from this skill into the user's chosen directory. The skill's `assets/` directory is at `<SKILL_DIR>/assets/`, where `<SKILL_DIR>` is the absolute path to this skill's directory — your harness exposes this (e.g. opencode prefixes skill metadata with a `Base directory for this skill:` line). If you can't determine `<SKILL_DIR>` from context, ask the user.
cp -R "<SKILL_DIR>/assets/." "<target-dir>/"
If `cp -R` is blocked by sandbox permissions, copy files individually via your agent's file-write tool.
The scaffolded layout:
<target-dir>/ ├── package.json ├── .gitignore ├── README.md ├── runbook.md # you create from §1 answers ├── recordings/ │ ├── README.md │ └── scripts/ │ └── recorder.template.js # copy per workflow → wN-<short-name>.js, … ├── tests/ │ ├── run-all.sh │ └── workflow.template/ # copy per workflow → wN-<short-name>/, … │ ├── from-har.js │ ├── protocol.js │ ├── browser.js │ ├── smoke.js │ ├── average.js │ ├── stress.js │
Public skills for working with Grafana, Prometheus, Loki, Tempo, Pyroscope, k6, and the broader LGTM observability stack. Compatible with Claude Code, Cursor, Codex, and any tool supporting the Agent Skills open standard.
Repo: grafana/skills
Use when the user asks to "write a validator", "add validation", "implement admission…
Use when starting any grafana-app-sdk work — scaffolding a Grafana app, initializing a…
Author CUE kind definitions for grafana-app-sdk apps - schemas, versioning, field…
Implement reconcilers and watchers for grafana-app-sdk apps — write…
Cut Grafana Cloud Metrics cost by shrinking active-series count with Adaptive Metrics…