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,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mcp-dependency-drift-audit
|
|
3
|
+
description: "Statically audit MCP configs for mutable npm/npx package references before approval or CI, without executing discovered MCP servers."
|
|
4
|
+
category: security
|
|
5
|
+
risk: safe
|
|
6
|
+
source: "https://github.com/tomelias10/mcp-drift-check"
|
|
7
|
+
source_repo: tomelias10/mcp-drift-check
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-09-25"
|
|
10
|
+
author: tomelias10
|
|
11
|
+
tags: [mcp, ai-security, supply-chain, devsecops, sarif]
|
|
12
|
+
tools: [claude, cursor, gemini, codex, windsurf]
|
|
13
|
+
license: MIT
|
|
14
|
+
license_source: "https://github.com/tomelias10/mcp-drift-check/blob/v0/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# MCP Dependency Drift Audit
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Audit Model Context Protocol configuration files for npm/npx package references that can resolve to different code after the configuration was reviewed. The workflow is deliberately static: it reads config text, classifies version selectors, and recommends reproducibility fixes without starting discovered MCP servers.
|
|
22
|
+
|
|
23
|
+
Dependency mutability is a review-boundary signal, not proof that a package is malicious, vulnerable, or compromised.
|
|
24
|
+
|
|
25
|
+
## When to Use This Skill
|
|
26
|
+
|
|
27
|
+
- Before approving `.mcp.json`, Cursor, VS Code, GitHub Copilot, Claude, or Windsurf MCP configuration.
|
|
28
|
+
- When adding an MCP configuration gate to pull requests or CI.
|
|
29
|
+
- During an AI-agent security review where npm/npx-backed MCP servers are configured.
|
|
30
|
+
- When checking whether a previously reviewed MCP config can silently resolve to newer package code.
|
|
31
|
+
|
|
32
|
+
## How It Works
|
|
33
|
+
|
|
34
|
+
### Step 1: Locate and read MCP configs without executing them
|
|
35
|
+
|
|
36
|
+
Inspect known project paths such as `.mcp.json`, `.github/mcp.json`, `.cursor/mcp.json`, `.vscode/mcp.json`, and `.windsurf/mcp.json`, plus any MCP config explicitly supplied by the user.
|
|
37
|
+
|
|
38
|
+
Read them as text/JSON only. Never run a discovered `command` or `args` value as part of this audit. Stay inside the requested workspace by default; only include user-level/global MCP configuration if the user explicitly asks for machine-wide scope.
|
|
39
|
+
|
|
40
|
+
### Step 2: Use MCP Drift Check when already available
|
|
41
|
+
|
|
42
|
+
If `mcp-drift-check` is already installed, use the workspace-scoped mode from the intended repo root:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
mcp-drift-check scan-workspace --markdown
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
For CI evidence:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
mcp-drift-check scan-workspace --sarif mcp-drift.sarif --markdown
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
If the scanner is not installed, explain that the following command fetches the open-source scanner from GitHub and get user approval before running it:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
uvx --from git+https://github.com/tomelias10/mcp-drift-check mcp-drift-check scan-workspace --markdown
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
If the user declines network access or installation, continue with the manual rules below.
|
|
61
|
+
|
|
62
|
+
### Step 3: Apply the manual static rules
|
|
63
|
+
|
|
64
|
+
For npm/npx-style package selectors:
|
|
65
|
+
|
|
66
|
+
| Selector | Classification | Reason |
|
|
67
|
+
| --- | --- | --- |
|
|
68
|
+
| `package@1.2.3` | SAFE | Exact package version is reproducible. |
|
|
69
|
+
| bare `package` or `@scope/package` | HIGH | A later resolution can select different package code. |
|
|
70
|
+
| `package@latest` | HIGH | The selector is explicitly mutable. |
|
|
71
|
+
| `package@^1.2.0`, `~1.2.0`, `>=1.2.0`, wildcard | MEDIUM | Resolution can change within the allowed range. |
|
|
72
|
+
| local path, script, binary, unknown executable | REVIEW | npm version-drift rules do not establish update behavior. |
|
|
73
|
+
|
|
74
|
+
Treat `-y` / `--yes` as context only. It suppresses interactive confirmation but is not a vulnerability by itself.
|
|
75
|
+
|
|
76
|
+
### Step 4: Recommend remediation without inventing versions
|
|
77
|
+
|
|
78
|
+
For mutable npm/npx references, recommend pinning to an exact version that the team has actually reviewed and then updating that pin deliberately.
|
|
79
|
+
|
|
80
|
+
Do not guess the version to pin. If registry lookup is needed, explain that it requires network access and ask before querying it.
|
|
81
|
+
|
|
82
|
+
Pinning improves reproducibility. It does not establish package provenance, vulnerability status, authorization safety, prompt-injection resistance, or runtime isolation.
|
|
83
|
+
|
|
84
|
+
### Step 5: Produce a bounded report
|
|
85
|
+
|
|
86
|
+
Return:
|
|
87
|
+
|
|
88
|
+
| Config | MCP server | Package/reference | Classification | Why | Recommended next step |
|
|
89
|
+
| --- | --- | --- | --- | --- | --- |
|
|
90
|
+
|
|
91
|
+
Then state:
|
|
92
|
+
|
|
93
|
+
- No MCP servers were executed during the audit.
|
|
94
|
+
- Mutable dependency references are review/reproducibility signals, not breach claims.
|
|
95
|
+
- A clean dependency-drift result is not a complete MCP security assessment.
|
|
96
|
+
|
|
97
|
+
## Examples
|
|
98
|
+
|
|
99
|
+
### Example 1: Audit before approval
|
|
100
|
+
|
|
101
|
+
**User:** `Audit this repo's MCP config before we approve it. Do not run any MCP servers.`
|
|
102
|
+
|
|
103
|
+
**Expected shape:**
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
.mcp.json | browser | @example/browser-mcp@latest | HIGH
|
|
107
|
+
Reason: @latest can resolve to different package code later.
|
|
108
|
+
Next step: pin the exact version your team reviews and update it deliberately.
|
|
109
|
+
|
|
110
|
+
No MCP servers were executed.
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Example 2: Add a CI gate
|
|
114
|
+
|
|
115
|
+
For GitHub Actions:
|
|
116
|
+
|
|
117
|
+
```yaml
|
|
118
|
+
- uses: actions/checkout@v4
|
|
119
|
+
- uses: tomelias10/mcp-drift-check@v0
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
MCP Drift Check can also emit SARIF 2.1.0 for GitHub Code Scanning. The action defaults to workspace-only discovery; machine-wide user-level scanning remains an explicit `scan-all` choice.
|
|
123
|
+
|
|
124
|
+
## Best Practices
|
|
125
|
+
|
|
126
|
+
- ✅ Read config text only during discovery and classification.
|
|
127
|
+
- ✅ Keep the default scope to the requested workspace/repository.
|
|
128
|
+
- ✅ Separate reproducibility findings from vulnerability or compromise claims.
|
|
129
|
+
- ✅ Pin only a version the team has actually reviewed.
|
|
130
|
+
- ✅ Keep sensitive config values out of reports and public issues.
|
|
131
|
+
- ❌ Do not execute server commands found in a config to "verify" a static finding.
|
|
132
|
+
- ❌ Do not treat a clean result as a general MCP security guarantee.
|
|
133
|
+
|
|
134
|
+
## Limitations
|
|
135
|
+
|
|
136
|
+
- This workflow only covers dependency mutability/review drift for package-backed MCP configuration.
|
|
137
|
+
- It does not assess prompt injection, tool poisoning, OAuth/authorization, server implementation flaws, malware, provenance, or runtime sandboxing.
|
|
138
|
+
- Local executables and non-npm launch paths require separate review.
|
|
139
|
+
- A static config can be reproducible and still unsafe for other reasons.
|
|
140
|
+
|
|
141
|
+
## Security & Safety Notes
|
|
142
|
+
|
|
143
|
+
- The default workflow is read-only, local, and workspace-scoped.
|
|
144
|
+
- Never execute discovered MCP server commands during this audit.
|
|
145
|
+
- Never include credentials, tokens, private headers, or secret values in the output.
|
|
146
|
+
- The optional `uvx` path makes a network fetch from the declared GitHub source; obtain user approval before running it.
|
|
147
|
+
- If deeper active testing is requested, stop and establish explicit authorization and scope before any intrusive action.
|
|
148
|
+
|
|
149
|
+
## Common Pitfalls
|
|
150
|
+
|
|
151
|
+
- **Problem:** Calling an unpinned dependency a vulnerability.
|
|
152
|
+
**Solution:** Describe it as a reproducibility/review-drift signal unless separate evidence establishes security impact.
|
|
153
|
+
- **Problem:** Pinning to today's registry version without knowing what was reviewed.
|
|
154
|
+
**Solution:** Ask for the reviewed version or, with approval, reconstruct relevant package history; do not guess.
|
|
155
|
+
- **Problem:** Treating `-y` as the core finding.
|
|
156
|
+
**Solution:** Report it only as context; the version selector determines the dependency-drift classification.
|
|
157
|
+
- **Problem:** Scanning user-level MCP configs when the user only asked about one repo.
|
|
158
|
+
**Solution:** Use `scan-workspace` by default; use `scan-all` only when machine-wide scope is explicit.
|
|
159
|
+
|
|
160
|
+
## Related Skills
|
|
161
|
+
|
|
162
|
+
- `@mcp-server-security` - Broader MCP server hardening, authentication, authorization, transport, and runtime controls.
|
|
163
|
+
- `@supply-chain-security` - Broader software supply-chain assessment beyond MCP configuration.
|
|
164
|
+
- `@sast-scanning` - Static application-security analysis for source code rather than MCP launch configuration.
|
|
165
|
+
|
|
166
|
+
## Additional Resources
|
|
167
|
+
|
|
168
|
+
- [MCP Drift Check stable v0](https://github.com/tomelias10/mcp-drift-check/tree/v0) - MIT zero-execution scanner, GitHub Action, workspace-scoped mode, and SARIF output.
|
|
169
|
+
- [Public MCP dependency drift examples](https://site-creator-vinext-starter.surfaceproof.workers.dev/research/mcp-dependency-drift) - Commit-specific public configuration examples and methodology limitations.
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nexrad-mosaic-access
|
|
3
|
+
description: "Access official NOAA/NCEP MRMS radar and multisensor composites for a region and time; validate product, grid, domain, quality, timestamp, and provenance."
|
|
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, mrms, mosaic, qpe, vil, vii, mesh, composite-products]
|
|
11
|
+
tools: [claude, cursor, gemini, codex]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# NEXRAD Mosaic Access
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
Retrieve an existing NOAA/NCEP Multi-Radar/Multi-Sensor (MRMS) product without
|
|
19
|
+
confusing it with a single NEXRAD volume or a locally constructed mosaic.
|
|
20
|
+
MRMS provides timestamped 2D radar-only and multisensor products for regional
|
|
21
|
+
analysis. Select the exact product, domain, time, and file before downloading,
|
|
22
|
+
then validate the decoded grid and provenance. This skill covers access to
|
|
23
|
+
existing MRMS products; it does not build a custom multi-radar composite.
|
|
24
|
+
|
|
25
|
+
Use `nexrad-product-access` when the user needs one radar site's Level II or
|
|
26
|
+
Level III data. Use this skill when the requested object is already a mosaic or
|
|
27
|
+
multisensor analysis such as QPE, VIL, VII, or MESH.
|
|
28
|
+
|
|
29
|
+
## When to Use This Skill
|
|
30
|
+
|
|
31
|
+
- Access an official NEXRAD-derived national or regional mosaic.
|
|
32
|
+
- Retrieve MRMS radar-derived or multisensor precipitation products.
|
|
33
|
+
- Access VIL, VII, MESH, or MultiSensor QPE for a specified UTC time.
|
|
34
|
+
- Obtain a completed product for mapping or analysis without downloading every
|
|
35
|
+
contributing radar volume.
|
|
36
|
+
- Compare mosaic products while preserving product identity, generation time,
|
|
37
|
+
domain, and grid metadata.
|
|
38
|
+
|
|
39
|
+
Do not use this skill for a single-site sweep, a Level II moment, or a custom
|
|
40
|
+
mosaic that must be constructed from several radars. Route those tasks to
|
|
41
|
+
`nexrad-product-access` or a dedicated mosaicking workflow.
|
|
42
|
+
|
|
43
|
+
## Official MRMS 2D Access
|
|
44
|
+
|
|
45
|
+
NOAA/NCEP exposes the 2D product archive at:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
https://mrms.ncep.noaa.gov/2D/
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The public index includes directories such as:
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
https://mrms.ncep.noaa.gov/2D/MultiSensor_QPE_01H_Pass1/
|
|
55
|
+
https://mrms.ncep.noaa.gov/2D/VIL/
|
|
56
|
+
https://mrms.ncep.noaa.gov/2D/VII/
|
|
57
|
+
https://mrms.ncep.noaa.gov/2D/MESH/
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
These are representative examples, not a complete product catalog. NOAA/NSSL
|
|
61
|
+
describes the MRMS suite as containing 100+ products; available products and
|
|
62
|
+
distribution formats vary by product, version, domain, and feed. Consult the
|
|
63
|
+
current [NOAA/NSSL MRMS overview](https://www.nssl.noaa.gov/projects/mrms/),
|
|
64
|
+
product guide, and live NCEP index rather than treating this short list as an
|
|
65
|
+
allowlist.
|
|
66
|
+
|
|
67
|
+
Directories can contain a convenience link such as
|
|
68
|
+
`MRMS_<Product>.latest.grib2.gz` and timestamped compressed GRIB2 files. Some
|
|
69
|
+
products may also have regional directories such as `CONUS`, `GUAM`, or
|
|
70
|
+
`CARIB`; verify the selected product directory rather than assuming a domain.
|
|
71
|
+
|
|
72
|
+
For reproducible analysis, prefer an exact timestamped file. Use the `latest`
|
|
73
|
+
link only for a live snapshot, then record the exact timestamp, URL, redirect
|
|
74
|
+
target if any, content length, and retrieval time.
|
|
75
|
+
|
|
76
|
+
## Choose the Composite Product
|
|
77
|
+
|
|
78
|
+
Do not select a directory from a color image or a familiar abbreviation alone.
|
|
79
|
+
Read the current product description and metadata enough to confirm:
|
|
80
|
+
|
|
81
|
+
- product name and version;
|
|
82
|
+
- whether it is radar-only, multisensor, gauge corrected, or analysis based;
|
|
83
|
+
- accumulation or integration period;
|
|
84
|
+
- valid or scan time semantics;
|
|
85
|
+
- update cadence and latency;
|
|
86
|
+
- spatial domain and grid;
|
|
87
|
+
- missing, no-data, and quality semantics;
|
|
88
|
+
- units, scale, and packed-data representation.
|
|
89
|
+
|
|
90
|
+
Important distinctions include:
|
|
91
|
+
|
|
92
|
+
- **QPE:** accumulated precipitation estimate, not a reflectivity image.
|
|
93
|
+
- **VIL:** vertically integrated liquid from radar structure, not surface rain
|
|
94
|
+
rate or hail mass.
|
|
95
|
+
- **VII:** vertically integrated ice from radar structure, not total
|
|
96
|
+
precipitation.
|
|
97
|
+
- **MESH:** maximum expected size of hail for the product interval, not the
|
|
98
|
+
current cloud-top temperature or a verified hail observation.
|
|
99
|
+
|
|
100
|
+
Use the current product documentation to confirm exact meaning. Do not infer a
|
|
101
|
+
product from its directory name alone.
|
|
102
|
+
|
|
103
|
+
## Define the Mosaic Request
|
|
104
|
+
|
|
105
|
+
Record:
|
|
106
|
+
|
|
107
|
+
- exact MRMS product and version;
|
|
108
|
+
- national, regional, or other available domain;
|
|
109
|
+
- exact valid time or bounded historical interval;
|
|
110
|
+
- `latest` or timestamped-file policy;
|
|
111
|
+
- variables, units, accumulation period, and quality fields;
|
|
112
|
+
- desired geographic crop and output grid policy;
|
|
113
|
+
- maximum lookback, file-size limit, and acceptable latency;
|
|
114
|
+
- whether the product is being treated as official mosaic truth, an analysis
|
|
115
|
+
input, or a comparison target;
|
|
116
|
+
- required provenance and artifact policy.
|
|
117
|
+
|
|
118
|
+
If the user requests one storm's single-radar structure, this is the wrong
|
|
119
|
+
skill. A mosaic is useful for broad coverage and regional products but can
|
|
120
|
+
obscure site-level vertical or velocity structure.
|
|
121
|
+
|
|
122
|
+
## Access Workflow
|
|
123
|
+
|
|
124
|
+
1. Open or list the documented product directory under `/2D/`.
|
|
125
|
+
2. Match the exact product, domain, and timestamp policy.
|
|
126
|
+
3. Select an exact timestamped compressed GRIB2 file for retrospective work.
|
|
127
|
+
4. For `latest`, follow the convenience link only after recording the final URL
|
|
128
|
+
and resolving its timestamped identity.
|
|
129
|
+
5. Request file metadata with a bounded HTTP `HEAD` or equivalent read-only
|
|
130
|
+
check when the server supports it.
|
|
131
|
+
6. Download to a request-owned temporary path without executing content from
|
|
132
|
+
the server path.
|
|
133
|
+
7. Verify received size and a provider checksum when present; otherwise compute
|
|
134
|
+
and record a local SHA-256.
|
|
135
|
+
8. Decompress the `.gz` into a new temporary `.grib2` file. Do not decompress in
|
|
136
|
+
place over a shared cache entry.
|
|
137
|
+
9. Open the GRIB2 with a format-aware decoder and verify product, reference
|
|
138
|
+
time, forecast or valid time, grid, variables, units, and missing values.
|
|
139
|
+
10. Promote the verified product and record its source identity.
|
|
140
|
+
|
|
141
|
+
Keep compressed bytes, decoded values, and any reprojected or cropped artifact
|
|
142
|
+
as separate stages with separate hashes or identities.
|
|
143
|
+
|
|
144
|
+
## Handle Latest and Historical Time Correctly
|
|
145
|
+
|
|
146
|
+
`latest` is a moving convenience name. A later request can return different
|
|
147
|
+
bytes even though its URL is unchanged. For analysis and publication:
|
|
148
|
+
|
|
149
|
+
- resolve `latest` to the actual timestamped file;
|
|
150
|
+
- record retrieval time and product valid or scan time separately;
|
|
151
|
+
- use the timestamped file for replay;
|
|
152
|
+
- do not use the `latest` URL as immutable provenance;
|
|
153
|
+
- report latency between product time and retrieval time.
|
|
154
|
+
|
|
155
|
+
If the directory contains multiple passes, revisions, or accumulation windows,
|
|
156
|
+
select the exact contract required by the task. Do not choose the newest file
|
|
157
|
+
merely because its name sorts last.
|
|
158
|
+
|
|
159
|
+
## Validate the Mosaic Grid
|
|
160
|
+
|
|
161
|
+
Before interpreting or plotting, verify:
|
|
162
|
+
|
|
163
|
+
- domain and expected geographic extent;
|
|
164
|
+
- projection or GRIB coordinate definition;
|
|
165
|
+
- x/y orientation and scan mode;
|
|
166
|
+
- latitude and longitude coordinates after decoding;
|
|
167
|
+
- cell size, dimensions, and row or column ordering;
|
|
168
|
+
- time coordinate, units, and interval semantics;
|
|
169
|
+
- no-data, missing, and quality values;
|
|
170
|
+
- packed scale and offset or other calibration;
|
|
171
|
+
- consistency with the product's documented grid contract.
|
|
172
|
+
|
|
173
|
+
Do not transpose, flip, or relabel a grid based on visual appearance alone. A
|
|
174
|
+
plausible-looking map can still be spatially reversed or attached to the wrong
|
|
175
|
+
time.
|
|
176
|
+
|
|
177
|
+
## Preserve Product and Measurement Meaning
|
|
178
|
+
|
|
179
|
+
An MRMS product is a processed estimate or analysis. Keep these distinctions
|
|
180
|
+
visible:
|
|
181
|
+
|
|
182
|
+
- radar reflectivity or velocity input versus accumulated precipitation;
|
|
183
|
+
- radar-only estimate versus gauge-corrected multisensor analysis;
|
|
184
|
+
- valid time versus product generation or file publication time;
|
|
185
|
+
- missing radar coverage versus a physical zero;
|
|
186
|
+
- official composite product versus locally interpolated or blended fields;
|
|
187
|
+
- analysis value versus uncertainty or quality metadata.
|
|
188
|
+
|
|
189
|
+
Do not label an official mosaic as ground truth. It is a provider product with
|
|
190
|
+
its own assumptions, coverage, latency, and quality limitations.
|
|
191
|
+
|
|
192
|
+
## Reliability and Cache Behavior
|
|
193
|
+
|
|
194
|
+
- Cache by product, domain, timestamped source URL, byte identity, and local
|
|
195
|
+
checksum—not by `latest` or a friendly timestamp alone.
|
|
196
|
+
- Retry timeouts and transient server failures with bounded backoff and jitter.
|
|
197
|
+
- Honor service limits and avoid parallel directory-wide downloads.
|
|
198
|
+
- Keep partial compressed or decompressed files outside accepted cache entries.
|
|
199
|
+
- Publish a complete file atomically only after decoder validation.
|
|
200
|
+
- Remove request-owned temporary files after the final artifact and provenance
|
|
201
|
+
record are durable; never delete a shared user cache as request cleanup.
|
|
202
|
+
|
|
203
|
+
For large regional or national products, check available disk space and memory
|
|
204
|
+
before download and decode. Crop only after validating the native grid unless
|
|
205
|
+
the source supports a documented range request that preserves the same bytes.
|
|
206
|
+
|
|
207
|
+
## Examples
|
|
208
|
+
|
|
209
|
+
For “the latest MRMS one-hour multisensor QPE over CONUS before a given UTC
|
|
210
|
+
time,” verify that the product/domain exists, choose a completed timestamp,
|
|
211
|
+
and record valid time separately from retrieval time. Decode the GRIB2 and
|
|
212
|
+
confirm accumulation units, grid orientation, and missing-value encoding
|
|
213
|
+
before mapping it.
|
|
214
|
+
|
|
215
|
+
For “show the latest MRMS VIL,” resolve `latest` to its timestamped file and
|
|
216
|
+
label the result as vertically integrated liquid, not surface rainfall.
|
|
217
|
+
|
|
218
|
+
## Return a Mosaic Access Record
|
|
219
|
+
|
|
220
|
+
```json
|
|
221
|
+
{
|
|
222
|
+
"provider": "NOAA/NCEP MRMS",
|
|
223
|
+
"product": "MultiSensor_QPE_01H_Pass1",
|
|
224
|
+
"domain": "CONUS",
|
|
225
|
+
"requested_time_utc": "2026-09-25T12:00:00Z",
|
|
226
|
+
"selected_timestamped_url": "https://mrms.ncep.noaa.gov/2D/.../EXACT_FILE.grib2.gz",
|
|
227
|
+
"retrieved_at_utc": "2026-09-25T12:03:14Z",
|
|
228
|
+
"compressed_size_bytes": 12345678,
|
|
229
|
+
"compressed_sha256": "HEX_DIGEST",
|
|
230
|
+
"decoded_grid": {
|
|
231
|
+
"dimensions": [WIDTH, HEIGHT],
|
|
232
|
+
"projection": "DECODED CRS OR PRODUCT CRS",
|
|
233
|
+
"time_semantics": "VERIFIED PRODUCT TIME"
|
|
234
|
+
},
|
|
235
|
+
"latest_used": false
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Do not put a fabricated domain, grid, or time into this record. Omit unknown
|
|
240
|
+
fields or use `null` when the schema permits it.
|
|
241
|
+
|
|
242
|
+
## Verification Checklist
|
|
243
|
+
|
|
244
|
+
- Product, version, domain, and time contract are explicit.
|
|
245
|
+
- An official composite product is not confused with a single-site volume.
|
|
246
|
+
- Exact timestamped identity is recorded even when access starts from `latest`.
|
|
247
|
+
- Compressed bytes and decoded GRIB2 are validated separately.
|
|
248
|
+
- Product, reference time, valid time, grid, units, and missing values are
|
|
249
|
+
verified after decoding.
|
|
250
|
+
- Radar, multisensor, gauge-corrected, or analysis semantics are preserved.
|
|
251
|
+
- Missing coverage is not converted to a physical zero.
|
|
252
|
+
- The final artifact and provenance identify the exact source file.
|
|
253
|
+
|
|
254
|
+
## Security & Safety Notes
|
|
255
|
+
|
|
256
|
+
- Use public or authorized MRMS resources only.
|
|
257
|
+
- Never execute or import content based only on a remote filename. Decode with
|
|
258
|
+
explicit format-aware libraries and bounded resource use.
|
|
259
|
+
- Do not expose private endpoints, credentials, signed query strings, or tokens
|
|
260
|
+
in records or logs.
|
|
261
|
+
- Validate product and domain values before constructing URLs; do not allow path
|
|
262
|
+
traversal from untrusted input.
|
|
263
|
+
- Preserve NOAA/NCEP attribution and applicable data-use terms.
|
|
264
|
+
|
|
265
|
+
## Common Pitfalls
|
|
266
|
+
|
|
267
|
+
- **`latest` changed after the analysis:** A moving convenience link was stored
|
|
268
|
+
as immutable provenance. Resolve and retain the timestamped file identity.
|
|
269
|
+
- **A missing-data region became zero:** The no-data sentinel was treated like a
|
|
270
|
+
physical value. Apply and verify the product's missing-data contract.
|
|
271
|
+
- **A VIL image was called rainfall:** The processed quantity was relabeled.
|
|
272
|
+
Preserve VIL as vertically integrated liquid.
|
|
273
|
+
- **A domain was assumed:** The requested regional directory may not exist for
|
|
274
|
+
that product. Inspect the actual product directory.
|
|
275
|
+
- **A single radar became a mosaic:** A site product was labeled composite
|
|
276
|
+
without combining or retrieving multiple contributions.
|
|
277
|
+
- **The map was flipped:** Grid orientation or scan mode was guessed from
|
|
278
|
+
appearance. Validate decoded coordinate metadata.
|
|
279
|
+
|
|
280
|
+
## Limitations
|
|
281
|
+
|
|
282
|
+
- Product availability, version, directory layout, and update cadence can
|
|
283
|
+
change. Verify current official documentation.
|
|
284
|
+
- An official mosaic does not expose every native Level II moment or sweep.
|
|
285
|
+
- Provider mosaics have their own quality, coverage, latency, and algorithmic
|
|
286
|
+
limitations and are not direct observations.
|
|
287
|
+
- This skill accesses existing composites; it does not construct a custom
|
|
288
|
+
multi-radar mosaic or perform meteorological verification.
|
|
289
|
+
|
|
290
|
+
## Additional Resources
|
|
291
|
+
|
|
292
|
+
- [NOAA/NCEP MRMS 2D product directory](https://mrms.ncep.noaa.gov/2D/)
|
|
293
|
+
- [NOAA/NSSL MRMS overview and product suite](https://www.nssl.noaa.gov/projects/mrms/)
|
|
294
|
+
- [MRMS VIL example directory](https://mrms.ncep.noaa.gov/2D/VIL/)
|
|
295
|
+
- [MRMS VII example directory](https://mrms.ncep.noaa.gov/2D/VII/)
|
|
296
|
+
- [MRMS MultiSensor QPE example directory](https://mrms.ncep.noaa.gov/2D/MultiSensor_QPE_01H_Pass1/)
|
|
297
|
+
- [NEXRAD on the AWS Registry of Open Data](https://registry.opendata.aws/noaa-nexrad/)
|