Evaluates Next.js routes and outputs optimal revalidate settings, cache tags for ISR, SSR configurations, or streaming patterns. This skill should be used when optimizing Next.js caching strategies, configuring Incremental Static Regeneration, planning cache invalidation, or choosing between SSR/ISR/SSG. Use for Next.js caching, revalidation, ISR, cache tags, on-demand revalidation, or rendering strategies.
View on GitHubhopeoverture/worldbuilding-app-skills
revalidation-strategy-planner
plugins/revalidation-strategy-planner/skills/revalidation-strategy-planner/SKILL.md
January 21, 2026
Select agents to install to:
npx add-skill https://github.com/hopeoverture/worldbuilding-app-skills/blob/main/plugins/revalidation-strategy-planner/skills/revalidation-strategy-planner/SKILL.md -a claude-code --skill revalidation-strategy-plannerInstallation paths:
.claude/skills/revalidation-strategy-planner/# Revalidation Strategy Planner
Analyze Next.js application routes and recommend optimal caching and revalidation strategies for performance and data freshness.
## Overview
To optimize Next.js caching strategies:
1. Analyze route characteristics (data freshness requirements, update frequency)
2. Determine appropriate rendering strategy (SSG, ISR, SSR, streaming)
3. Configure revalidation intervals for ISR routes
4. Implement cache tags for on-demand revalidation
5. Set up streaming for progressive page loading
## Rendering Strategies
### Static Site Generation (SSG)
To use SSG for rarely changing content:
```typescript
// app/about/page.tsx
export default async function AboutPage() {
// Generated at build time, no revalidation
return <div>About Us</div>;
}
```
**Best for:**
- Marketing pages
- Documentation
- Static content that rarely changes
### Incremental Static Regeneration (ISR)
To use ISR for periodically updated content:
```typescript
// app/entities/[id]/page.tsx
export const revalidate = 3600; // Revalidate every hour
export default async function EntityPage({ params }: { params: { id: string } }) {
const entity = await fetchEntity(params.id);
return <EntityDetail entity={entity} />;
}
```
**Best for:**
- Entity detail pages
- Blog posts
- Product listings
- Content with predictable update patterns
### Server-Side Rendering (SSR)
To use SSR for real-time data:
```typescript
// app/dashboard/page.tsx
export const dynamic = 'force-dynamic';
export default async function Dashboard() {
const data = await fetchUserData();
return <DashboardView data={data} />;
}
```
**Best for:**
- User dashboards
- Personalized content
- Real-time data displays
- Authentication-dependent pages
### Streaming
To use streaming for progressive loading:
```typescript
// app/timeline/page.tsx
import { Suspense } from 'react';
export default function TimelinePage() {
return (
<div>
<TimelineHeader />
<Suspense fallback={<TimelineLoa