opencode-skills-collection 4.0.72 → 4.0.73

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.
@@ -0,0 +1,184 @@
1
+ ---
2
+ name: weather-pipeline-performance-diagnosis
3
+ description: "Diagnose slow weather-data workflows by measuring discovery, transfer, parsing, scientific processing, and rendering separately before changing code."
4
+ category: data
5
+ risk: safe
6
+ source: self
7
+ source_type: self
8
+ date_added: "2026-09-24"
9
+ author: ShianMike
10
+ tags: [weather, performance, profiling, diagnostics, pipelines]
11
+ tools: [claude, cursor, gemini, codex]
12
+ ---
13
+
14
+ # Weather Pipeline Performance Diagnosis
15
+
16
+ ## Overview
17
+
18
+ Find the stage that actually makes a weather workflow slow before optimizing it.
19
+ Measure the real runtime path from source discovery through the final artifact,
20
+ including optional companion data and fallback work.
21
+
22
+ This skill diagnoses latency and throughput. It does not prescribe a particular
23
+ data provider, file format, decoder, or optimization.
24
+
25
+ ## When to Use This Skill
26
+
27
+ - A fetch, sounding, map, animation, or batch job feels slower than before.
28
+ - A parser or native backend is blamed without stage-level timing evidence.
29
+ - Local runs and packaged or hosted runs have different performance.
30
+ - A cache, provider fallback, optional enrichment, or rendering step may hide
31
+ the real cost.
32
+ - A proposed performance fix needs a repeatable before-and-after comparison.
33
+
34
+ Do not activate this skill for a correctness bug unless performance is also part
35
+ of the observed failure.
36
+
37
+ ## Reproduce the Real Path
38
+
39
+ Record one fixed workload before editing code:
40
+
41
+ - requested source, time, location, variables, and output;
42
+ - application commit and runtime version;
43
+ - active implementation or backend, including fallback reason;
44
+ - cold-cache or warm-cache state;
45
+ - machine, operating system, worker count, and relevant resource limits;
46
+ - bytes transferred and final artifact size;
47
+ - whether optional guidance, overlays, or secondary sources were enabled.
48
+
49
+ Use the same workload for the baseline and candidate measurement. A faster run
50
+ with fewer inputs or a warm cache is not evidence that the original path
51
+ improved.
52
+
53
+ ## Divide the Pipeline into Stages
54
+
55
+ At minimum, time these boundaries independently:
56
+
57
+ 1. request validation and source discovery;
58
+ 2. availability checks and fallback selection;
59
+ 3. network transfer or cache read;
60
+ 4. parsing or decoding;
61
+ 5. supplemental-data retrieval;
62
+ 6. profile, grid, or derived-value construction;
63
+ 7. visualization or export;
64
+ 8. cleanup and final publication.
65
+
66
+ Add sub-stages only where the first pass shows meaningful time. Preserve the
67
+ existing behavior while instrumenting; diagnostics must not silently disable
68
+ expensive work.
69
+
70
+ ## Lightweight Timing Example
71
+
72
+ Use a monotonic clock and emit structured records that can be compared across
73
+ runs:
74
+
75
+ ```python
76
+ import json
77
+ import time
78
+ from contextlib import contextmanager
79
+
80
+
81
+ @contextmanager
82
+ def timed_stage(name, report):
83
+ started = time.perf_counter()
84
+ outcome = "ok"
85
+ try:
86
+ yield
87
+ except BaseException:
88
+ outcome = "error"
89
+ raise
90
+ finally:
91
+ report.append({
92
+ "stage": name,
93
+ "outcome": outcome,
94
+ "seconds": round(time.perf_counter() - started, 6),
95
+ })
96
+
97
+
98
+ timings = []
99
+ with timed_stage("source_discovery", timings):
100
+ source = discover_source()
101
+ with timed_stage("transfer", timings):
102
+ local_path = fetch_source(source)
103
+ with timed_stage("processing", timings):
104
+ result = build_result(local_path)
105
+
106
+ print(json.dumps(timings, sort_keys=True))
107
+ ```
108
+
109
+ Instrument production boundaries or the same public APIs used by production.
110
+ Avoid a benchmark helper that bypasses the path users report as slow.
111
+
112
+ ## Interpret the Evidence
113
+
114
+ - Long discovery with little transfer suggests broad listings, excessive
115
+ retries, provider timeouts, or repeated availability probes.
116
+ - Long transfer with expected parsing time suggests bandwidth, object size,
117
+ throttling, or failure to reuse a valid cache.
118
+ - Long parsing requires proof that the intended backend is active and that the
119
+ input volume is comparable.
120
+ - Long processing after parsing points to interpolation, secondary retrieval,
121
+ profile construction, or repeated computation.
122
+ - Long rendering can come from layout, rasterization, font loading, excessive
123
+ redraws, or large output dimensions.
124
+ - High variance across identical runs suggests external services, contention,
125
+ cold starts, garbage collection, or uncontrolled parallelism.
126
+
127
+ Measure wall time, CPU time, bytes, item counts, cache state, and worker count
128
+ where they explain the result. A single total duration cannot locate a
129
+ bottleneck.
130
+
131
+ ## Validate a Fix
132
+
133
+ 1. Preserve the baseline report and environment description.
134
+ 2. Change the smallest shared cause supported by the measurements.
135
+ 3. Rerun the identical workload several times in the same cache state.
136
+ 4. Compare the affected stage, total duration, output identity, and resource
137
+ use.
138
+ 5. Run correctness tests for the changed path.
139
+ 6. Report both improvement and measurement variability.
140
+
141
+ Do not call a slowdown fixed when only a suspected backend, log message, or
142
+ microbenchmark changed. Require an end-to-end result from the reported path.
143
+
144
+ ## Verification Checklist
145
+
146
+ - The measured workload matches the user's slow workflow.
147
+ - Active backend and fallback state are observed, not inferred.
148
+ - Network, parsing, processing, rendering, and cleanup are separate timings.
149
+ - Cold and warm cache results are labeled.
150
+ - Optional or supplemental work remains visible.
151
+ - Baseline and candidate use equivalent inputs, outputs, and worker settings.
152
+ - The fix has correctness checks plus repeatable before-and-after evidence.
153
+
154
+ ## Security & Safety Notes
155
+
156
+ - Remove credentials, signed URLs, private paths, and sensitive coordinates
157
+ from timing reports before sharing them.
158
+ - Bound benchmark repetitions, downloads, concurrency, and disk usage.
159
+ - Do not disable certificate verification or safety checks to improve timing.
160
+ - Avoid profiling production services in a way that increases load without
161
+ authorization.
162
+ - Keep diagnostic logs from capturing raw private datasets unnecessarily.
163
+
164
+ ## Common Pitfalls
165
+
166
+ - **The decoder is blamed first:** Transfer or supplemental data dominates.
167
+ Measure each boundary before changing the decoder.
168
+ - **The candidate looks faster:** It used a warm cache or smaller request.
169
+ Restore equivalent conditions.
170
+ - **A unit benchmark passes:** The real application takes a fallback or render
171
+ path the benchmark omits. Measure the application entry point.
172
+ - **A timing limit is raised:** No stage-level regression analysis was done.
173
+ Inspect evidence and rerun before changing a budget.
174
+ - **Parallelism increases latency:** Workers contend for network, memory, or
175
+ decoder resources. Measure throughput and resource saturation together.
176
+
177
+ ## Limitations
178
+
179
+ - External-service latency and hosted-runner capacity can remain variable even
180
+ with correct instrumentation.
181
+ - Instrumentation has overhead; keep it lightweight and measure coarse stages
182
+ before adding fine-grained probes.
183
+ - This skill identifies bottlenecks but does not determine whether an expensive
184
+ scientific operation is necessary or meteorologically appropriate.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-skills-collection",
3
- "version": "4.0.72",
3
+ "version": "4.0.73",
4
4
  "description": "OpenCode CLI plugin that automatically downloads and keeps skills up to date.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/skills_index.json CHANGED
