[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-contentful-contentful-nextjs":3,"mdc-e8tsfk-key":37,"related-repo-contentful-contentful-nextjs":509,"related-org-contentful-contentful-nextjs":596},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":32,"sourceUrl":35,"mdContent":36},"contentful-nextjs","integrate Contentful into Next.js applications","Add and configure Contentful in an existing Next.js project. Covers installing the JavaScript SDK, configuring environment variables, creating production and preview-aware clients, fetching content in App Router or Pages Router, and wiring Draft Mode preview flows. Use when users ask to integrate Contentful with Next.js, fetch entries, set up preview or draft content, or configure the Contentful client. Also triggers on \"Contentful SDK Next.js\", \"contentful.js\", \"fetch Contentful entries\", \"get content from Contentful\", \"Contentful preview\", \"preview mode\", \"Contentful environment variables\", \"Contentful client setup\", \"create Contentful client\", \"Pages Router Contentful\", \"getStaticProps Contentful\", \"Server Components Contentful\", \"revalidate Contentful\", \"ISR Contentful\". Not for personalization or Experiences SDK setup (contentful-personalization). Not for non-Next.js frameworks (contentful-guide can route to platform docs).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"contentful","Contentful","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fcontentful.png",[12,14,17,20],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"Next.js","next-js",{"name":18,"slug":19,"type":13},"CMS","cms",{"name":21,"slug":22,"type":13},"Frontend","frontend",36,"https:\u002F\u002Fgithub.com\u002Fcontentful\u002Fskills","2026-07-12T08:47:49.223411",null,2,[29,8,30,31],"agents","optimization","skills",{"repoUrl":24,"stars":23,"forks":27,"topics":33,"description":34},[29,8,30,31],"Skills for teaching agents how to build on Contentful.","https:\u002F\u002Fgithub.com\u002Fcontentful\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fcontentful-nextjs","---\nname: contentful-nextjs\ndescription: >-\n  Add and configure Contentful in an existing Next.js project. Covers installing\n  the JavaScript SDK, configuring environment variables, creating production and\n  preview-aware clients, fetching content in App Router or Pages Router, and\n  wiring Draft Mode preview flows. Use when users ask to integrate Contentful\n  with Next.js, fetch entries, set up preview or draft content, or configure\n  the Contentful client. Also triggers on \"Contentful SDK Next.js\",\n  \"contentful.js\", \"fetch Contentful entries\", \"get content from Contentful\",\n  \"Contentful preview\", \"preview mode\", \"Contentful environment variables\",\n  \"Contentful client setup\", \"create Contentful client\", \"Pages Router\n  Contentful\", \"getStaticProps Contentful\", \"Server Components Contentful\",\n  \"revalidate Contentful\", \"ISR Contentful\". Not for personalization or\n  Experiences SDK setup (contentful-personalization). Not for non-Next.js\n  frameworks (contentful-guide can route to platform docs).\nargument-hint: \"[what to set up]\"\nallowed-tools: Bash(npm install contentful) Bash(npm install @contentful\u002Frich-text-*) mcp__contentful-mcp__* mcp__plugin_contentful_contentful-mcp__*\n---\n\n# Contentful Next.js\n\nUse this skill to integrate Contentful into an existing Next.js application.\n\nContentful is a headless, API-first CMS (composable content platform) that lets Next.js apps fetch structured content through delivery and preview APIs.\n\n## Scope\n\n- Next.js App Router and Pages Router.\n- Published content delivery (CDA).\n- Preview content delivery with Draft Mode (CPA).\n- Environment variable and client setup patterns.\n- Environment alias-aware setup for stable deployment paths.\n\n## Not in scope\n\n- Personalization\u002Foptimization implementations.\n- Studio Experiences SDK setup.\n- Full content-model strategy design.\n\n## Contentful MCP note\n\n- If the user wants easier agent-driven interaction with Contentful during setup, suggest the Contentful MCP server docs: `https:\u002F\u002Fwww.contentful.com\u002Fdevelopers\u002Fdocs\u002Ftools\u002Fmcp-server\u002F`.\n- Keep this skill focused on Next.js implementation. MCP guidance complements setup but does not replace app-side client wiring.\n\n## Project state\n\n```!\necho \"=== Contentful packages ===\" && node -e \"try{const p=require('.\u002Fpackage.json');const d={...p.dependencies,...p.devDependencies};const c=Object.entries(d).filter(([k])=>k.includes('contentful'));console.log(c.length?c.map(([k,v])=>k+'@'+v).join('\\n'):'(Contentful SDK not installed)')}catch{console.log('(no package.json)')}\" 2>\u002Fdev\u002Fnull\necho \"\"\necho \"=== Contentful env vars ===\" && grep -h CONTENTFUL .env.local .env 2>\u002Fdev\u002Fnull | sed 's\u002F=.*\u002F=\u003Cset>\u002F' || echo \"(no Contentful env vars found in .env.local or .env)\"\necho \"\"\necho \"=== Router type ===\" && ([ -d \"app\" ] && echo \"App Router detected (app\u002F directory exists)\" || ([ -d \"pages\" ] && echo \"Pages Router detected (pages\u002F directory exists)\" || echo \"(could not detect router type)\"))\n```\n\n## Workflow\n\n1. Check the latest stable Next.js release online at `https:\u002F\u002Fgithub.com\u002Fvercel\u002Fnext.js\u002Freleases` when version-specific guidance is needed.\n2. Confirm Next.js project structure (App Router vs Pages Router).\n3. Configure required env vars. If they are missing, ask the user to add them to `.env.local` before continuing, and explain where to find each value.\n4. Install and initialize `contentful` SDK.\n5. Implement published-content fetching.\n6. Add preview-aware behavior for Draft Mode.\n7. Validate with a minimal test route\u002Fpage and troubleshooting checklist.\n\n## Version-check policy\n\n- Do not rely on memory for \"latest Next.js version\" claims.\n- Verify against `https:\u002F\u002Fgithub.com\u002Fvercel\u002Fnext.js\u002Freleases` before recommending upgrades, compatibility workarounds, or version-specific fixes.\n- Treat the latest non-prerelease tag as default unless the user explicitly asks for canary\u002FRC guidance.\n\n## Required environment variables\n\n- `CONTENTFUL_SPACE_ID` - Find it in the Contentful URL (`\u002Fspaces\u002F\u003CSPACE_ID>\u002F...`) or in **Space settings -> API keys**.\n- `CONTENTFUL_ACCESS_TOKEN` - CDA token from **Space settings -> API keys**.\n- `CONTENTFUL_PREVIEW_ACCESS_TOKEN` (for preview workflows) - CPA token from **Space settings -> API keys**.\n\nCreating an API key in Contentful provides both tokens needed here:\n- CDA token -> `CONTENTFUL_ACCESS_TOKEN`\n- CPA token -> `CONTENTFUL_PREVIEW_ACCESS_TOKEN`\n\n## Defaults\n\n- If the user does not specify router type, default to Next.js App Router guidance.\n- Use CDA host for normal delivery.\n- Use `preview.contentful.com` and preview token when Draft Mode is enabled.\n- Prefer an environment alias (for example `master`) as the client `environment` value to decouple runtime clients from release environment IDs.\n- Keep Contentful client creation in a shared utility module.\n\n## References\n\n- [Next.js setup](references\u002Fnextjs-setup.md)\n- [Preview and Draft Mode](references\u002Fpreview-and-draft-mode.md)\n- [Troubleshooting](references\u002Ftroubleshooting.md)\n",{"data":38,"body":41},{"name":4,"description":6,"argument-hint":39,"allowed-tools":40},"[what to set up]","Bash(npm install contentful) Bash(npm install @contentful\u002Frich-text-*) mcp__contentful-mcp__* mcp__plugin_contentful_contentful-mcp__*",{"type":42,"children":43},"root",[44,52,58,63,70,100,106,124,130,152,158,214,220,282,288,313,319,380,385,408,414,466,472,503],{"type":45,"tag":46,"props":47,"children":48},"element","h1",{"id":4},[49],{"type":50,"value":51},"text","Contentful Next.js",{"type":45,"tag":53,"props":54,"children":55},"p",{},[56],{"type":50,"value":57},"Use this skill to integrate Contentful into an existing Next.js application.",{"type":45,"tag":53,"props":59,"children":60},{},[61],{"type":50,"value":62},"Contentful is a headless, API-first CMS (composable content platform) that lets Next.js apps fetch structured content through delivery and preview APIs.",{"type":45,"tag":64,"props":65,"children":67},"h2",{"id":66},"scope",[68],{"type":50,"value":69},"Scope",{"type":45,"tag":71,"props":72,"children":73},"ul",{},[74,80,85,90,95],{"type":45,"tag":75,"props":76,"children":77},"li",{},[78],{"type":50,"value":79},"Next.js App Router and Pages Router.",{"type":45,"tag":75,"props":81,"children":82},{},[83],{"type":50,"value":84},"Published content delivery (CDA).",{"type":45,"tag":75,"props":86,"children":87},{},[88],{"type":50,"value":89},"Preview content delivery with Draft Mode (CPA).",{"type":45,"tag":75,"props":91,"children":92},{},[93],{"type":50,"value":94},"Environment variable and client setup patterns.",{"type":45,"tag":75,"props":96,"children":97},{},[98],{"type":50,"value":99},"Environment alias-aware setup for stable deployment paths.",{"type":45,"tag":64,"props":101,"children":103},{"id":102},"not-in-scope",[104],{"type":50,"value":105},"Not in scope",{"type":45,"tag":71,"props":107,"children":108},{},[109,114,119],{"type":45,"tag":75,"props":110,"children":111},{},[112],{"type":50,"value":113},"Personalization\u002Foptimization implementations.",{"type":45,"tag":75,"props":115,"children":116},{},[117],{"type":50,"value":118},"Studio Experiences SDK setup.",{"type":45,"tag":75,"props":120,"children":121},{},[122],{"type":50,"value":123},"Full content-model strategy design.",{"type":45,"tag":64,"props":125,"children":127},{"id":126},"contentful-mcp-note",[128],{"type":50,"value":129},"Contentful MCP note",{"type":45,"tag":71,"props":131,"children":132},{},[133,147],{"type":45,"tag":75,"props":134,"children":135},{},[136,138,145],{"type":50,"value":137},"If the user wants easier agent-driven interaction with Contentful during setup, suggest the Contentful MCP server docs: ",{"type":45,"tag":139,"props":140,"children":142},"code",{"className":141},[],[143],{"type":50,"value":144},"https:\u002F\u002Fwww.contentful.com\u002Fdevelopers\u002Fdocs\u002Ftools\u002Fmcp-server\u002F",{"type":50,"value":146},".",{"type":45,"tag":75,"props":148,"children":149},{},[150],{"type":50,"value":151},"Keep this skill focused on Next.js implementation. MCP guidance complements setup but does not replace app-side client wiring.",{"type":45,"tag":64,"props":153,"children":155},{"id":154},"project-state",[156],{"type":50,"value":157},"Project state",{"type":45,"tag":159,"props":160,"children":165},"pre",{"className":161,"code":162,"language":163,"meta":164,"style":164},"language-! shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","echo \"=== Contentful packages ===\" && node -e \"try{const p=require('.\u002Fpackage.json');const d={...p.dependencies,...p.devDependencies};const c=Object.entries(d).filter(([k])=>k.includes('contentful'));console.log(c.length?c.map(([k,v])=>k+'@'+v).join('\\n'):'(Contentful SDK not installed)')}catch{console.log('(no package.json)')}\" 2>\u002Fdev\u002Fnull\necho \"\"\necho \"=== Contentful env vars ===\" && grep -h CONTENTFUL .env.local .env 2>\u002Fdev\u002Fnull | sed 's\u002F=.*\u002F=\u003Cset>\u002F' || echo \"(no Contentful env vars found in .env.local or .env)\"\necho \"\"\necho \"=== Router type ===\" && ([ -d \"app\" ] && echo \"App Router detected (app\u002F directory exists)\" || ([ -d \"pages\" ] && echo \"Pages Router detected (pages\u002F directory exists)\" || echo \"(could not detect router type)\"))\n","!","",[166],{"type":45,"tag":139,"props":167,"children":168},{"__ignoreMap":164},[169,180,188,197,205],{"type":45,"tag":170,"props":171,"children":174},"span",{"class":172,"line":173},"line",1,[175],{"type":45,"tag":170,"props":176,"children":177},{},[178],{"type":50,"value":179},"echo \"=== Contentful packages ===\" && node -e \"try{const p=require('.\u002Fpackage.json');const d={...p.dependencies,...p.devDependencies};const c=Object.entries(d).filter(([k])=>k.includes('contentful'));console.log(c.length?c.map(([k,v])=>k+'@'+v).join('\\n'):'(Contentful SDK not installed)')}catch{console.log('(no package.json)')}\" 2>\u002Fdev\u002Fnull\n",{"type":45,"tag":170,"props":181,"children":182},{"class":172,"line":27},[183],{"type":45,"tag":170,"props":184,"children":185},{},[186],{"type":50,"value":187},"echo \"\"\n",{"type":45,"tag":170,"props":189,"children":191},{"class":172,"line":190},3,[192],{"type":45,"tag":170,"props":193,"children":194},{},[195],{"type":50,"value":196},"echo \"=== Contentful env vars ===\" && grep -h CONTENTFUL .env.local .env 2>\u002Fdev\u002Fnull | sed 's\u002F=.*\u002F=\u003Cset>\u002F' || echo \"(no Contentful env vars found in .env.local or .env)\"\n",{"type":45,"tag":170,"props":198,"children":200},{"class":172,"line":199},4,[201],{"type":45,"tag":170,"props":202,"children":203},{},[204],{"type":50,"value":187},{"type":45,"tag":170,"props":206,"children":208},{"class":172,"line":207},5,[209],{"type":45,"tag":170,"props":210,"children":211},{},[212],{"type":50,"value":213},"echo \"=== Router type ===\" && ([ -d \"app\" ] && echo \"App Router detected (app\u002F directory exists)\" || ([ -d \"pages\" ] && echo \"Pages Router detected (pages\u002F directory exists)\" || echo \"(could not detect router type)\"))\n",{"type":45,"tag":64,"props":215,"children":217},{"id":216},"workflow",[218],{"type":50,"value":219},"Workflow",{"type":45,"tag":221,"props":222,"children":223},"ol",{},[224,237,242,255,267,272,277],{"type":45,"tag":75,"props":225,"children":226},{},[227,229,235],{"type":50,"value":228},"Check the latest stable Next.js release online at ",{"type":45,"tag":139,"props":230,"children":232},{"className":231},[],[233],{"type":50,"value":234},"https:\u002F\u002Fgithub.com\u002Fvercel\u002Fnext.js\u002Freleases",{"type":50,"value":236}," when version-specific guidance is needed.",{"type":45,"tag":75,"props":238,"children":239},{},[240],{"type":50,"value":241},"Confirm Next.js project structure (App Router vs Pages Router).",{"type":45,"tag":75,"props":243,"children":244},{},[245,247,253],{"type":50,"value":246},"Configure required env vars. If they are missing, ask the user to add them to ",{"type":45,"tag":139,"props":248,"children":250},{"className":249},[],[251],{"type":50,"value":252},".env.local",{"type":50,"value":254}," before continuing, and explain where to find each value.",{"type":45,"tag":75,"props":256,"children":257},{},[258,260,265],{"type":50,"value":259},"Install and initialize ",{"type":45,"tag":139,"props":261,"children":263},{"className":262},[],[264],{"type":50,"value":8},{"type":50,"value":266}," SDK.",{"type":45,"tag":75,"props":268,"children":269},{},[270],{"type":50,"value":271},"Implement published-content fetching.",{"type":45,"tag":75,"props":273,"children":274},{},[275],{"type":50,"value":276},"Add preview-aware behavior for Draft Mode.",{"type":45,"tag":75,"props":278,"children":279},{},[280],{"type":50,"value":281},"Validate with a minimal test route\u002Fpage and troubleshooting checklist.",{"type":45,"tag":64,"props":283,"children":285},{"id":284},"version-check-policy",[286],{"type":50,"value":287},"Version-check policy",{"type":45,"tag":71,"props":289,"children":290},{},[291,296,308],{"type":45,"tag":75,"props":292,"children":293},{},[294],{"type":50,"value":295},"Do not rely on memory for \"latest Next.js version\" claims.",{"type":45,"tag":75,"props":297,"children":298},{},[299,301,306],{"type":50,"value":300},"Verify against ",{"type":45,"tag":139,"props":302,"children":304},{"className":303},[],[305],{"type":50,"value":234},{"type":50,"value":307}," before recommending upgrades, compatibility workarounds, or version-specific fixes.",{"type":45,"tag":75,"props":309,"children":310},{},[311],{"type":50,"value":312},"Treat the latest non-prerelease tag as default unless the user explicitly asks for canary\u002FRC guidance.",{"type":45,"tag":64,"props":314,"children":316},{"id":315},"required-environment-variables",[317],{"type":50,"value":318},"Required environment variables",{"type":45,"tag":71,"props":320,"children":321},{},[322,348,364],{"type":45,"tag":75,"props":323,"children":324},{},[325,331,333,339,341,347],{"type":45,"tag":139,"props":326,"children":328},{"className":327},[],[329],{"type":50,"value":330},"CONTENTFUL_SPACE_ID",{"type":50,"value":332}," - Find it in the Contentful URL (",{"type":45,"tag":139,"props":334,"children":336},{"className":335},[],[337],{"type":50,"value":338},"\u002Fspaces\u002F\u003CSPACE_ID>\u002F...",{"type":50,"value":340},") or in ",{"type":45,"tag":342,"props":343,"children":344},"strong",{},[345],{"type":50,"value":346},"Space settings -> API keys",{"type":50,"value":146},{"type":45,"tag":75,"props":349,"children":350},{},[351,357,359,363],{"type":45,"tag":139,"props":352,"children":354},{"className":353},[],[355],{"type":50,"value":356},"CONTENTFUL_ACCESS_TOKEN",{"type":50,"value":358}," - CDA token from ",{"type":45,"tag":342,"props":360,"children":361},{},[362],{"type":50,"value":346},{"type":50,"value":146},{"type":45,"tag":75,"props":365,"children":366},{},[367,373,375,379],{"type":45,"tag":139,"props":368,"children":370},{"className":369},[],[371],{"type":50,"value":372},"CONTENTFUL_PREVIEW_ACCESS_TOKEN",{"type":50,"value":374}," (for preview workflows) - CPA token from ",{"type":45,"tag":342,"props":376,"children":377},{},[378],{"type":50,"value":346},{"type":50,"value":146},{"type":45,"tag":53,"props":381,"children":382},{},[383],{"type":50,"value":384},"Creating an API key in Contentful provides both tokens needed here:",{"type":45,"tag":71,"props":386,"children":387},{},[388,398],{"type":45,"tag":75,"props":389,"children":390},{},[391,393],{"type":50,"value":392},"CDA token -> ",{"type":45,"tag":139,"props":394,"children":396},{"className":395},[],[397],{"type":50,"value":356},{"type":45,"tag":75,"props":399,"children":400},{},[401,403],{"type":50,"value":402},"CPA token -> ",{"type":45,"tag":139,"props":404,"children":406},{"className":405},[],[407],{"type":50,"value":372},{"type":45,"tag":64,"props":409,"children":411},{"id":410},"defaults",[412],{"type":50,"value":413},"Defaults",{"type":45,"tag":71,"props":415,"children":416},{},[417,422,427,440,461],{"type":45,"tag":75,"props":418,"children":419},{},[420],{"type":50,"value":421},"If the user does not specify router type, default to Next.js App Router guidance.",{"type":45,"tag":75,"props":423,"children":424},{},[425],{"type":50,"value":426},"Use CDA host for normal delivery.",{"type":45,"tag":75,"props":428,"children":429},{},[430,432,438],{"type":50,"value":431},"Use ",{"type":45,"tag":139,"props":433,"children":435},{"className":434},[],[436],{"type":50,"value":437},"preview.contentful.com",{"type":50,"value":439}," and preview token when Draft Mode is enabled.",{"type":45,"tag":75,"props":441,"children":442},{},[443,445,451,453,459],{"type":50,"value":444},"Prefer an environment alias (for example ",{"type":45,"tag":139,"props":446,"children":448},{"className":447},[],[449],{"type":50,"value":450},"master",{"type":50,"value":452},") as the client ",{"type":45,"tag":139,"props":454,"children":456},{"className":455},[],[457],{"type":50,"value":458},"environment",{"type":50,"value":460}," value to decouple runtime clients from release environment IDs.",{"type":45,"tag":75,"props":462,"children":463},{},[464],{"type":50,"value":465},"Keep Contentful client creation in a shared utility module.",{"type":45,"tag":64,"props":467,"children":469},{"id":468},"references",[470],{"type":50,"value":471},"References",{"type":45,"tag":71,"props":473,"children":474},{},[475,485,494],{"type":45,"tag":75,"props":476,"children":477},{},[478],{"type":45,"tag":479,"props":480,"children":482},"a",{"href":481},"references\u002Fnextjs-setup.md",[483],{"type":50,"value":484},"Next.js setup",{"type":45,"tag":75,"props":486,"children":487},{},[488],{"type":45,"tag":479,"props":489,"children":491},{"href":490},"references\u002Fpreview-and-draft-mode.md",[492],{"type":50,"value":493},"Preview and Draft Mode",{"type":45,"tag":75,"props":495,"children":496},{},[497],{"type":45,"tag":479,"props":498,"children":500},{"href":499},"references\u002Ftroubleshooting.md",[501],{"type":50,"value":502},"Troubleshooting",{"type":45,"tag":504,"props":505,"children":506},"style",{},[507],{"type":50,"value":508},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":510,"total":595},[511,525,536,548,562,577,584],{"slug":512,"name":512,"fn":513,"description":514,"org":515,"tags":516,"stars":23,"repoUrl":24,"updatedAt":524},"contentful-api","integrate Contentful REST and GraphQL APIs","Comprehensive Contentful REST API guide. Covers Content Management API (CMA) for creating\u002Fupdating content, Content Delivery API (CDA) for fetching published content, Preview API, Images API, and GraphQL API. All examples use curl\u002FHTTP — language-agnostic.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[517,520,521],{"name":518,"slug":519,"type":13},"API Development","api-development",{"name":18,"slug":19,"type":13},{"name":522,"slug":523,"type":13},"GraphQL","graphql","2026-07-12T08:47:43.592187",{"slug":526,"name":526,"fn":527,"description":528,"org":529,"tags":530,"stars":23,"repoUrl":24,"updatedAt":535},"contentful-custom-app-enhancement","enhance and debug Contentful custom apps","Improve, debug, and extend an existing Contentful App Framework custom app in a customer's own repository. Use when users provide a bug report, feature request, support note, customer feedback, or direct change request for an existing custom app, including app configuration, sidebar, field editor, dialog, page, home, App Action, Function, installation parameters, local validation, or PR preparation. Also triggers on \"fix my Contentful app\", \"improve a custom app\", \"enhance App Framework app\", \"debug custom app\", \"update sidebar app\", and \"custom app feature request\". Not for creating a brand new app from scratch (contentful-custom-app-from-scratch), generic API examples (contentful-api), migrations (contentful-migration), or website integration (contentful-nextjs).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[531,532],{"name":18,"slug":19,"type":13},{"name":533,"slug":534,"type":13},"Debugging","debugging","2026-07-12T08:48:03.887678",{"slug":537,"name":537,"fn":538,"description":539,"org":540,"tags":541,"stars":23,"repoUrl":24,"updatedAt":547},"contentful-custom-app-from-scratch","build custom Contentful App Framework apps","Design, scaffold, build, and validate a new Contentful App Framework custom app for a customer's own repository or workspace. Use when users want to create a custom app from an idea, choose App Framework locations, build a sidebar app, field editor app, page app, dialog, configuration screen, App Action, or Function-backed app, scaffold with create-contentful-app, or make a locally testable app for an organization-specific Contentful workflow. Also triggers on \"build a Contentful app\", \"custom app from scratch\", \"App Framework app\", \"sidebar app\", \"field editor app\", \"page app\", \"app action\", and \"app function\". Not for generic Contentful API examples (contentful-api), content model migrations (contentful-migration), or website integration (contentful-nextjs).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[542,545,546],{"name":543,"slug":544,"type":13},"Architecture","architecture",{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},"2026-07-12T08:48:05.103951",{"slug":549,"name":549,"fn":550,"description":551,"org":552,"tags":553,"stars":23,"repoUrl":24,"updatedAt":561},"contentful-guide","guide Contentful implementation and concepts","Explain core Contentful concepts and route users to the right implementation skill or documentation. Use when users ask conceptual questions, need terminology clarified, want help choosing between APIs (CDA\u002FCMA\u002FCPA\u002FGraphQL), or need guidance on the Contentful MCP server. Also triggers on \"Contentful 101\", \"which Contentful API\", \"how do I get started\", \"which skill should I use\", \"what does X mean in Contentful\", \"Contentful glossary\", \"CDA vs CPA\", \"CDA vs GraphQL\", \"how does Contentful work\", \"Contentful architecture\", \"explain environments\", \"what are aliases\", \"content model design\", \"headless CMS\", \"Contentful MCP\", \"MCP server\", \"set up MCP\", \"Remix Contentful\", \"Astro Contentful\", \"Gatsby Contentful\", \"SvelteKit Contentful\", \"Nuxt Contentful\". Not for framework-specific implementation (contentful-nextjs), migrations (contentful-migration), personalization (contentful-personalization), or hands-on REST\u002FGraphQL request examples (contentful-api).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[554,555,558],{"name":18,"slug":19,"type":13},{"name":556,"slug":557,"type":13},"Documentation","documentation",{"name":559,"slug":560,"type":13},"Reference","reference","2026-07-12T08:47:45.041396",{"slug":563,"name":563,"fn":564,"description":565,"org":566,"tags":567,"stars":23,"repoUrl":24,"updatedAt":576},"contentful-migration","run Contentful content model migrations","Write and run Contentful content model migration scripts using the contentful-migration library and the Contentful CLI. Covers creating, editing, and deleting content types and fields, validations, editor interface configuration, editor layouts, sidebar widgets, entry transformations, tags, annotations, and the migration context object. Use when asked to write a migration, create or add a content type, add, rename, or delete fields, change or update a content model, transform entries, derive linked entries, configure editor controls, or run a migration script. Also triggers on \"migration script\", \"contentful-migration\", \"schema migration\", \"content model migration\", \"field validation\", \"editor interface\", \"editor layout\", \"sidebar widget\", \"moveField\", \"changeFieldId\", \"rich text field\", \"reference field\", \"link field\". Not for SDK client setup or Next.js integration (contentful-nextjs). Not for Contentful terminology or API routing (contentful-guide).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[568,571,572,573],{"name":569,"slug":570,"type":13},"CLI","cli",{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"name":574,"slug":575,"type":13},"Migration","migration","2026-07-12T08:47:50.532378",{"slug":4,"name":4,"fn":5,"description":6,"org":578,"tags":579,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[580,581,582,583],{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"name":21,"slug":22,"type":13},{"name":15,"slug":16,"type":13},{"slug":585,"name":585,"fn":586,"description":587,"org":588,"tags":589,"stars":23,"repoUrl":24,"updatedAt":594},"contentful-personalization","build and debug Contentful personalization","Implement, extend, and debug Contentful personalization. Use onboarding for new, project-wide, or unknown setups; use extend-existing only for scoped work on an explicitly working integration. Trigger keywords: personalization, optimization, ninetailed, A\u002FB test, experiment, multivariate test, targeting, audience targeting, segments, variants, content variants, set up personalization, implement personalization, enable personalization, personalization not working, personalization broken, personalize this component, am I ready for personalization, experience API, Contentful Experiences, Experiences SDK, Studio Experiences, personalization in Next.js, @contentful\u002Foptimization, @ninetailed\u002Fexperience.js, run an experiment, check this URL, debug this live page, inspect network requests, check console errors, experience.ninetailed.co",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[590,591,592,593],{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"name":533,"slug":534,"type":13},{"name":21,"slug":22,"type":13},"2026-08-01T05:44:01.030731",7,{"items":597,"total":654},[598,610,616,621,627,633,640,647],{"slug":599,"name":599,"fn":600,"description":601,"org":602,"tags":603,"stars":607,"repoUrl":608,"updatedAt":609},"contentful-help","configure and diagnose Contentful projects","Diagnose, configure, and look up Contentful topics. Trigger keywords: contentful help, contentful doctor, contentful setup",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[604,605,606],{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"name":556,"slug":557,"type":13},61,"https:\u002F\u002Fgithub.com\u002Fcontentful\u002Fskill-kit","2026-07-12T08:48:00.085365",{"slug":512,"name":512,"fn":513,"description":514,"org":611,"tags":612,"stars":23,"repoUrl":24,"updatedAt":524},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[613,614,615],{"name":518,"slug":519,"type":13},{"name":18,"slug":19,"type":13},{"name":522,"slug":523,"type":13},{"slug":526,"name":526,"fn":527,"description":528,"org":617,"tags":618,"stars":23,"repoUrl":24,"updatedAt":535},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[619,620],{"name":18,"slug":19,"type":13},{"name":533,"slug":534,"type":13},{"slug":537,"name":537,"fn":538,"description":539,"org":622,"tags":623,"stars":23,"repoUrl":24,"updatedAt":547},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[624,625,626],{"name":543,"slug":544,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"slug":549,"name":549,"fn":550,"description":551,"org":628,"tags":629,"stars":23,"repoUrl":24,"updatedAt":561},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[630,631,632],{"name":18,"slug":19,"type":13},{"name":556,"slug":557,"type":13},{"name":559,"slug":560,"type":13},{"slug":563,"name":563,"fn":564,"description":565,"org":634,"tags":635,"stars":23,"repoUrl":24,"updatedAt":576},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[636,637,638,639],{"name":569,"slug":570,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"name":574,"slug":575,"type":13},{"slug":4,"name":4,"fn":5,"description":6,"org":641,"tags":642,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[643,644,645,646],{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"name":21,"slug":22,"type":13},{"name":15,"slug":16,"type":13},{"slug":585,"name":585,"fn":586,"description":587,"org":648,"tags":649,"stars":23,"repoUrl":24,"updatedAt":594},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[650,651,652,653],{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"name":533,"slug":534,"type":13},{"name":21,"slug":22,"type":13},8]