home / skills / laurigates / claude-plugins / configure-cache-busting

configure-cache-busting skill

/configure-plugin/skills/configure-cache-busting

This skill helps configure and verify cache-busting strategies for Next.js and Vite projects to improve asset caching and performance.

npx playbooks add skill laurigates/claude-plugins --skill configure-cache-busting

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
8.0 KB
---
model: haiku
created: 2025-12-16
modified: 2026-02-11
reviewed: 2025-12-16
description: Check and configure cache-busting strategies for Next.js and Vite projects
allowed-tools: Glob, Grep, Read, Write, Edit, Bash, AskUserQuestion, TodoWrite
argument-hint: "[--check-only] [--fix] [--framework <nextjs|vite>] [--cdn <cloudflare|vercel|none>]"
name: configure-cache-busting
---

## When to Use This Skill

| Use this skill when... | Use another approach when... |
|------------------------|------------------------------|
| Configuring content hashing for Next.js or Vite builds | Optimizing server-side caching (nginx, CDN config directly) |
| Setting up CDN cache headers for Vercel or Cloudflare | Debugging build output issues (system-debugging agent) |
| Verifying cache-busting compliance after a framework upgrade | Configuring general CI/CD workflows (`/configure:workflows`) |
| Adding build verification scripts for hashed assets | Setting up container builds (`/configure:container`) |
| Auditing static asset caching strategy across a project | Profiling frontend performance (browser devtools) |

## Context

- Project root: !`pwd`
- Package files: !`find . -maxdepth 1 -name 'package.json' 2>/dev/null`
- Next.js config: !`find . -maxdepth 1 -name 'next.config.*' 2>/dev/null`
- Vite config: !`find . -maxdepth 1 -name 'vite.config.*' 2>/dev/null`
- Build output: !`find . -maxdepth 1 -type d \( -name '.next' -o -name 'dist' -o -name 'out' \) 2>/dev/null`
- CDN config: !`find . -maxdepth 1 \( -name 'vercel.json' -o -name '_headers' -o -name '_redirects' \) 2>/dev/null && find public -maxdepth 1 -name '_headers' 2>/dev/null`
- Project standards: !`find . -maxdepth 1 -name '.project-standards.yaml' 2>/dev/null`

## Parameters

Parse from command arguments:

- `--check-only`: Report compliance status without modifications (CI/CD mode)
- `--fix`: Apply fixes automatically without prompting
- `--framework <nextjs|vite>`: Override framework detection
- `--cdn <cloudflare|vercel|none>`: Specify CDN provider for cache header configuration

## Execution

Execute this cache-busting configuration check:

### Step 1: Detect project framework

Identify the framework from file structure:

| Indicator | Framework | Config File |
|-----------|-----------|-------------|
| `next.config.js` or `next.config.mjs` | Next.js | `next.config.*` |
| `next.config.ts` | Next.js | `next.config.ts` |
| `vite.config.js` or `vite.config.ts` | Vite | `vite.config.*` |
| `.next/` directory | Next.js (built) | Detection only |
| `dist/` directory + vite in package.json | Vite (built) | Detection only |

Check `package.json` dependencies for `"next"` or `"vite"`.

If both detected, prompt user to specify with `--framework`. If neither detected, report unsupported and exit.

### Step 2: Analyze current cache-busting state

For the detected framework, read config files and check:

**Next.js** - Read `next.config.js/ts` and check:
- [ ] `generateBuildId` configured for deterministic builds
- [ ] `assetPrefix` configured for CDN
- [ ] `compress: true` enabled
- [ ] `poweredByHeader: false` for security
- [ ] `generateEtags` configured
- [ ] Cache headers configured in `headers()` function

**Vite** - Read `vite.config.js/ts` and check:
- [ ] `build.rollupOptions.output.entryFileNames` uses `[hash]`
- [ ] `build.rollupOptions.output.chunkFileNames` uses `[hash]`
- [ ] `build.rollupOptions.output.assetFileNames` uses `[hash]`
- [ ] `build.manifest: true` for SSR/manifest-based routing
- [ ] `build.cssCodeSplit` configured appropriately

### Step 3: Detect CDN provider

Identify CDN from project files:

| Indicator | CDN Provider |
|-----------|--------------|
| `vercel.json` exists | Vercel |
| `.vercelignore` exists | Vercel |
| `_headers` in root or `public/` | Cloudflare Pages |
| `_redirects` exists | Cloudflare Pages / Netlify |
| `wrangler.toml` exists | Cloudflare Workers/Pages |
| None of the above | Generic / None |

### Step 4: Generate compliance report

Print a formatted compliance report:

```
Cache-Busting Compliance Report
================================
Project: [name]
Framework: [Next.js 14.x | Vite 5.x]
CDN Provider: [Vercel | Cloudflare | None detected]

Framework Configuration:
  Config file             next.config.js              [EXISTS | MISSING]
  Asset hashing           [hash] in filenames         [ENABLED | DISABLED]
  Build manifest          manifest files              [GENERATED | MISSING]
  Deterministic builds    Build ID configured         [PASS | NOT SET]
  Compression             gzip/brotli enabled         [PASS | DISABLED]

Cache Headers:
  Static assets           immutable, 1y               [CONFIGURED | MISSING]
  HTML files              no-cache, must-revalidate   [CONFIGURED | MISSING]
  API routes              varies by route             [CONFIGURED | N/A]
  CDN configuration       vercel.json/_headers        [EXISTS | MISSING]

Build Output (if built):
  Hashed filenames        app.[hash].js               [DETECTED | NOT BUILT]
  Content addressing      Unique hashes per version   [PASS | DUPLICATE]
  Manifest integrity      Valid manifest.json         [PASS | INVALID]

Overall: [X issues found]

Recommendations:
  [List specific fixes needed]
```