@@ -932,6 +932,39 @@
932
932
  "license": "MIT",
933
933
  "license_source": "https://github.com/webzler/agentMemory/blob/main/LICENSE"
934
934
  },
935
+ {
936
+ "id": "agent-memory-discipline",
937
+ "path": "skills/agent-memory-discipline",
938
+ "category": "memory",
939
+ "name": "agent-memory-discipline",
940
+ "description": "Rules for when an agent should recall from long-term memory before acting and when it should save decisions, corrections and failures afterwards. Works with any memory backend.",
941
+ "risk": "safe",
942
+ "source": "community",
943
+ "date_added": "2026-09-23",
944
+ "plugin": {
945
+ "targets": {
946
+ "codex": "supported",
947
+ "claude": "supported"
948
+ },
949
+ "setup": {
950
+ "type": "none",
951
+ "summary": "",
952
+ "docs": null
953
+ },
954
+ "reasons": []
955
+ },
956
+ "source_type": "community",
957
+ "source_repo": "mnemoverse/agent-memory-discipline",
958
+ "license": "CC0-1.0",
959
+ "license_source": "https://github.com/mnemoverse/agent-memory-discipline/blob/main/LICENSE",
960
+ "tags": [
961
+ "agent-memory",
962
+ "long-term-memory",
963
+ "context-engineering",
964
+ "mcp",
965
+ "agent-skills"
966
+ ]
967
+ },
935
968
  {
936
969
  "id": "agent-memory-mcp",
937
970
  "path": "skills/agent-memory-mcp",
@@ -31573,7 +31606,7 @@
31573
31606
  "source_type": "community",
31574
31607
  "source_repo": "socai-io/jev-social",
31575
31608
  "license": "MIT",
31576
- "license_source": "https://github.com/socai-io/jev-social/blob/05581cac6b8c21c85e54883b5f2b93c16f40f419/LICENSE",
31609
+ "license_source": "https://github.com/socai-io/jev-social/blob/782d809c68e2015536359aa7dceede9a3cdbb7f1/LICENSE",
31577
31610
  "tags": [
31578
31611
  "social-media",
31579
31612
  "research",
@@ -39241,6 +39274,38 @@
39241
39274
  "license": "MIT",
39242
39275
  "license_source": "https://github.com/supernovae-st/nika-agents/blob/main/LICENSE"
39243
39276
  },
39277
+ {
39278
+ "id": "noaa-radar-satellite-fetching",
39279
+ "path": "skills/noaa-radar-satellite-fetching",
39280
+ "category": "data",
39281
+ "name": "noaa-radar-satellite-fetching",
39282
+ "description": "Retrieve NOAA NEXRAD and GOES products from public cloud archives using verified site, product, channel, sector, and scan-time selection.",
39283
+ "risk": "safe",
39284
+ "source": "self",
39285
+ "date_added": "2026-09-24",
39286
+ "plugin": {
39287
+ "targets": {
39288
+ "codex": "supported",
39289
+ "claude": "supported"
39290
+ },
39291
+ "setup": {
39292
+ "type": "none",
39293
+ "summary": "",
39294
+ "docs": null
39295
+ },
39296
+ "reasons": []
39297
+ },
39298
+ "source_type": "self",
39299
+ "tags": [
39300
+ "weather",
39301
+ "noaa",
39302
+ "nexrad",
39303
+ "goes",
39304
+ "radar",
39305
+ "satellite",
39306
+ "aws-s3"
39307
+ ]
39308
+ },
39244
39309
  {
39245
39310
  "id": "nodejs-backend-patterns",
39246
39311
  "path": "skills/nodejs-backend-patterns",
@@ -58166,6 +58231,67 @@
58166
58231
  "reasons": []
58167
58232
  }
58168
58233
  },
