weather-pipeline-performance-diagnosis
Helps your agent identify issues in weather data workflows. It measures the performance of each step to find slowdowns.
What it does
This tool helps find out which part of a weather data fetching and processing workflow is taking too long. It measures the time for each step separately so you know exactly where the problem is before trying to fix it.
When to use it
- ✓When a weather data workflow seems slower than usual.
- ✓When a specific program is suspected of being slow, but there's no proof.
- ✓When you want to compare performance before and after making a change.
Example of what to ask your AI
“Find out which stage is slow in my weather data pipeline.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool breaks down the workflow into parts (like fetching data, processing, rendering) and measures how long each takes. This reveals the slowest part without needing to change the code itself.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add sickn33/agentic-awesome-skills --skill weather-pipeline-performance-diagnosisOr download just the file:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/weather-pipeline-performance-diagnosis/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
Weather Pipeline Performance Diagnosis
Overview
Find the stage that actually makes a weather workflow slow before optimizing it. Measure the real runtime path from source discovery through the final artifact, including optional companion data and fallback work.
This skill diagnoses latency and throughput. It does not prescribe a particular data provider, file format, decoder, or optimization.
When to Use This Skill
- A fetch, sounding, map, animation, or batch job feels slower than before.
- A parser or native backend is blamed without stage-level timing evidence.
- Local runs and packaged or hosted runs have different performance.
- A cache, provider fallback, optional enrichment, or rendering step may hide the real cost.
- A proposed performance fix needs a repeatable before-and-after comparison.
Do not activate this skill for a correctness bug unless performance is also part of the observed failure.
Reproduce the Real Path
Record one fixed workload before editing code:
- requested source, time, location, variables, and output;
- application commit and runtime version;
- active implementation or backend, including fallback reason;
- cold-cache or warm-cache state;
- machine, operating system, worker count, and relevant resource limits;
- bytes transferred and final artifact size;
- whether optional guidance, overlays, or secondary sources were enabled.
Use the same workload for the baseline and candidate measurement. A faster run with fewer inputs or a warm cache is not evidence that the original path improved.
Divide the Pipeline into Stages
At minimum, time these boundaries independently:
- request validation and source discovery;
- availability checks and fallback selection;
- network transfer or cache read;
- parsing or decoding;
- supplemental-data retrieval;
- profile, grid, or derived-value construction;
- visualization or export;
- cleanup and final publication.
Add sub-stages only where the first pass shows meaningful time. Preserve the existing behavior while instrumenting; diagnostics must not silently disable expensive work.
Lightweight Timing Example
Use a monotonic clock and emit structured records that can be compared across runs:
import json
import time
from contextlib import contextmanager
@contextmanager
def timed_stage(name, report):
started = time.perf_counter()
outcome = "ok"
try:
yield
except BaseException:
outcome = "error"
raise
finally:
report.append({
"stage": name,
"outcome": outcome,
"seconds": round(time.perf_counter() - started, 6),
})
timings = []
with timed_stage("source_discovery", timings):
source = discover_source()
with timed_stage("transfer", timings):
local_path = fetch_source(source)
with timed_stage("processing", timings):
result = build_result(local_path)
print(json.dumps(timings, sort_keys=True))
Instrument production boundaries or the same public APIs used by production. Avoid a benchmark helper that bypasses the path users report as slow.
Interpret the Evidence
- Long discovery with little transfer suggests broad listings, excessive retries, provider timeouts, or repeated availability probes.
- Long transfer with expected parsing time suggests bandwidth, object size, throttling, or failure to reuse a valid cache.
- Long parsing requires proof that the intended backend is active and that the input volume is comparable.
- Long processing after parsing points to interpolation, secondary retrieval, profile construction, or repeated computation.
- Long rendering can come from layout, rasterization, font loading, excessive redraws, or large output dimensions.
- High variance across identical runs suggests external services, contention, cold starts, garbage collection, or uncontrolled parallelism.
Measure wall time, CPU time, bytes, item counts, cache state, and worker count where they explain the result. A single total duration cannot locate a bottleneck.
Validate a Fix
- Preserve the baseline report and environment description.
- Change the smallest shared cause supported by the measurements.
- Rerun the identical workload several times in the same cache state.
- Compare the affected stage, total duration, output identity, and resource use.
- Run correctness tests for the changed path.
- Report both improvement and measurement variability.
…
FAQ
Why can't I just measure the total time?
Measuring the total time doesn't tell you which specific part is slow. It's like knowing a trip took too long, but not knowing if it was traffic, a stop, or time at the destination.
What are 'stages'?
These are the different parts of the process, such as downloading data, reading data, performing calculations, and preparing for display.
Do I need to change my code to use this?
Yes, a little. You need to add small timing measurements to each step of your process so the tool can record how long each one takes.
Details
Original description by the author
Diagnose slow weather-data workflows by measuring discovery, transfer, parsing, scientific processing, and rendering separately before changing code.
Popularity
- GitHub stars
- 48k
- Ranking position
- #4535
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
data-throughput-accelerator
Makes your agent speed up the movement of large data volumes. It finds bottlenecks and ensures data is transferred quickly and correctly.
affaan-m/ECC
inventory-demand-planning
Helps your agent predict product demand in stores. It optimizes stock and plans when to run promotions to sell more.
affaan-m/ECC
market-research
Helps your agent conduct market research and competitive analysis. Provides summaries with source attribution.
affaan-m/ECC