run-scenario

Drive reproducible HTTP request scenarios against local services and record them verbatim for telemetry comparison.

9|2|Updated Aug 16, 2026
One-click install
npx skills add https://github.com/using-system/oddyssey --skill run-scenario-using-system
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: run-scenario
Source: https://github.com/using-system/oddyssey/tree/main/.apm/skills/run-scenario
Command: npx skills add https://github.com/using-system/oddyssey --skill run-scenario-using-system

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Before/after performance comparisons fail when traffic generation is not reproducible: ad-hoc curl loops and hand-written pollers produce different commands each run, so two runs measure two different things. This Skill drives a fixed, replayable request scenario against a running service and records it verbatim, so the telemetry from an observation run can be compared against a verification run after a fix. ## Core Features & Use Cases - Scripted scenario driving: The shipped drive_scenario.py script sends warmup and load requests with deterministic identity headers (User-Agent and W3C traceparent derived from the run slug), records every request row, and prints a verbatim run record. - Stored k6 benchmark replay: Replays benchmarks stored under .odd/benchmarks/<name>/ via the k6-guides replay script, with stage-boundary arithmetic, ramp segmentation, and rules for reading k6's exit codes and summaries as evidence rather than verdicts. - Run identity and isolation: References define how to qualify queries by run identity (service.instance.id, User-Agent, trace-id prefix), handle occupied ports, forbidden resets, remote targets, and long or non-deterministic scenarios. - Use Case: After fixing a slow endpoint, re-run the exact recorded command from the observation report's Commands: line and compare p95 latency measured from the same trace identity, counts, and concurrency. ## Quick Start Ask the agent to run the run-scenario skill to drive 30 requests each against GET /api/users and POST /api/orders on http://127.0.0.1:8080 with run slug "baseline-01" and record the scenario for later replay.

Frequently Asked Questions about run-scenario

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I generate reproducible load against a local HTTP service?

Run the shipped drive_scenario.py script with a base URL, run slug, prompt name, and operations like 'GET /api/users'. It sends warmup and load requests with deterministic identity headers and prints a verbatim record you can re-run after a fix.

How many requests do I need before quoting a p95 latency?

At least 30 requests per operation before quoting a p95, and around 100 before quoting a p99. Below those counts, report observations rather than quantiles, since small samples make percentile values meaningless.

Can I replay a stored k6 benchmark instead of ad-hoc requests?

Yes. Benchmarks stored under .odd/benchmarks/<name>/ are replayed through the k6-guides replay script, never with a hand-built k6 command. The replay runs detached, and stage boundaries are computed from the first request row.

Why does the script refuse a localhost base URL?

On dual-stack hosts, localhost may resolve to a different listener than the one you intend to drive. The script requires 127.0.0.1 with an explicit port so the measured process is unambiguous.

What happens when a scenario run fails or partially completes?

Failed requests are recorded as data with their status counts, never silently retried. The record includes the failures so the verification run can compare against the actual observed behavior.

When should I not reset the observability backend before a run?

Skip the reset when the run carries its own identity (a service.instance.id slug) and queries are qualified by it, or when a reset is forbidden because it would destroy shared history or fail to reapply creation-time credentials.