Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when investigating or improving performance, latency, throughput, memory use, CPU use, startup time, or bundle size. Establishes a repeatable baseline and profiles the measured bottleneck before any optimization.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 28% | 0% |
A thermometer turns "slow" into a workload, a metric, and a measured boundary. No optimization starts from intuition alone. The same input, environment, and sampling method must exist before and after the change.
No performance claim without a repeatable baseline and a comparable after measurement. A faster result from a different workload, warm cache, machine, dataset, build mode, or sampling method is not a comparison.
Correctness, security, durability, and accessibility remain requirements. Trading one away for speed requires explicit user approval and must appear in the report.
Turn the complaint into one primary metric:
Name the workload, environment, dataset size, cache state, build mode, and target. If no target exists, use the baseline to quantify the opportunity and report the measured result without inventing a service-level objective.
Prefer the repository's existing benchmark, load test, profiler, tracing setup, or production-like fixture. Otherwise build the smallest repeatable command that exercises the reported path.
The command must produce machine-readable or plainly comparable output. Record tool versions and material environment settings. Avoid a new benchmark framework when a stable existing command can measure the path.
A single timing is a smoke check, not a performance baseline.
Use the profiler or tracing tool suited to the metric:
Identify the measured bottleneck and its share of the total. If the hot path is external or outside the user's scope, stop and report it rather than polishing a cold path.
State the mechanism and expected effect before changing code:
textThe profile attributes <measured share> to <operation> because <mechanism>. Changing <one boundary> should improve <primary metric> without changing <contract>.
Make one minimal change. Do not bundle cleanup, a new architecture, three caches, and a concurrency rewrite into one result that cannot be explained.
Repeat the exact baseline procedure after the change:
Compare median and spread, not only the best run. If the claimed improvement is smaller than run-to-run noise, the result is inconclusive. Revert the optimization or report it as unproven.
Run the focused and full correctness checks that cover the changed path. Inspect error handling, ordering, consistency, resource limits, and concurrency behavior when relevant.
Use check before reporting a gain. Quote the baseline samples, after samples, comparison, profiler evidence, and correctness command.
markdown# thermometer: <operation> (<date>) ## Workload - Command: - Environment: - Dataset and cache state: - Primary metric and target: ## Baseline - Raw samples: - Median and spread: ## Profile - Measured bottleneck: - Share of total: ## Change - Hypothesis: - Minimal implementation: ## Result - Raw samples: - Median and spread: - Relative and absolute change: ## Correctness - Commands and results: ## Limits - Noise, environment gaps, and the measured ceiling:
Stop when:
Other measured skills in the registry, with their headline benchmark lift.