Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when adding a blog to a Next.js + Sanity site, building a blog section from scratch, integrating Sanity CMS for editorial content, or setting up an SEO-optimized article surface. Triggers on phrases like 'add a blog', 'build the blog', 'create blog section', 'set up blog with Sanity', 'integrate Sanity CMS', 'blog architecture', or any new-blog scoping conversation on a Next.js project.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -14% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 26% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 4% | 0% |
Universal workflow for adding a blog to a Next.js site backed by Sanity CMS. Targets a corporate blog: SEO-first, i18n-ready, performance-budgeted, accessibility-compliant.
SKILL.md is the orchestrator. The spec lives in the two reference files.
blog-technical-requirements.md — §0 intake questionnaire (30+ questions) → §1 Project Profile → §2–§20 universal spec → checklist. Edit only §0 answers and §1 per project.blog-image-style-guide.md — universal template for AI-generated hero imagery via Gemini 3 Pro Image (Nano Banana Pro). Intake questions on top, aesthetic skeleton in the middle, three example slots at the bottom.Read what's already there. Pre-filling answers from detected values is much better than asking the user. Look for:
package.json — Next.js version, next-intl, Sanity packages, Tailwind, framer-motionnext.config.{ts,js,mjs} — existing images.formats, i18n configsrc/messages/**, src/i18n/**, messages/** — current locale setsrc/app/[locale]/** or app/[locale]/** — routing patterntailwind.config.*, globals.css, design-system files — tokens, fontsCLAUDE.md, AGENTS.md, GEMINI.md — project conventions and approved overridessanity-studio/ or studio/ folderapp/layout.{tsx,jsx} — fonts, analytics, motion configpublic/brand/**, public/logo* — publisher logositemap.ts, robots.ts — existing routes.env* files — names of already-set env vars (do not log secret values)Record findings as a brief "Detected" list before the questionnaire.
Open blog-technical-requirements.md and walk through §0.
AskUserQuestion. Group related questions into single calls (max 4 per call). Pre-fill recommended answers from the scan.Write the answers into §1 "Project Profile" (in a project-local copy under docs/blog/, not in the universal source).
Use the plan template at the end of §0. One page. Phases, locked-in scope, out-of-scope items, open decisions. Wait for explicit user approval. Do not start coding.
Follow §2–§20 in order. §19 (Pass/Fail Checklist) is the definition of done. The image style guide drives §20 if AI-generated hero images are in scope.
Maintained at BuildShipGrowRepeat/nextjs-sanity-blog-skill. MIT licensed.
Other measured skills in the registry, with their headline benchmark lift.