Borrowing it
Nothing to install: this file belongs to reloru/new-relo. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/reloru/new-relo/main/.claude/skills/kv/SKILL.mdgit clone --depth 1 https://github.com/reloru/new-reloWrote 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.
[](https://agentmods.dev/skills/reloru/new-relo/kv)<a href="https://agentmods.dev/skills/reloru/new-relo/kv"><img src="https://agentmods.dev/badge/skills/reloru/new-relo/kv/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/reloru/new-relo/kv"><img src="https://agentmods.dev/badge/skills/reloru/new-relo/kv.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00170 | $0.03372 |
| Opus 5.5 | $0.00068 | $0.01349 |
| Sonnet 5.5 | $0.00034 | $0.00674 |
| Haiku 4.5 | $0.00017 | $0.00337 |
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 1mo 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 How it starts
The opening of the file, as written. The whole thing — 192 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 }(hourlyis the arrayloadWeather()checks to decide the cache is fresh). Written by the cron (*/15 * * * *) and warmed byloadWeather()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 }] }(eventsis the arrayloadCalendar()checks for freshness). Written by the same cron (throttled to ~24h — Crosby ISD's calendar changes rarely) and warmed byloadCalendar()on a cold cache. Likeweather, a bad/deleted value self-heals on the next cron or request. Low risk.water— river/bayou gauges, shape{ updated, gauges: [...] }(gaugesis whatloadWater()checks). Written by the same cron every tick; cold-warms on read. Self-heals likeweather. Low risk.fishing— USGS real-time water conditions for the waters people fish, shape{ updated, stations: [{ id, params:{tempC,do,ph,turb,gageFt}, observed }] }(stationsis whatloadFishing()checks). Written by the same cron every tick; cold-warms on read. Self-heals likewater. Low risk.tropics— Atlantic tropical outlook from two NHC products, shape{ updated, storms: [...], disturbances: [...] | null, outlookIssued }.stormsis NHC CurrentStorms.json (named cyclones only);disturbancesis 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 nodisturbances. An emptystormsis 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: nullmeans 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()checksgroups+countDate;countDateis 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 cachedcountDateisn'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 — and at most hourly, since that condition never settles on a day HHD publishes nothing (City of Houston holidays) and would otherwise retry all 96 ticks; cold-warms on read. Self-heals. Low risk. A frozencountDatewith a freshupdatedis the failure to look for here — it means selection is missing published counts, not that the fetch is broken (four occurrences Aug-Sep 2026, all silent; seedocs/pages/pollen.md)..github/workflows/pollen-watch.ymlnow files apollen-watchissue when HHD's index advertises a count newer than/api/pollenserves.burnban— Harris County outdoor-burning ban status from the Texas A&M Forest Service, shape{ updated, status, startDate, statusSince, trackingSince }(loadBurnBan()checksstatusis"Yes"or"No";startDateis ISO or null). Don't hand-writestatusSince/trackingSince—trackingSinceis the first observation ever and never moves,statusSincemoves 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 thatincidentsis PRESENT — either side isnullwhen 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 byscripts/fetch-news.mjs(a Claude routine); the Worker just renders it. Overwriting or deletingnewsloses the snapshot until the next routine run (up to ~a day). Treat writes/deletes here as destructive.
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.
- 1mo ago Changed · +19 lines · +31 tokens per session 124752e1baf2
- 1mo ago Changed · +8 lines 44e5713e3fb3
- 2mo ago First seen · 165 lines · 139 tokens per session scan C d6c4df76337b
kv is a skill published in the GitHub repository reloru/new-relo (1 stars, last pushed 7d ago), licensed MIT. It adds 170 tokens to every session and 3,372 once invoked, about $0.0007 per session on Opus 5.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.
Other skills, from other repositories
haven-db
Reset, reseed, locate and prune a haven stack's databases with haven db, and know which verbs destroy data. Use when someone says 'haven db', 'reset the database', 'drop the database', 'reseed in place', 'db preset', 'demo preset', 'database url', 'connection string for postgres', 'haven db prune', 'haven seed'…
redis-js
Work with the Upstash Redis JavaScript/TypeScript SDK for serverless Redis operations. Use for caching, session storage, rate limiting, leaderboards, full-text search (querying, filtering, aggregating with @upstash/redis search extension), and all Redis data structures. Supports automatic serialization/deserialization…
using-redis-token-buckets
Use when adding a bucket-like rate limit backed by Redis: a per-caller budget with burst capacity and continuous refill, a refund path for requests that did no work, or a limit whose Retry-After must be a real wait rather than a window edge. posthog/tokenbucket.py provides an atomic Lua token bucket (consume, refund…
byted-milvus
Manages Milvus on Volcano Engine (Volcengine): provision/inspect/scale/delete clusters and run collection + CRUD/search operations via bundled CLIs. Use when the user mentions Milvus + Volcengine/Volcano Engine or asks to operate Milvus there.
bex-keyvalue
Provisions and configures bex Key Value (Redis-compatible Valkey 8) instances for caching, session storage, and job queues. Use when the user needs Key Value, uses Redis or Valkey, or needs a cache, session store, or job queue backend, or needs to configure maxmemory policy, ipAllowList, connection strings, or…
background-job-orchestrator
Expert in background job processing with Bull/BullMQ (Redis), Celery, and cloud queues. Implements retries, scheduling, priority queues, and worker management. Use for async task processing, email campaigns, report generation, batch operations. Activate on "background job", "async task", "queue", "worker", "BullMQ"…