58234
+ {
58235
+ "id": "weather-data-lifecycle-management",
58236
+ "path": "skills/weather-data-lifecycle-management",
58237
+ "category": "data",
58238
+ "name": "weather-data-lifecycle-management",
58239
+ "description": "Manage ownership, retention, and cleanup of downloaded weather data across one-shot jobs, interactive viewers, caches, failures, and cancellation.",
58240
+ "risk": "safe",
58241
+ "source": "self",
58242
+ "date_added": "2026-09-24",
58243
+ "plugin": {
58244
+ "targets": {
58245
+ "codex": "supported",
58246
+ "claude": "supported"
58247
+ },
58248
+ "setup": {
58249
+ "type": "none",
58250
+ "summary": "",
58251
+ "docs": null
58252
+ },
58253
+ "reasons": []
58254
+ },
58255
+ "source_type": "self",
58256
+ "tags": [
58257
+ "weather",
58258
+ "data-lifecycle",
58259
+ "cleanup",
58260
+ "caching",
58261
+ "desktop-apps"
58262
+ ]
58263
+ },
58264
+ {
58265
+ "id": "weather-data-reproducibility",
58266
+ "path": "skills/weather-data-reproducibility",
58267
+ "category": "data",
58268
+ "name": "weather-data-reproducibility",
58269
+ "description": "Record and verify provenance manifests for weather-data inputs and derived artifacts, including object identity, selections, software versions, transformations, and hashes.",
58270
+ "risk": "safe",
58271
+ "source": "self",
58272
+ "date_added": "2026-09-24",
58273
+ "plugin": {
58274
+ "targets": {
58275
+ "codex": "supported",
58276
+ "claude": "supported"
58277
+ },
58278
+ "setup": {
58279
+ "type": "none",
58280
+ "summary": "",
58281
+ "docs": null
58282
+ },
58283
+ "reasons": []
58284
+ },
58285
+ "source_type": "self",
58286
+ "tags": [
58287
+ "weather",
58288
+ "reproducibility",
58289
+ "provenance",
58290
+ "checksums",
58291
+ "grib2",
58292
+ "netcdf"
58293
+ ]
58294
+ },
58169
58295
  {
58170
58296
  "id": "weather-model-data-fetching",
58171
58297
  "path": "skills/weather-model-data-fetching",
@@ -58197,6 +58323,37 @@
58197
58323
  "nwp"
58198
58324
  ]
