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.
npx agentmods add skills/m-binimran/dev-pack/caching-revalidationnpx skills add m-binimran/dev-pack --skill caching-revalidationgit clone --depth 1 https://github.com/m-binimran/dev-packWhat 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 | $0.00049 | $0.00399 |
| Opus 5 | $0.00024 | $0.00199 |
| Sonnet 5 | $0.00010 | $0.00080 |
| Haiku 4.5 | $0.00005 | $0.00040 |
Grade A, and why
caching-revalidation scanned grade A 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 2d 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
`fetch(url, { next: { tags: ['projects'] } })`. What it actually says
caching-revalidation
Next.js caches aggressively by default. Most "my data won't update" bugs are caching, not logic.
Decide freshness per route
- Static (default where possible): marketing/content pages. Fast, cached at the edge.
- ISR: mostly-static with periodic refresh —
export const revalidate = 3600(seconds). - Dynamic: per-request/user data — reads of cookies/headers/
searchParams, orexport const dynamic = 'force-dynamic'.
Invalidate on write
- After a mutation (server action/route handler) that changes displayed data, call
revalidatePath('/path')orrevalidateTag('tag')so caches refresh. Tag fetches you'll need to bust:fetch(url, { next: { tags: ['projects'] } }). - For user-specific/never-cache reads, opt out:
fetch(url, { cache: 'no-store' }).
Common fixes
- "Stale after save" → you mutated but didn't
revalidatePath/Tag. - "User sees another user's data" → a per-user route got statically cached; make it dynamic.
- "Slow every load" → over-using
no-store; cache + revalidate instead.
Output
- Per affected route: static / ISR / dynamic, plus the revalidation call wired to each mutation.
Guardrails
- Never cache per-user/authenticated data at a shared layer.
- Don't blanket
force-dynamicto "fix" caching — target the actual route. - Verify freshness by actually triggering the mutation and reloading (don't assume).
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.
- 2d ago First seen · 33 lines · 49 tokens per session scan A f5c52e675889
caching-revalidation is a skill published in the GitHub repository m-binimran/dev-pack (2 stars, last pushed 2mo ago), licensed MIT. It adds 49 tokens to every session and 399 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
investigate-issue
Investigate a GitHub issue by fetching details, analyzing the codebase, researching documentation, and presenting an actionable implementation plan with test guidance. Use when asked to investigate, analyze, triage, or plan work for a GitHub issue. Invoked with /investigate-issue or /investigate-issue (prompts for ID).
resolve-pr-comments-stack
Resolve unresolved PR review comments across an entire Graphite (gt) stack of many PRs, bottom-up, in one working directory. Use when asked to "go through this stack and resolve comments", "clean up review comments across the whole stack", or given a list/range of PR numbers that form (or partially form) a gt stack.…
release-checklist
Pre-release safety audit for the Bifrost repo. Scans database migrations changed in a release for high-scale deadlock / lock-contention risks and for work that blocks application boot time, then produces a pass/warn/fail report with a concrete remediation plan. Invoked with /release-checklist [git-ref-range]. Built to…
stack-absorb
Manually distribute working-tree changes (or a batch of edits already made on the current branch) across the correct branches of a Graphite (gt) stack, when gt absorb's blame-based auto-split doesn't match the logical grouping - e.g. new code with no prior line to blame onto, or changes that conceptually belong with a…
harness-test-writer
Add regression test cases to the Bifrost provider harness (the Postman collection run via make run-provider-harness-test) based on a merged PR or a GitHub issue. Fetches the PR/issue, traces the affected wire path in the codebase, checks existing harness coverage, designs cases following harness conventions, inserts…
review-pr
Reviews a PR or diff with multi-angle finders and adversarial verification, then reports a findings table, a merge/no-merge recommendation, required followups, and offers to create a follow-up PR. Use when the user types /review-pr [PR# | branch | path].