mathews-tom/armory/benchmark-runner

Claude Code and agent skill by mathews-tom/armory

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Designs structured benchmarks comparing algorithms, models, or implementations with metrics, test cases, hardware context, and reproduction steps. Triggers on: "benchmark", "compare performance", "which is faster", "latency comparison", "run benchmark", "throughput test", "speed test".

Install

npx vskill@latest install mathews-tom/armory/benchmark-runner

SKILL.md

Benchmark Runner

Standardizes performance comparison methodology: metric selection, test case design, environment capture, result formatting, and tradeoff analysis. Produces reproducible benchmark reports that support informed decisions — not just "A is faster than B" but "A is faster for small inputs while B scales better."

Reference Files

FileContentsLoad When
references/metric-selection.mdMetric catalog (latency percentiles, throughput, memory, accuracy), selection criteria per task typeAlways
references/test-case-design.mdRepresentative input selection, scale variation, edge case coverage, warmup strategiesAlways
references/environment-capture.mdHardware/software context recording, reproducibility requirements, variance controlAlways
references/statistical-rigor.mdSample sizing, variance measurement, significance testing, outlier handlingResults need statistical validation

Prerequisites

  • Clear candidates to compare (at least 2)
  • Access to run or observe the candidates (code, API, or existing results)
  • Representative workload definition

Workflow

Phase 1: Define Scope
  1. What are the candidates? — Name each candidate precisely, including version.

"Python dict vs Redis" is too vague. "Python 3.12 dict (in-process) vs Redis 7.2 (localhost, TCP)" is testable.

  1. What claims need validation? — "A is faster" → faster at what? For what input

size? Under what load? Benchmark design flows from the specific claim.

  1. What is the decision context? — Why does this comparison matter? This determines

which metrics are most important.

Phase 2: Select Metrics

Choose metrics that match the decision context:

Metric CategorySpecific MetricsWhen Important
LatencyP50, P95, P99, mean, std devUser-facing operations, API calls
Throughputops/sec, tokens/sec, MB/secBatch processing, streaming
MemoryPeak RSS, avg RSS, allocation rateResource-constrained environments
AccuracyF1, BLEU, exact match, precision/recallML models, algorithms with quality tradeoffs
Cost$/1K operations, $/hour, $/GBCloud services, API comparisons
StartupTime to first operation, cold startServerless, CLI tools

Select 2-4 metrics. More than 4 makes comparison tables unreadable.

Phase 3: Design Test Cases

Create a matrix of inputs that reveal performance characteristics:

  1. Scale variation — Small, medium, large inputs. Performance often changes

non-linearly with scale.

  1. Representative data — Use realistic inputs, not synthetic best-case data.
  2. Edge cases — Empty input, maximum size, adversarial input.
  3. Warmup — Exclude JIT compilation, cache warming, and connection establishment

from measurements. Run N warmup iterations before recording.

Phase 4: Specify Environment

Record everything needed to reproduce the results:

  1. Hardware — CPU model, core count, RAM size, GPU model (if applicable)
  2. Software — OS version, language runtime version, dependency versions
  3. Configuration — Thread count, batch size, connection pool size, cache settings
  4. Isolation — What else was running? Background processes affect results.
Phase 5: Structure Results

Produce comparison tables with clear winners per metric, followed by tradeoff analysis.

Output Format

`text
# Benchmark: {Descriptive Title}
**Date:** {YYYY-MM-DD}
**Hardware:** {CPU}, {RAM}, {GPU if applicable}
**Software:** {runtime versions}
**Configuration:** {key settings that affect results}
## Candidates
| # | Candidate | Version | Configuration |
|---|-----------|---------|---------------|
| A | {name} | {version} | {relevant config} |
| B | {name} | {version} | {relevant config} |
## Test Cases
| # | Name | Input Size | Description | Warmup | Iterations |
|---|------|------------|-------------|--------|------------|
| 1 | Small | {size} | {what it represents} | {N} | {N} |
| 2 | Medium | {size} | {what it represents} | {N} | {N} |
| 3 | Large | {size} | {what it represents} | {N} | {N} |
## Results
### Latency (ms, lower is better)
| Test Case | A (P50 / P95 / P99) | B (P50 / P95 / P99) | Winner |
|-----------|---------------------|---------------------|--------|
| Small | {values} | {values} | {A or B} |
| Medium | {values} | {values} | {A or B} |
| Large | {values} | {values} | {A or B} |
### Memory (MB, lower is better)
| Test Case | A (Peak) | B (Peak) | Winner |
|-----------|----------|----------|--------|
| Small | {value} | {value} | {A or B} |
| Medium | {value} | {value} | {A or B} |
| Large | {value} | {value} | {A or B} |
## Analysis
### Overall Winner
**{Candidate}** wins on {N} of {M} metrics across all test cases.
### Tradeoff Summary
- **Choose A when:** {conditions where A is the better choice}
- **Choose B when:** {conditions where B is the better choice}
### Caveats
- {Limitation of this benchmark}
- {Condition under which results may differ}
## Reproduction

Environment setup

{commands to recreate the environment}

Run benchmark

{commands to execute the benchmark}

`

Configuring Scope

ModeCandidatesDepthWhen to Use
quick2 candidates, 1-2 metricsSingle test case, no statisticsRough comparison, sanity check
standard2-3 candidates, 2-4 metrics3 test cases, mean + std devDefault for most comparisons
rigorousAny count, full metric suiteMultiple test cases, percentiles, significance testsPublication, critical decisions

Calibration Rules

  1. Measure, don't guess. Intuition about performance is unreliable. "Obviously

faster" is not a benchmark result.

  1. Apples to apples. Candidates must be compared under identical conditions.

Different hardware, configuration, or input data invalidates the comparison.

  1. Report variance, not just means. A mean of 50ms with std dev of 100ms is not

the same as a mean of 50ms with std dev of 2ms. Always report spread.

  1. Warm up before measuring. First-run performance includes JIT, cache warming,

and connection setup. Exclude warmup iterations from results.

  1. Representative inputs only. Benchmarking with synthetic best-case input is

misleading. Use data that resembles production workloads.

  1. State the winner per metric, not overall. "A is better" is lazy. "A has lower

latency; B uses less memory" is useful.

Error Handling

ProblemResolution
Cannot run candidates locallyDesign the benchmark specification. Document what to measure and how. The user executes separately.
Results are noisy (high variance)Increase iteration count. Check for background processes. Use dedicated hardware or containers for isolation.
Candidates serve different purposesAcknowledge that the comparison is partial. Benchmark only the overlapping functionality.
No baseline existsEstablish one candidate as the baseline. Report relative performance (e.g., "B is 1.3x faster than A").
Hardware context unavailableDocument what is known. Note that results may not be reproducible without full context.

When NOT to Benchmark

Push back if:

  • The comparison is not performance-related (feature comparison → use a decision matrix or ADR instead)
  • The candidates are fundamentally different tools (comparing a database to a message queue)
  • The user wants to benchmark trivial operations (comparing two string concatenation methods in Python)
  • Results from others already exist and conditions match — link to existing benchmarks instead

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
327
Repository forks
51
7-day trend score
29

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/mathews-tom/armory/benchmark-runner/badge)](https://verified-skill.com/skills/mathews-tom/armory/benchmark-runner)

Something wrong with this skill or its page? Tell us.