58199
58325
  },
58326
+ {
58327
+ "id": "weather-model-run-discovery",
58328
+ "path": "skills/weather-model-run-discovery",
58329
+ "category": "data",
58330
+ "name": "weather-model-run-discovery",
58331
+ "description": "Resolve the newest complete numerical weather prediction cycle and forecast objects across provider mirrors without downloading full payloads.",
58332
+ "risk": "safe",
58333
+ "source": "self",
58334
+ "date_added": "2026-09-24",
58335
+ "plugin": {
58336
+ "targets": {
58337
+ "codex": "supported",
58338
+ "claude": "supported"
58339
+ },
58340
+ "setup": {
58341
+ "type": "none",
58342
+ "summary": "",
58343
+ "docs": null
58344
+ },
58345
+ "reasons": []
58346
+ },
58347
+ "source_type": "self",
58348
+ "tags": [
58349
+ "weather",
58350
+ "nwp",
58351
+ "model-cycle",
58352
+ "aws-s3",
58353
+ "nomads",
58354
+ "herbie"
58355
+ ]
58356
+ },
58200
58357
  {
58201
58358
  "id": "weather-observation-fetching",
58202
58359
  "path": "skills/weather-observation-fetching",
@@ -58228,6 +58385,36 @@
58228
58385
  "quality-control"
58229
58386
  ]
58230
58387
  },
58388
+ {
58389
+ "id": "weather-pipeline-performance-diagnosis",
58390
+ "path": "skills/weather-pipeline-performance-diagnosis",
58391
+ "category": "data",
58392
+ "name": "weather-pipeline-performance-diagnosis",
58393
+ "description": "Diagnose slow weather-data workflows by measuring discovery, transfer, parsing, scientific processing, and rendering separately before changing code.",
58394
+ "risk": "safe",
58395
+ "source": "self",
58396
+ "date_added": "2026-09-24",
58397
+ "plugin": {
58398
+ "targets": {
58399
+ "codex": "supported",
58400
+ "claude": "supported"
58401
+ },
58402
+ "setup": {
58403
+ "type": "none",
58404
+ "summary": "",
58405
+ "docs": null
58406
+ },
58407
+ "reasons": []
58408
+ },
58409
+ "source_type": "self",
58410
+ "tags": [
58411
+ "weather",
58412
+ "performance",
58413
+ "profiling",
58414
+ "diagnostics",
58415
+ "pipelines"
58416
+ ]
58417
+ },
58231
58418
  {
58232
58419
  "id": "weaviate",
58233
58420
  "path": "skills/weaviate",