·
Last changedVersion:
This version passed the hardening gate. Hardening applied 7 targeted changes and preserved all other text. Classified findings before hardening: 5. Classified findings closed: 3. Classified findings remaining: 2. Unclassified scanner findings remaining: 0. Review findings closed: 3. Review findings remaining: 17.
2
3
2
Expand | File | Group | Subtype | Severity | Status |
|---|---|---|---|---|---|
references/writing-scenarios.md | Prompt Injection | Direct prompt injection | High | Closed | |
references/analyzing-the-agent.md | Prompt Injection | Direct prompt injection | High | Closed | |
scripts/build_scenarios.py | Sensitive Data & Secret Exposure | Hardcoded secret | Medium | Open | |
SKILL.md | Tool & MCP Manipulation | MCP over-permissioning | Medium | Open | |
SKILL.md | Prompt Injection | — | Medium | Closed |
5 findings
The most valuable thing you can do with simulations is generate good test scenarios for the user's agent — grounded in the agent's actual code and in what the user wants stress-tested — then run them. You do this locally: you read the code with your normal tools, and you (the coding agent) are the model that does the generation, so no extra API keys or services are needed.
A scenario = a simulated user's persona + goals (instructions) and the pass criteria (agent_expectations). A simulation plays each scenario against the agent over text and an LLM judge scores it. Your job is to produce a high-quality, diverse, on-target set of scenarios and write them to a YAML scenarios file the CLI can run.
A naive "just generate some tests" misses the point. Three things make this skill worth using:
references/user-guidance.md.references/analyzing-the-agent.md and references/writing-scenarios.md.description.md, and an explicit risk checklist to risks.yaml (one entry per must-test constraint/guardrail, each with an id and category). Follow references/analyzing-the-agent.md. Never upload the code.references/user-guidance.md (append a # Test Focus to description.md, and bias authoring). Focus is additive — it deepens chosen risks but never drops the per-risk coverage floor. If they truly have no preference, generate broad and say so.description.md and the focus, generating the persona / mood / situation variety from your own judgment (this version ships no attribute libraries). Guarantee coverage: every risks.yaml item gets ≥1 dedicated scenario, written with the shape that actually exercises it, and tagged with covers: [<risk id>, …]. Follow references/writing-scenarios.md (schema, the "Party A talks to the agent" rules, no prior state, no real PII, outcome-based expectations, the adversarial-shape taxonomy, the coverage check, don't write bad tests). Write them to authored.yaml. Add any user-pinned must-tests here too.python scripts/build_scenarios.py assemble --in authored.yaml --agent-description-file description.md --risks risks.yaml --strict --out scenarios.yaml
(validates the schema, fails if any risk is uncovered, and emits the YAML scenarios file lk agent simulate --scenarios loads). Fix gaps and re-run until it passes.lk agent simulate --scenarios scenarios.yaml (confirm exact flags with --help; needs the SDK/auth noted in the beta block). Show the user the results and offer to re-roll, re-focus, or add scenarios.Reuse saved scenarios.yaml files as a regression suite — re-run them after prompt/model/tool changes.
build_scenarios.py handle assembly + the coverage check; you do the reading, the judgement, the diversity, and the authoring.This skill is the method (no bundled libraries — you supply diversity yourself). The exact lk agent simulate flags, the CI wait/fail flag, the minimum SDK version, and the dashboard come from live sources because they change — use lk agent simulate --help and (post-beta) lk docs / the LiveKit MCP server. A wrong flag wastes a run; look it up rather than guessing.
Once a run completes, read the per-scenario pass/fail, the run summary, and the transcripts of failures. Fix the agent where a failure is real (and re-run); recognize when a failure is actually a bad scenario and fix the scenario instead. Keep this lightweight — modern models are already good at the fix step; the durable value of this skill is the scenarios you generate and keep.
Get started with chainctlchainctl skill install public/livekit/livekit-simulations:latest
Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.
skills.cgr.dev/public/github.com/livekit/skills/livekit-simulations:latest
MIT
HARDENING.md
LICENSE
SKILL.md
references/analyzing-the-agent.md
references/user-guidance.md
references/writing-scenarios.md
scripts/build_scenarios.py