opencode-skills-collection 4.0.74 → 4.0.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +16 -1
- package/bundled-skills/claude-api/SKILL.md +4 -4
- package/bundled-skills/claude-api/curl/examples.md +5 -5
- package/bundled-skills/claude-api/java/claude-api.md +1 -1
- package/bundled-skills/claude-api/php/claude-api.md +2 -2
- package/bundled-skills/claude-api/python/claude-api/README.md +13 -13
- package/bundled-skills/claude-api/python/claude-api/batches.md +3 -3
- package/bundled-skills/claude-api/python/claude-api/files-api.md +3 -3
- package/bundled-skills/claude-api/python/claude-api/streaming.md +6 -6
- package/bundled-skills/claude-api/python/claude-api/tool-use.md +19 -19
- package/bundled-skills/claude-api/ruby/claude-api.md +3 -3
- package/bundled-skills/claude-api/shared/error-codes.md +2 -2
- package/bundled-skills/claude-api/shared/live-sources.md +1 -1
- package/bundled-skills/claude-api/shared/models.md +4 -4
- package/bundled-skills/claude-api/shared/tool-use-concepts.md +2 -2
- package/bundled-skills/claude-api/typescript/claude-api/README.md +12 -12
- package/bundled-skills/claude-api/typescript/claude-api/batches.md +2 -2
- package/bundled-skills/claude-api/typescript/claude-api/files-api.md +1 -1
- package/bundled-skills/claude-api/typescript/claude-api/streaming.md +4 -4
- package/bundled-skills/claude-api/typescript/claude-api/tool-use.md +14 -14
- package/bundled-skills/electron-drive-skill/LICENSE +21 -0
- package/bundled-skills/electron-drive-skill/README.md +172 -0
- package/bundled-skills/electron-drive-skill/SKILL.md +237 -0
- package/bundled-skills/electron-drive-skill/drive.config.json.example +10 -0
- package/bundled-skills/electron-drive-skill/package.json +28 -0
- package/bundled-skills/electron-drive-skill/scripts/daemon.mjs +352 -0
- package/bundled-skills/electron-drive-skill/scripts/drive.mjs +250 -0
- package/bundled-skills/electron-drive-skill/scripts/lib.mjs +165 -0
- package/bundled-skills/electron-drive-skill/scripts/lib.test.mjs +56 -0
- package/bundled-skills/jev-social/SKILL.md +5 -5
- package/bundled-skills/lintlang-audit/SKILL.md +100 -0
- package/bundled-skills/mcp-dependency-drift-audit/SKILL.md +169 -0
- package/bundled-skills/nexrad-mosaic-access/SKILL.md +297 -0
- package/bundled-skills/nexrad-mosaic-construction/SKILL.md +277 -0
- package/bundled-skills/nexrad-product-access/SKILL.md +258 -0
- package/bundled-skills/nexrad-radar-visualization/SKILL.md +318 -0
- package/bundled-skills/radar-satellite-analysis/SKILL.md +314 -0
- package/bundled-skills/system-prompt-lookup/SKILL.md +188 -0
- package/bundled-skills/traderspy-market-briefing/SKILL.md +132 -0
- package/bundled-skills/traderspy-market-screener/SKILL.md +182 -0
- package/bundled-skills/traderspy-market-screener/references/condition-cookbook.md +70 -0
- package/bundled-skills/traderspy-position-check/SKILL.md +130 -0
- package/bundled-skills/traderspy-position-check/references/risk-math.md +60 -0
- package/bundled-skills/traderspy-smart-money/SKILL.md +151 -0
- package/bundled-skills/traderspy-smart-money/references/exchange-notes.md +40 -0
- package/bundled-skills/traderspy-technical-analysis/SKILL.md +162 -0
- package/bundled-skills/traderspy-technical-analysis/references/derivatives-guide.md +57 -0
- package/bundled-skills/traderspy-technical-analysis/references/indicator-guide.md +47 -0
- package/bundled-skills/traderspy-trading-signals/SKILL.md +156 -0
- package/bundled-skills/traderspy-trading-signals/references/signal-fields.md +64 -0
- package/bundled-skills/unified-ai-gateway/SKILL.md +58 -16
- package/package.json +1 -1
- package/skills_index.json +657 -358
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nexrad-mosaic-construction
|
|
3
|
+
description: "Construct a quality-aware NEXRAD multi-radar mosaic from aligned single-site products with explicit coverage, beam geometry, quality weighting, overlap resolution, and provenance."
|
|
4
|
+
category: analysis
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
date_added: "2026-09-25"
|
|
9
|
+
author: ShianMike
|
|
10
|
+
tags: [weather, nexrad, mosaic, multi-radar, quality-weighting, coverage, overlap-resolution]
|
|
11
|
+
tools: [claude, cursor, gemini, codex]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# NEXRAD Mosaic Construction
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
Build a custom multi-radar composite from aligned, validated single-site data.
|
|
19
|
+
Every output pixel must have a traceable source, coverage state, and quality
|
|
20
|
+
decision. Preserve the distinction between a local analysis product and an
|
|
21
|
+
official provider mosaic.
|
|
22
|
+
|
|
23
|
+
Use this skill after products from multiple radars have been resolved. It does
|
|
24
|
+
not discover, download, or decode source files. Use `nexrad-product-access` for
|
|
25
|
+
single-site access and `nexrad-mosaic-access` when the required result is an
|
|
26
|
+
existing NOAA MRMS composite rather than a newly constructed analysis.
|
|
27
|
+
|
|
28
|
+
## When to Use This Skill
|
|
29
|
+
|
|
30
|
+
- Combine two or more radars to cover a region with overlapping or adjacent
|
|
31
|
+
fields.
|
|
32
|
+
- Construct a consistent base-reflectivity, velocity, spectrum-width, or
|
|
33
|
+
dual-polarization composite.
|
|
34
|
+
- Build a research mosaic on a common grid or for a cross-radar comparison.
|
|
35
|
+
- Compare a custom mosaic with an official MRMS product.
|
|
36
|
+
- Visualize source contributions and coverage gaps in a composite.
|
|
37
|
+
|
|
38
|
+
Do not use this skill to fetch an official MRMS product, select a single radar,
|
|
39
|
+
or claim that a simple pixel average is a physically resolved regional field.
|
|
40
|
+
|
|
41
|
+
## Define the Mosaic Contract
|
|
42
|
+
|
|
43
|
+
Record:
|
|
44
|
+
|
|
45
|
+
- product and exact units from each source;
|
|
46
|
+
- source sites, coordinates, volume start/end times, and sweeps;
|
|
47
|
+
- target region, output grid, projection, and cell size;
|
|
48
|
+
- time-matching and temporal interpolation policy;
|
|
49
|
+
- native range limits, beam width, beam height, and vertical sampling;
|
|
50
|
+
- quality-mask, clutter, attenuation, range-folding, and dealiasing policy;
|
|
51
|
+
- overlap-resolution and quality-weighting method;
|
|
52
|
+
- treatment of coastlines, terrain, blocked sectors, and missing gates;
|
|
53
|
+
- output format, metadata, and provenance requirements.
|
|
54
|
+
|
|
55
|
+
Do not combine a Level II moment and a Level III display product merely because
|
|
56
|
+
their names resemble one another. Their processing, resolution, and quality
|
|
57
|
+
semantics must be verified equivalent or the difference must be represented
|
|
58
|
+
explicitly.
|
|
59
|
+
|
|
60
|
+
## Validate and Align Source Data
|
|
61
|
+
|
|
62
|
+
Before compositing:
|
|
63
|
+
|
|
64
|
+
1. verify each site's decoded metadata, time, product, units, and quality;
|
|
65
|
+
2. convert all source fields to one declared projection and common output grid;
|
|
66
|
+
3. align source times using a documented tolerance and interpolation policy;
|
|
67
|
+
4. preserve each source's native spatial support and quality fields;
|
|
68
|
+
5. reject a source that is too stale, out of range, or outside its valid product
|
|
69
|
+
contract;
|
|
70
|
+
6. label any resampling or interpolation rather than presenting the output as
|
|
71
|
+
a native-resolution observation.
|
|
72
|
+
|
|
73
|
+
When a common time cannot be formed without excessive interpolation, use a
|
|
74
|
+
nearest time within the stated tolerance, retain the actual time difference, or
|
|
75
|
+
mark the output unavailable. Do not average distant scans into one pseudo-time
|
|
76
|
+
without showing the temporal support.
|
|
77
|
+
|
|
78
|
+
## Define the Output Quantity and Quality
|
|
79
|
+
|
|
80
|
+
For reflectivity, retain dBZ or the product's native calibrated unit and use a
|
|
81
|
+
quality-aware combination rule. Do not average dBZ as a linear physical
|
|
82
|
+
quantity without a stated rationale. For velocity, preserve positive and
|
|
83
|
+
negative radial-velocity conventions and handle dealiasing and folding before
|
|
84
|
+
compositing. For dual-polarization moments, preserve their physical units and
|
|
85
|
+
quality masks.
|
|
86
|
+
|
|
87
|
+
Keep these fields separate:
|
|
88
|
+
|
|
89
|
+
- measured or decoded value;
|
|
90
|
+
- quality or suitability score;
|
|
91
|
+
- source site and source time;
|
|
92
|
+
- beam-height or range metadata;
|
|
93
|
+
- interpolation or resampling state;
|
|
94
|
+
- coverage and no-data state.
|
|
95
|
+
|
|
96
|
+
The output should make it possible to identify which radar contributed each
|
|
97
|
+
pixel, especially near overlap boundaries.
|
|
98
|
+
|
|
99
|
+
## Select Candidate Data by Quality and Geometry
|
|
100
|
+
|
|
101
|
+
For each output cell, consider only sources that provide valid coverage at a
|
|
102
|
+
compatible time and product level. A useful selection score can include:
|
|
103
|
+
|
|
104
|
+
- lower beam height at the target location;
|
|
105
|
+
- shorter range and smaller beam width;
|
|
106
|
+
- fewer terrain or clutter artifacts;
|
|
107
|
+
- better data quality or signal-to-noise status;
|
|
108
|
+
- newer scan or smaller time difference;
|
|
109
|
+
- lower attenuation or range-folding penalty;
|
|
110
|
+
- product-specific suitability such as dual-pol quality.
|
|
111
|
+
|
|
112
|
+
The score is a modeling choice, not a universal truth. State its terms and
|
|
113
|
+
weights, normalize only comparable components, and test sensitivity to the
|
|
114
|
+
selection rule. Never hide the score behind an unexplained “best radar” rule.
|
|
115
|
+
|
|
116
|
+
## Resolve Overlaps Deterministically
|
|
117
|
+
|
|
118
|
+
Use a deterministic rule for every target cell:
|
|
119
|
+
|
|
120
|
+
1. select the source with the highest declared quality/suitability score;
|
|
121
|
+
2. apply a documented tie-breaker such as lower beam height, smaller range,
|
|
122
|
+
newer valid time, or stable site order;
|
|
123
|
+
3. preserve the selected source ID and runner-up source; or
|
|
124
|
+
4. use a physics-aware fusion method only after validating it against
|
|
125
|
+
single-site fields and reference observations.
|
|
126
|
+
|
|
127
|
+
Do not average dBZ, radial velocity, or quality fields across radars by default.
|
|
128
|
+
Blending is acceptable only with a declared product-specific rationale and
|
|
129
|
+
sensitivity analysis. Never let a blocked, stale, or invalid source win merely
|
|
130
|
+
because its numeric value is larger, larger in magnitude, or easier to
|
|
131
|
+
interpolate.
|
|
132
|
+
|
|
133
|
+
## Preserve Coverage and Quality Metadata
|
|
134
|
+
|
|
135
|
+
The mosaic should emit at least:
|
|
136
|
+
|
|
137
|
+
- value field;
|
|
138
|
+
- source-site field;
|
|
139
|
+
- source-time or time-difference field;
|
|
140
|
+
- beam-height or range-quality field when relevant;
|
|
141
|
+
- quality or suitability field;
|
|
142
|
+
- coverage and no-data mask;
|
|
143
|
+
- product, units, grid, projection, and timestamp metadata.
|
|
144
|
+
|
|
145
|
+
No-data and masked gates must remain distinguishable from a physical zero or a
|
|
146
|
+
valid low value. A blank-looking region is acceptable only if the coverage mask
|
|
147
|
+
makes its reason visible. Do not fill blocked sectors with neighboring radar
|
|
148
|
+
data without labeling the substitution.
|
|
149
|
+
|
|
150
|
+
## Handle 3D and Vertical Products
|
|
151
|
+
|
|
152
|
+
A two-dimensional mosaic must not silently mix elevation sweeps with
|
|
153
|
+
incompatible heights. For reflectivity, state the selected elevation policy
|
|
154
|
+
and range-dependent beam height. For VIL, echo top, or another 3D-derived
|
|
155
|
+
product, use the provider's product definition or a separately validated 3D
|
|
156
|
+
algorithm.
|
|
157
|
+
|
|
158
|
+
For a vertical composite, retain per-source sweep and beam-height metadata,
|
|
159
|
+
define the vertical target or column, and document the common vertical
|
|
160
|
+
coordinate. Do not call a lowest-sweep composite a column-integrated quantity
|
|
161
|
+
or compare it with a true VIL product without explaining the difference.
|
|
162
|
+
|
|
163
|
+
## Validate the Mosaic Scientifically
|
|
164
|
+
|
|
165
|
+
Inspect:
|
|
166
|
+
|
|
167
|
+
- coverage, holes, overlap seams, and domain edges;
|
|
168
|
+
- discontinuities at site boundaries;
|
|
169
|
+
- implausible values or source-selection flips;
|
|
170
|
+
- range, terrain, and beam-height artifacts;
|
|
171
|
+
- agreement with each source in non-overlap regions;
|
|
172
|
+
- comparison with an independent analysis or observation where available;
|
|
173
|
+
- sensitivity to quality weights, time tolerance, and product choice.
|
|
174
|
+
|
|
175
|
+
An aesthetically smooth mosaic can hide source disagreements. Preserve the
|
|
176
|
+
unresolved or selected-source map for scientific review. A local composite is
|
|
177
|
+
an analysis with assumptions, not ground truth.
|
|
178
|
+
|
|
179
|
+
## Coordinate with Analysis and Visualization
|
|
180
|
+
|
|
181
|
+
Use `radar-satellite-analysis` to interpret storm structure. A separate
|
|
182
|
+
feature-tracking skill may be used after the mosaic when available, but it is
|
|
183
|
+
not required for mosaic construction. Use
|
|
184
|
+
`nexrad-radar-visualization` for site products or decoded gridded products. For
|
|
185
|
+
a constructed mosaic, plot the value alongside source, quality, and coverage
|
|
186
|
+
layers and label it as a local analysis.
|
|
187
|
+
|
|
188
|
+
For an official NOAA composite, retrieve it with `nexrad-mosaic-access` and
|
|
189
|
+
preserve its product semantics instead of rebuilding it. A custom mosaic can
|
|
190
|
+
be compared with that official product, but the two must not be labeled as
|
|
191
|
+
identical.
|
|
192
|
+
|
|
193
|
+
## Examples
|
|
194
|
+
|
|
195
|
+
To combine two overlapping Level II reflectivity volumes, verify both sites,
|
|
196
|
+
sweeps, times, units, and quality; reproject them to a declared grid; then
|
|
197
|
+
select a source per cell using a documented rule based on beam height, range,
|
|
198
|
+
time difference, and quality. Preserve source and coverage arrays beside the
|
|
199
|
+
reflectivity field, and inspect seams and each radar's non-overlap area before
|
|
200
|
+
interpreting the result.
|
|
201
|
+
|
|
202
|
+
For an MRMS comparison, retrieve the exact official product through
|
|
203
|
+
`nexrad-mosaic-access`, align its valid-time and grid semantics explicitly,
|
|
204
|
+
and report differences as product/algorithm differences rather than treating
|
|
205
|
+
either grid as ground truth.
|
|
206
|
+
|
|
207
|
+
## Output Contract
|
|
208
|
+
|
|
209
|
+
Return a custom mosaic with a clear audit trail:
|
|
210
|
+
|
|
211
|
+
1. source radar sites, product or moment, units, volume times, and quality;
|
|
212
|
+
2. output domain, grid, projection, cell size, and time policy;
|
|
213
|
+
3. source-selection or fusion rule and its parameters;
|
|
214
|
+
4. value, source, quality, beam-height/range, and coverage layers;
|
|
215
|
+
5. rejected sources and cells with reasons;
|
|
216
|
+
6. validation results and sensitivity to major construction choices;
|
|
217
|
+
7. scientific limitations and distinction from official MRMS products; and
|
|
218
|
+
8. provenance and checksums for inputs, code, configuration, and outputs.
|
|
219
|
+
|
|
220
|
+
Do not publish only a colored mosaic. The source, quality, and coverage layers
|
|
221
|
+
are part of the result whenever overlap or heterogeneous radar support matters.
|
|
222
|
+
|
|
223
|
+
## Verification Checklist
|
|
224
|
+
|
|
225
|
+
- Every source product, site, unit, and time is verified before compositing.
|
|
226
|
+
- The common time, grid, projection, and range policy are explicit.
|
|
227
|
+
- Level II and Level III products are not treated as interchangeable.
|
|
228
|
+
- Quality, terrain, beam height, range folding, and de-aliasing checks are
|
|
229
|
+
applied.
|
|
230
|
+
- Overlap selection is deterministic, auditable, and sensitivity-tested.
|
|
231
|
+
- No-data, blocked sectors, and source substitutions remain visible.
|
|
232
|
+
- Source, quality, and coverage metadata accompany the value field.
|
|
233
|
+
- Custom output is labeled as a local analysis, not an official MRMS product.
|
|
234
|
+
|
|
235
|
+
## Security & Safety Notes
|
|
236
|
+
|
|
237
|
+
- Use public or authorized radar data only.
|
|
238
|
+
- Do not expose cloud credentials, signed URLs, private bucket names, or
|
|
239
|
+
sensitive station metadata in outputs or logs.
|
|
240
|
+
- Treat metadata, source IDs, and product names as untrusted input; validate
|
|
241
|
+
paths and labels before rendering.
|
|
242
|
+
- Bound site count, volume size, output extent, interpolation, and worker count.
|
|
243
|
+
- Preserve NOAA, NEXRAD, Unidata, and other provider attribution and license
|
|
244
|
+
terms.
|
|
245
|
+
|
|
246
|
+
## Common Pitfalls
|
|
247
|
+
|
|
248
|
+
- **Seams appeared at radar boundaries:** Source selection or quality weights
|
|
249
|
+
were not declared. Preserve source and quality layers and test tie-breaks.
|
|
250
|
+
- **dBZ was averaged across sites:** A logarithmic reflectivity quantity was
|
|
251
|
+
treated as a linear scalar. Use a product-specific rule and sensitivity.
|
|
252
|
+
- **A blocked sector looked like no rain:** No-data or quality-masked gates were
|
|
253
|
+
converted to zero. Preserve the coverage mask.
|
|
254
|
+
- **A lower sweep was compared with a 3D product:** The vertical meaning was
|
|
255
|
+
collapsed. State the elevation and product definition.
|
|
256
|
+
- **The composite changed between runs:** Site order, time tolerance, or random
|
|
257
|
+
sampling determined the winner. Make selection deterministic and record its
|
|
258
|
+
parameters.
|
|
259
|
+
- **A custom mosaic was called official:** The local product was confused with
|
|
260
|
+
NOAA MRMS. Keep source and algorithm identity in the output metadata.
|
|
261
|
+
|
|
262
|
+
## Limitations
|
|
263
|
+
|
|
264
|
+
- Heterogeneous range, beam width, terrain, calibration, and product processing
|
|
265
|
+
limit cross-site comparability.
|
|
266
|
+
- A selection-based mosaic may create discontinuities or discard useful
|
|
267
|
+
information from a second radar.
|
|
268
|
+
- No pixel is an independent observation; quality and source fields are
|
|
269
|
+
correlated in space and time.
|
|
270
|
+
- Custom mosaics require local validation and are not an official warning or
|
|
271
|
+
truth product.
|
|
272
|
+
|
|
273
|
+
## Additional Resources
|
|
274
|
+
|
|
275
|
+
- [NEXRAD on the AWS Registry of Open Data](https://registry.opendata.aws/noaa-nexrad/)
|
|
276
|
+
- [NOAA MRMS 2D product directory](https://mrms.ncep.noaa.gov/2D/)
|
|
277
|
+
- [NOAA Radar Operations Center interface documents](https://www.roc.noaa.gov/wsr88d/BuildInfo/Files.aspx)
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nexrad-product-access
|
|
3
|
+
description: "Discover and access NEXRAD data for a selected radar site, time, product, or Level II moment using completed archive volumes, real-time chunks, or supported Level III sources with metadata validation."
|
|
4
|
+
category: data
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
date_added: "2026-09-25"
|
|
9
|
+
author: ShianMike
|
|
10
|
+
tags: [weather, nexrad, level-ii, level-iii, radar-products, single-site, aws-s3]
|
|
11
|
+
tools: [claude, cursor, gemini, codex]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# NEXRAD Product Access
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
Select and retrieve the correct NEXRAD data for one radar site, UTC time, and
|
|
19
|
+
requested product or Level II moment. Keep archive volumes, real-time chunks,
|
|
20
|
+
and Level III products distinct because they have different availability and
|
|
21
|
+
decoding contracts.
|
|
22
|
+
|
|
23
|
+
Use `noaa-radar-satellite-fetching` for common NOAA archive discovery and
|
|
24
|
+
download mechanics when that skill is available. This skill provides the
|
|
25
|
+
NEXRAD-specific Level II/III selection contract. Use
|
|
26
|
+
`nexrad-mosaic-access` when the requested result is a precomputed multi-radar
|
|
27
|
+
composite rather than one site's data.
|
|
28
|
+
|
|
29
|
+
## When to Use This Skill
|
|
30
|
+
|
|
31
|
+
- Fetch a completed NEXRAD Level II volume from the historical archive.
|
|
32
|
+
- Follow or assemble real-time Level II chunks for a named site.
|
|
33
|
+
- Retrieve selected real-time Level III products or use an operational Level
|
|
34
|
+
III feed.
|
|
35
|
+
- Select a product such as reflectivity, velocity, spectrum width, echo top,
|
|
36
|
+
vertically integrated liquid, or a supported dual-polarization product.
|
|
37
|
+
- Select a particular Level II moment, elevation sweep, or volume interval.
|
|
38
|
+
- Restrict access to one radar site and reject composite or neighboring-site
|
|
39
|
+
data.
|
|
40
|
+
|
|
41
|
+
Do not turn a Level II moment name into a Level III product code by assumption.
|
|
42
|
+
The two levels have different processing and distribution contracts.
|
|
43
|
+
|
|
44
|
+
## Current Public NEXRAD Resources
|
|
45
|
+
|
|
46
|
+
The current NEXRAD-on-AWS registry documents these public resources in
|
|
47
|
+
`us-east-1`:
|
|
48
|
+
|
|
49
|
+
| Need | Resource | Contract |
|
|
50
|
+
| --- | --- | --- |
|
|
51
|
+
| Historical completed Level II volumes | `s3://unidata-nexrad-level2/` | Archive volumes organized by UTC date and site. |
|
|
52
|
+
| Real-time Level II chunks | `s3://unidata-nexrad-level2-chunks/` | Chunks that must be assembled and validated as volumes. |
|
|
53
|
+
| Selected real-time Level III data | `s3://unidata-nexrad-level3/` | Selected Level III products, not a promise of a complete historical archive. |
|
|
54
|
+
|
|
55
|
+
Unidata documentation also describes operational Level III distribution through
|
|
56
|
+
the `NEXRAD3` LDM/NOAAPort feed. Resolve the current source for the requested
|
|
57
|
+
Level III product instead of assuming that a real-time S3 bucket is a complete
|
|
58
|
+
archive.
|
|
59
|
+
|
|
60
|
+
The current AWS registry identifies `unidata-nexrad-level2` as the archive and
|
|
61
|
+
says the former `noaa-nexrad-level2` bucket was deprecated after September 1,
|
|
62
|
+
2025. Verify the live registry before access because provider resources can
|
|
63
|
+
change.
|
|
64
|
+
|
|
65
|
+
## Define the Access Contract
|
|
66
|
+
|
|
67
|
+
Resolve and record:
|
|
68
|
+
|
|
69
|
+
- one four-character NEXRAD site such as `KTLX`;
|
|
70
|
+
- the requested instant or bounded interval in UTC;
|
|
71
|
+
- nearest-at-or-before, nearest-in-either-direction, or interval-overlap policy;
|
|
72
|
+
- data level: Level II, Level III, or an explicitly mixed workflow;
|
|
73
|
+
- product or moment, unit, sweep or scan angle, and whether all sweeps or the
|
|
74
|
+
lowest requested sweep are needed;
|
|
75
|
+
- archive, real-time, or operational-feed source;
|
|
76
|
+
- maximum lookback, maximum probes, and acceptable latency;
|
|
77
|
+
- required metadata, quality masks, and output form;
|
|
78
|
+
- whether the product must come from that one site only.
|
|
79
|
+
|
|
80
|
+
If the user supplies only a display concept such as “base reflectivity,”
|
|
81
|
+
resolve it against a current official product or Level II moment definition.
|
|
82
|
+
Do not guess a Level III code or claim that every named display is available in
|
|
83
|
+
the same feed.
|
|
84
|
+
|
|
85
|
+
## Access Historical Level II Volumes
|
|
86
|
+
|
|
87
|
+
1. Validate the site against an allowlist or a current NEXRAD site inventory.
|
|
88
|
+
2. Resolve the exact UTC day and site prefix from current dataset
|
|
89
|
+
documentation. Do not infer the key layout from a filename example.
|
|
90
|
+
3. List only that documented prefix, paginating within a bounded key count.
|
|
91
|
+
4. Parse the documented volume timestamp and site from each candidate key.
|
|
92
|
+
5. Select by the time policy, then request metadata for the exact key.
|
|
93
|
+
6. Require a nonzero stable object. If publication may still be occurring,
|
|
94
|
+
repeat the metadata check until size and object identity remain unchanged.
|
|
95
|
+
7. Download to a temporary path, verify received bytes, compute a local
|
|
96
|
+
SHA-256 when provenance requires it, and open with a format-aware reader.
|
|
97
|
+
8. Verify the decoded site, volume start/end time, sweeps, moments, dimensions,
|
|
98
|
+
and quality fields before promoting the file into a valid cache entry.
|
|
99
|
+
|
|
100
|
+
The archive is the preferred source for retrospective work because each object
|
|
101
|
+
is a completed volume. Do not substitute a real-time chunk for an archive volume
|
|
102
|
+
when the consumer expects a self-contained volume.
|
|
103
|
+
|
|
104
|
+
## Access Real-Time Level II Chunks
|
|
105
|
+
|
|
106
|
+
Treat each chunk as a fragment with ordering and completion dependencies.
|
|
107
|
+
|
|
108
|
+
1. Resolve the current chunk prefix for the requested site.
|
|
109
|
+
2. Parse volume and chunk identity from documented key fields.
|
|
110
|
+
3. Discover the complete chunk sequence with a bounded lookback.
|
|
111
|
+
4. Verify required chunks, byte identities, and scan metadata.
|
|
112
|
+
5. Assemble into a new temporary file without overwriting the source chunks.
|
|
113
|
+
6. Decode the assembled object and verify site, volume time, sweep count,
|
|
114
|
+
moments, and quality fields.
|
|
115
|
+
7. Publish the verified volume atomically and record which chunks formed it.
|
|
116
|
+
|
|
117
|
+
If a chunk is late, duplicated, discontinuous, or from another site, reject or
|
|
118
|
+
quarantine the sequence. A file that opens without proving complete volume
|
|
119
|
+
metadata is not a verified replacement for an archive volume.
|
|
120
|
+
|
|
121
|
+
## Select Level II Moments and Sweeps
|
|
122
|
+
|
|
123
|
+
Level II exposes moments within a volume rather than independent Level III
|
|
124
|
+
display products. Depending on the radar configuration and volume, common
|
|
125
|
+
moments can include reflectivity, velocity, spectrum width, and supported
|
|
126
|
+
dual-polarization quantities.
|
|
127
|
+
|
|
128
|
+
Before extraction, record:
|
|
129
|
+
|
|
130
|
+
- the exact moment name used by the decoded file;
|
|
131
|
+
- its calibrated physical unit and scale or offset;
|
|
132
|
+
- the elevation-angle policy and actual beam height at the display range;
|
|
133
|
+
- the quality fields for range folding, clutter, dealiasing, or invalid gates;
|
|
134
|
+
- whether the output requires all sweeps, a nearest sweep, or a sweep search
|
|
135
|
+
based on target height.
|
|
136
|
+
|
|
137
|
+
Do not assume that a moment is present in every volume or at every sweep.
|
|
138
|
+
Report an absent moment or incomplete sweep rather than converting a different
|
|
139
|
+
moment into its place.
|
|
140
|
+
|
|
141
|
+
## Access Level III Products
|
|
142
|
+
|
|
143
|
+
Level III is a processed radar product with its own product code, scan strategy,
|
|
144
|
+
projection, resolution, and update cadence. Resolve the official current code
|
|
145
|
+
and source for the requested semantic product.
|
|
146
|
+
|
|
147
|
+
For selected real-time data, inspect only the documented Level III prefix for
|
|
148
|
+
the site and time window. For broader operational access, use a current LDM or
|
|
149
|
+
NOAAPort product feed that explicitly carries the requested NEXRAD3 product.
|
|
150
|
+
|
|
151
|
+
After retrieval, verify:
|
|
152
|
+
|
|
153
|
+
- site or coverage area;
|
|
154
|
+
- product code and product description;
|
|
155
|
+
- observation or scan time;
|
|
156
|
+
- projection, dimensions, and data level;
|
|
157
|
+
- units, scale/offset, missing values, and quality flags;
|
|
158
|
+
- whether the product is a single-site, sector, or multi-site product.
|
|
159
|
+
|
|
160
|
+
Never decode a Level III file using a Level II volume contract. Never label a
|
|
161
|
+
single-site Level III product as a mosaic merely because several scans or pixels
|
|
162
|
+
are present.
|
|
163
|
+
|
|
164
|
+
## Examples
|
|
165
|
+
|
|
166
|
+
For a request such as “Get the latest completed KTLX Level II volume before
|
|
167
|
+
2026-09-25 12:00 UTC,” state the site, cutoff, selection policy, archive
|
|
168
|
+
source, and selected volume time. Retrieve that exact object, then confirm the
|
|
169
|
+
decoded volume reports KTLX and the expected scan interval before handing it
|
|
170
|
+
to a plotting or analysis step.
|
|
171
|
+
|
|
172
|
+
For “KTLX base reflectivity,” resolve whether the request means the Level II
|
|
173
|
+
reflectivity moment or a Level III processed product. Report the chosen level,
|
|
174
|
+
moment/product identifier, sweep, units, and observed scan time.
|
|
175
|
+
|
|
176
|
+
## Return an Access Record
|
|
177
|
+
|
|
178
|
+
Return a structured record before decoding begins:
|
|
179
|
+
|
|
180
|
+
```json
|
|
181
|
+
{
|
|
182
|
+
"site": "KTLX",
|
|
183
|
+
"requested_time_utc": "2026-09-25T12:00:00Z",
|
|
184
|
+
"selection_policy": "nearest-at-or-before",
|
|
185
|
+
"selected_time_utc": "2026-09-25T11:59:54Z",
|
|
186
|
+
"data_level": "Level II",
|
|
187
|
+
"product_or_moment": "REF",
|
|
188
|
+
"source": "s3://unidata-nexrad-level2/EXACT_DOCUMENTED_KEY",
|
|
189
|
+
"object_identity": {
|
|
190
|
+
"etag": "OPAQUE_IDENTITY",
|
|
191
|
+
"last_modified": "2026-09-25T12:01:02Z",
|
|
192
|
+
"size_bytes": 12345678
|
|
193
|
+
},
|
|
194
|
+
"single_site_required": true
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Also record rejected candidates, unavailable products, chunk dependencies, and
|
|
199
|
+
the rule that prevented cross-site or cross-product substitution.
|
|
200
|
+
|
|
201
|
+
## Verification Checklist
|
|
202
|
+
|
|
203
|
+
- The four-character site and site inventory entry are validated.
|
|
204
|
+
- All timestamps are UTC and the scan-selection policy is explicit.
|
|
205
|
+
- The source matches the requested level and product or moment.
|
|
206
|
+
- Historical access uses completed Level II archive volumes when appropriate.
|
|
207
|
+
- Real-time chunks are assembled into a verified complete volume.
|
|
208
|
+
- Level III products are resolved through a documented current source.
|
|
209
|
+
- Decoded metadata confirms site, time, product, dimensions, and quality fields.
|
|
210
|
+
- No result from another site or product is silently substituted.
|
|
211
|
+
- Source identity, local hash, and retrieval time are recorded when required.
|
|
212
|
+
|
|
213
|
+
## Security & Safety Notes
|
|
214
|
+
|
|
215
|
+
- Use public or authorized NEXRAD resources only.
|
|
216
|
+
- Do not embed cloud credentials, signed URLs, tokens, or private endpoint
|
|
217
|
+
details in records or logs.
|
|
218
|
+
- Treat site identifiers, product names, metadata, and object keys as untrusted
|
|
219
|
+
input when constructing paths or commands.
|
|
220
|
+
- Bound prefix width, pagination, time lookback, response size, concurrency, and
|
|
221
|
+
disk use.
|
|
222
|
+
- Preserve NOAA, NEXRAD, Unidata, and source-provider attribution and license
|
|
223
|
+
terms.
|
|
224
|
+
|
|
225
|
+
## Common Pitfalls
|
|
226
|
+
|
|
227
|
+
- **The old bucket returned no data:** A tutorial used the deprecated
|
|
228
|
+
`noaa-nexrad-level2` route. Resolve the current archive from the live AWS
|
|
229
|
+
registry.
|
|
230
|
+
- **A real-time file would not decode:** Individual chunks were treated as a
|
|
231
|
+
completed volume. Assemble and validate the full sequence first.
|
|
232
|
+
- **The product selector guessed the wrong item:** A display name was converted
|
|
233
|
+
to an assumed Level III code. Resolve a current official product definition.
|
|
234
|
+
- **A reflectivity request returned velocity:** Product or moment identity was
|
|
235
|
+
not carried through decoding and extraction.
|
|
236
|
+
- **The latest run was silently older:** Candidate time and tolerance were not
|
|
237
|
+
recorded. Return the selected time and rejected candidates.
|
|
238
|
+
- **Data from a neighboring radar appeared:** A regional key search ignored the
|
|
239
|
+
single-site contract. Filter and validate by exact site identity.
|
|
240
|
+
|
|
241
|
+
## Limitations
|
|
242
|
+
|
|
243
|
+
- Availability, feed contents, product definitions, and archive retention can
|
|
244
|
+
change. Verify current official documentation.
|
|
245
|
+
- The selected real-time Level III resource is not a complete historical
|
|
246
|
+
archive contract.
|
|
247
|
+
- Accessing a file does not prove that its coverage is scientifically suitable
|
|
248
|
+
at a requested location; beam height, terrain, range, and quality still matter.
|
|
249
|
+
- Multi-radar composite access belongs in `nexrad-mosaic-access`.
|
|
250
|
+
- Scientific interpretation belongs in `radar-satellite-analysis`.
|
|
251
|
+
|
|
252
|
+
## Additional Resources
|
|
253
|
+
|
|
254
|
+
- [NEXRAD on the AWS Registry of Open Data](https://registry.opendata.aws/noaa-nexrad/)
|
|
255
|
+
- [NOAA ROC Level II data types](https://www.roc.noaa.gov/level-two-data-types.php)
|
|
256
|
+
- [NOAA ROC Level III data types](https://www.roc.noaa.gov/level-three-data-types.php)
|
|
257
|
+
- [Unidata LDM feeds](https://unidata.github.io/awips2/edex/ldm/)
|
|
258
|
+
- [Unidata GEMPAK NIDS products](https://unidata.github.io/gempak/man/prog/gpnids.html)
|