kv

kv is a skill for Claude Code, Codex from reloru/new-relo. It costs 139 tokens per session (2,881 once invoked), scanned C, original, MIT.

A skill for inspecting and carefully editing the production WEATHER KV namespace used by crosbynews.com. KV is a key-value store for cached data, such as weather, calendar, water, fishing, pollen, traffic, and news information.

In plain words
What is it for?
Reading and managing the listed production cache keys with Wrangler's remote KV commands, including checking or clearing stale local development state when needed.
Why use it?
It prevents confusion between production data and the local development cache, which can persist old values.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/reloru/new-relo/kv
Any agent
npx skills add reloru/new-relo --skill kv
Clone the repo
git clone --depth 1 https://github.com/reloru/new-relo

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for kv

README.md
[![agentmods](https://agentmods.dev/badge/skills/reloru/new-relo/kv.svg)](https://agentmods.dev/skills/reloru/new-relo/kv)
Your own site
<a href="https://agentmods.dev/skills/reloru/new-relo/kv"><img src="https://agentmods.dev/badge/skills/reloru/new-relo/kv.svg" alt="Measured on agentmods" height="20"></a>
Per session 139 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,881 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00139 $0.02881
Opus 5 $0.00069 $0.01440
Sonnet 5 $0.00028 $0.00576
Haiku 4.5 $0.00014 $0.00288

Measured 4d ago against content hash d6c4df76337b, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

kv scanned grade C with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

rm -rf .wrangler/state # next `wrangler dev` starts truly empty
.claude/skills/kv/SKILL.md · 165 lines

How it starts

The opening of the file, as written. The whole thing — 165 lines — stays where its author put it; the contents beside it link to each section on GitHub.

WEATHER KV

Read and manage the WEATHER KV namespace. Run from the repo root so wrangler resolves --binding WEATHER from wrangler.jsonc (namespace id da96de7daed84b69b32778058b374d5f is the fallback via --namespace-id).

The one rule: always --remote

wrangler kv key ... defaults to local miniflare state. Without --remote, a get reports "Value not found" even though production has the key. Every command below passes --remote — keep it.

And local state PERSISTS across runs. It lives in .wrangler/state/v3/kv/ (gitignored) and survives wrangler dev restarts, reboots, and days of elapsed time — so "a fresh local dev server" is not a cold cache. A local run cold-warms KV once and every later run reads that same snapshot back, however old it is.

This is not academic: a wrangler dev session on 2026-08-05 was served a weather value written on 2026-08-01, whose 48 hourly periods had all elapsed two days earlier — and it was briefly misread as an empty cache, because "local dev must be cold" is the intuitive assumption and it is wrong. To get a genuinely cold local cache, delete the state:

rm -rf .wrangler/state          # next `wrangler dev` starts truly empty

The nine content keys (different owners, different risk)

  • weather — NWS forecast + active alerts, shape { updated, place, periods, hourly, alerts } (hourly is the array loadWeather() checks to decide the cache is fresh). Written by the cron (*/15 * * * *) and warmed by loadWeather() on a cold cache. Inspecting is safe; a bad or deleted value self-heals within 15 min (or on the next request). Low risk.
  • calendar — Crosby ISD school calendar, shape { updated, events: [{ summary, location, start, allDay, end }] } (events is the array loadCalendar() checks for freshness). Written by the same cron (throttled to ~24h — Crosby ISD's calendar changes rarely) and warmed by loadCalendar() on a cold cache. Like weather, a bad/deleted value self-heals on the next cron or request. Low risk.
  • water — river/bayou gauges, shape { updated, gauges: [...] } (gauges is what loadWater() checks). Written by the same cron every tick; cold-warms on read. Self-heals like weather. Low risk.
  • fishing — USGS real-time water conditions for the waters people fish, shape { updated, stations: [{ id, params:{tempC,do,ph,turb,gageFt}, observed }] } (stations is what loadFishing() checks). Written by the same cron every tick; cold-warms on read. Self-heals like water. Low risk.
  • tropics — Atlantic tropical outlook from two NHC products, shape { updated, storms: [...], disturbances: [...] | null, outlookIssued }. storms is NHC CurrentStorms.json (named cyclones only); disturbances is the Tropical Weather Outlook (areas being watched, with formation chances). loadTropics() checks BOTH are arrays and cold-warms otherwise, which is what migrates pre-2026-08 entries that carry no disturbances. An empty storms is the normal quiet-basin state, NOT an error — but on its own it is not an all-clear, which is the bug this shape exists to prevent. disturbances: null means the outlook could not be read and is NOT the same as [] (nothing being watched); hand-editing one into the other makes the page assert a quiet basin nobody confirmed. Written by the same cron, throttled ~1h June-November (Atlantic hurricane season, Central time) and ~24h the rest of the year; cold-warms on read. Self-heals. Low risk.
  • pollen — the Houston Health Department's measured daily pollen & mold count, shape { updated, countDate, url, groups: {tree,weed,grass,mold}, species } (loadPollen() checks groups + countDate; countDate is the CT calendar day the count is for — weekends carry Friday's, that's normal). Written by the same cron, skipped entirely on Sat/Sun (Central time) and on weekdays only when the cached countDate isn't today's date yet — HHD publishes one count per weekday morning, so this is "have we got today's count" rather than a flat age throttle; cold-warms on read. Self-heals. Low risk.
  • burnban — Harris County outdoor-burning ban status from the Texas A&M Forest Service, shape { updated, status, startDate, statusSince, trackingSince } (loadBurnBan() checks status is "Yes" or "No"; startDate is ISO or null). Don't hand-write statusSince / trackingSincetrackingSince is the first observation ever and never moves, statusSince moves only on a real status flip, and when they are EQUAL the page says "unchanged since we began tracking" rather than claiming a transition. Faking them makes /burn-ban assert a ban ended on a day it did not. Deleting the key is safe: the next cron reseeds both to now, which reads honestly as "no observed history yet". Written by the same cron, throttled ~4h (TFS's feed updates roughly daily, on a county judge's order rather than a schedule); cold-warms on read. Self-heals. Low risk.
  • traffic — Crosby-corridor road incidents + lane closures from Houston TranStar's public RSS feeds, shape { updated, incidents, closures } (loadTraffic() checks that incidents is PRESENT — either side is null when that feed was unreachable at the last refresh, vs [] = quiet roads, the normal state). Written by the same cron every tick; cold-warms on read. Self-heals. Low risk.
  • news — local news, shape { updated, items: [...], source }. Written ONLY out-of-band by scripts/fetch-news.mjs (a Claude routine); the Worker just renders it. Overwriting or deleting news loses the snapshot until the next routine run (up to ~a day). Treat writes/deletes here as destructive.

Read the full file on GitHub · 165 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 165 lines · 139 tokens per session scan C d6c4df76337b

Subscribe to this mod's changes

kv is a skill published in the GitHub repository reloru/new-relo (1 stars, last pushed 3d ago), licensed MIT. It adds 139 tokens to every session and 2,881 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it C with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

bullmq

Skill "bullmq" from ashish7802/awesome-api-skills, covering bullmq skill, ecosystem graph preview, recommended next skills, quick start and production patterns.

ashish7802/awesome-api-skills · 0 tokens

redis-streams

Skill "redis-streams" from ashish7802/awesome-api-skills, covering redis streams skill, ecosystem graph preview, recommended next skills, quick start and production patterns.

ashish7802/awesome-api-skills · 0 tokens

redis

Redis is used as a database, cache, and message broker. This skill covers the redis (Node.js) and redis-py libraries.

ashish7802/awesome-api-skills · 0 tokens

upstash

Upstash provides serverless Redis and Kafka via REST APIs, making it uniquely compatible with Edge environments where raw TCP connections are restricted.

ashish7802/awesome-api-skills · 0 tokens

auth-db-billing

Backend product systems skill for the svelteflare monorepo. Invoke whenever the user wants to work with auth, sessions, protected routes, users, the database, schema changes, migrations, Stripe billing, subscriptions, paid feature gates, or any server-only logic in the Hono API. Trigger on "add a protected route"…

pinebasedev/svelteflare · 172 tokens

huawei-dds-dcs

Use when creating or managing Document Database Service (DDS/MongoDB-compatible) or Distributed Cache Service (DCS/Redis/Memcached) on Huawei Cloud. Triggers: DDS, DCS, MongoDB, Redis, Memcached, document DB, cache, replica set, sharding. NOT for: RDS (use huawei-rds), GaussDB (use huawei-gaussdb).

huaweicloud/huaweicloud-devkit · 89 tokens