If `--check-only`, stop here.

### Step 5: Apply configuration (if --fix or user confirms)

Based on detected framework, create or update config files using templates from [REFERENCE.md](REFERENCE.md):

1. **Next.js**: Update `next.config.js/ts` with deterministic builds, compression, cache headers
2. **Vite**: Update `vite.config.js/ts` with content hashing, manifest, chunk splitting

### Step 6: Configure CDN cache headers

Based on detected CDN provider, create or update cache header configuration using templates from [REFERENCE.md](REFERENCE.md):

- **Vercel**: Create/update `vercel.json` with header rules
- **Cloudflare Pages**: Create `public/_headers` with cache rules
- **Generic**: Provide nginx configuration reference

### Step 7: Add build verification

Create `scripts/verify-cache-busting.js` to verify content hashing works after build. Add `package.json` scripts for build verification. Use the verification script template from [REFERENCE.md](REFERENCE.md).

### Step 8: Configure CI/CD verification

Add cache-busting verification step to GitHub Actions workflow. Use the CI workflow template from [REFERENCE.md](REFERENCE.md).

### Step 9: Update standards tracking

Update `.project-standards.yaml`:

```yaml
standards_version: "2025.1"
last_configured: "[timestamp]"
components:
  cache-busting: "2025.1"
  cache-busting-framework: "[nextjs|vite]"
  cache-busting-cdn: "[vercel|cloudflare|none]"
  cache-busting-verified: true
```

### Step 10: Print final report

Print a summary of changes applied, cache strategy overview, and next steps for verification.

For detailed configuration templates and code examples, see [REFERENCE.md](REFERENCE.md).

## Agentic Optimizations

| Context | Command |
|---------|---------|
| Quick compliance check | `/configure:cache-busting --check-only` |
| Auto-fix all issues | `/configure:cache-busting --fix` |
| Next.js project only | `/configure:cache-busting --fix --framework nextjs` |
| Vite project only | `/configure:cache-busting --fix --framework vite` |
| Cloudflare CDN headers | `/configure:cache-busting --fix --cdn cloudflare` |
| Vercel CDN headers | `/configure:cache-busting --fix --cdn vercel` |

## Output

Provide:
1. Compliance report with framework and CDN configuration status
2. List of changes made (if --fix) or proposed (if interactive)
3. Verification instructions and commands
4. CDN cache header examples
5. Next steps for deployment and monitoring

## See Also

- `/configure:all` - Run all compliance checks
- `/configure:status` - Quick compliance overview
- `/configure:workflows` - GitHub Actions workflow standards
- `/configure:dockerfile` - Container configuration with build caching
- **Next.js Documentation** - https://nextjs.org/docs/pages/api-reference/next-config-js
- **Vite Documentation** - https://vitejs.dev/config/build-options.html
- **Web.dev Caching Guide** - https://web.dev/http-cache/

Overview

This skill checks and configures cache-busting strategies for Next.js and Vite projects. It detects the framework and CDN, audits build and config files for proper content hashing and cache headers, and can apply fixes or generate verification scripts and CI steps.

How this skill works

The tool inspects project root files (package.json, next.config.*, vite.config.*, build output directories, and CDN config files) to detect framework and CDN. It analyzes framework configs for hashing, manifests, compression, and header rules, then produces a compliance report. With --fix it updates configs, adds verification scripts, configures CDN header files, and injects CI verification steps.

When to use it

  • Configuring content hashing and cache headers for Next.js or Vite builds
  • Setting up CDN cache headers for Vercel or Cloudflare Pages
  • Verifying cache-busting compliance after a framework upgrade
  • Adding automated build verification and CI checks for hashed assets
  • Auditing static asset caching strategy before production deployment

Best practices

  • Prefer immutable, long-term caching for static assets with content-hashed filenames
  • Serve HTML with no-cache/must-revalidate to ensure fresh content while assets remain cached
  • Enable deterministic builds (generateBuildId) and manifest generation for predictable caching
  • Add a verification script and CI step to fail builds on missing hashes or manifest issues
  • Tailor CDN header files (vercel.json or public/_headers) instead of relying solely on defaults

Example use cases

  • Run a quick audit in CI: /configure:cache-busting --check-only
  • Auto-fix a Next.js repo and create vercel.json headers: /configure:cache-busting --fix --framework nextjs --cdn vercel
  • Add Vite manifest and hash-based filenames before enabling CDN: /configure:cache-busting --fix --framework vite
  • Validate build output post-deploy using the added verify-cache-busting.js script
  • Audit a monorepo to detect multiple apps and enforce a consistent cache-busting standard

FAQ

What does --check-only do?

--check-only runs detection and outputs a compliance report without modifying any files, suitable for CI checks.

Which frameworks are supported?

Next.js and Vite are supported. If both or neither are detected you must specify --framework or correct project layout.

Can this configure CDN headers automatically?

Yes. When a CDN is detected or provided with --cdn, the skill will create or update vercel.json or public/_headers, or offer a generic nginx template.