caching-patterns

A set of Rails techniques for storing and reusing responses or page parts so they do not need to be rebuilt every time. It covers browser and server caching, including ETags, fragments, collections, and database-backed Solid Cache.

In plain words
What is it for?
It helps add HTTP caching to controllers, cache view fragments and lists, cache computations, configure Solid Cache, and scope cached results to accounts.
Why use it?
It reduces repeated work when serving pages or calculating expensive results, while allowing cached data to be refreshed when related records change.

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/dilolabs/nosia/caching-patterns
Any agent
npx skills add dilolabs/nosia --skill caching-patterns
Clone the repo
git clone --depth 1 https://github.com/dilolabs/nosia

Made for: Claude Code, Codex.

Per session 81 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,945 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. 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.00081 $0.01945
Opus 5 $0.00041 $0.00972
Sonnet 5 $0.00016 $0.00389
Haiku 4.5 $0.00008 $0.00194

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

Security

Grade A, and why

caching-patterns scanned grade A with 0 findings 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 3d 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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/caching-patterns/SKILL.md · 296 lines

How it starts

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

Caching Patterns

Philosophy: Cache Aggressively, Invalidate Precisely

  • HTTP caching with ETags and fresh_when for free 304 Not Modified responses
  • Russian doll caching with touch: true for automatic cache invalidation
  • Fragment caching in views with cache keys based on updated_at timestamps
  • Solid Cache (database-backed, no Redis) for production caching
  • Collection caching with cache_collection for lists
  • Low-level caching with Rails.cache.fetch for expensive computations

Project Knowledge

Stack: Solid Cache (database-backed), Turbo for page refreshes, ETags with conditional GET, fragment caching in ERB views, collection caching for lists.

Multi-tenancy: Cache keys scoped to account. URL-based: app.myapp.com/123/projects/456.

Commands:

rails solid_cache:install        # Install Solid Cache
rails db:migrate                 # Run cache migrations
rails cache:clear                # Clear cache

Caching Strategy Hierarchy

Apply caching in this order (highest impact first):

  1. HTTP caching -- fresh_when / stale? in controllers (free 304s)
  2. Fragment caching -- cache blocks in views (Russian doll)
  3. Collection caching -- cache_collection for lists of partials
  4. Low-level caching -- Rails.cache.fetch for expensive computations

Pattern 1: HTTP Caching with ETags

See @references/http-caching.md for full details.

# Single resource -- returns 304 if ETag matches
class BoardsController < ApplicationController
  def show
    @board = Current.account.boards.find(params[:id])
    fresh_when @board
  end

  def index
    @boards = Current.account.boards.includes(:creator)
    fresh_when @boards
  end
end

# Composite ETag from multiple objects
def show
  fresh_when [@board, @card, Current.user]
end

# API with stale? for conditional rendering
def show
  @board = Current.account.boards.find(params[:id])
  if stale?(@board)
    render json: @board
  end
end

# Custom ETag with parameters
fresh_when etag: [@activities, @report_date, Current.user.timezone]

Read the full file on GitHub · 296 lines

Files

What ships with it

3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

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. 3d ago First seen · 296 lines · 81 tokens per session scan A 52701c4e9140

Subscribe to this mod's changes

caching-patterns is a skill published in the GitHub repository dilolabs/nosia (212 stars, last pushed 25d ago), licensed MIT. It adds 81 tokens to every session and 1,945 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

debugging-output-and-previewing-html-using-ray

Use when user says "send to Ray," "show in Ray," "debug in Ray," "log to Ray," "display in Ray," or wants to visualize data, debug output, or show diagrams in the Ray desktop application.

coollabsio/coolify · 58 tokens

fortify-development

ACTIVATE when the user works on authentication in Laravel. This includes login, registration, password reset, email verification, two-factor authentication (2FA/TOTP/QR codes/recovery codes), passkeys, profile updates, password confirmation, or any auth-related routes and controllers. Activate when the user mentions…

coollabsio/coolify · 199 tokens

timeboxed-iterating

Use when the user specifies a task and a duration, and the work should be done iteratively by subagents over that time period.

av/harbor · 32 tokens

project-snmp-profiles-authoring

Use when editing Netdata SNMP profile YAMLs, topology SNMP profiles, ddsnmp profile parsing, or profile-format documentation. Requires checking source MIB field accessibility, especially MAX-ACCESS not-accessible INDEX objects, before adding or changing profile symbols.

netdata/netdata · 60 tokens

learn-pr-preview

Use only when the user explicitly asks to build, run, preview, inspect, or validate learn.netdata.cloud locally using the contents of a PR or documentation branch before merge. Do not trigger for ordinary docs edits unless the user asks for a local Learn preview.

netdata/netdata · 56 tokens

add-custom-domain

Add a custom domain to a Temps project and provision an automatic SSL/TLS certificate via Let's Encrypt, driven entirely from the @temps-sdk/cli CLI. Handles subdomains, apex domains, HTTP-01 and DNS-01 challenges, and wildcard domains. Use when the user wants to: (1) Add a custom domain to their Temps app, (2) Set up…

gotempsh/temps · 153 tokens