{
  "schemaVersion": "1.0",
  "item": {
    "slug": "nextjs",
    "name": "NextJS",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ivangdavila/nextjs",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/nextjs",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/nextjs",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=nextjs",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "auth.md",
      "caching.md",
      "data-fetching.md",
      "deployment.md",
      "memory-template.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/nextjs"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/nextjs",
    "agentPageUrl": "https://openagent3.xyz/skills/nextjs/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nextjs/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nextjs/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Setup",
        "body": "On first use, read setup.md for project integration."
      },
      {
        "title": "When to Use",
        "body": "User needs Next.js expertise — routing, data fetching, caching, authentication, or deployment. Agent handles App Router patterns, server/client boundaries, and production optimization."
      },
      {
        "title": "Architecture",
        "body": "Project patterns stored in ~/nextjs/. See memory-template.md for setup.\n\n~/nextjs/\n├── memory.md          # Project conventions, patterns\n└── projects/          # Per-project learnings"
      },
      {
        "title": "Quick Reference",
        "body": "TopicFileSetupsetup.mdMemory templatememory-template.mdRouting (parallel, intercepting)routing.mdData fetching & streamingdata-fetching.mdCaching & revalidationcaching.mdAuthenticationauth.mdDeploymentdeployment.md"
      },
      {
        "title": "1. Server Components by Default",
        "body": "Everything is Server Component in App Router. Add 'use client' only for useState, useEffect, event handlers, or browser APIs. Server Components can't be imported into Client — pass as children."
      },
      {
        "title": "2. Fetch Data on Server",
        "body": "Fetch in Server Components, not useEffect. Use Promise.all for parallel requests. See data-fetching.md for patterns."
      },
      {
        "title": "3. Cache Intentionally",
        "body": "fetch is cached by default — use cache: 'no-store' for dynamic data. Set revalidate for ISR. See caching.md for strategies."
      },
      {
        "title": "4. Server Actions for Mutations",
        "body": "Use 'use server' functions for form submissions and data mutations. Progressive enhancement — works without JS. See data-fetching.md."
      },
      {
        "title": "5. Environment Security",
        "body": "NEXT_PUBLIC_ exposes to client bundle. Server Components access all env vars. Use .env.local for secrets."
      },
      {
        "title": "6. Streaming for Large Data",
        "body": "Use <Suspense> boundaries to stream content progressively. Wrap slow components individually. See data-fetching.md."
      },
      {
        "title": "7. Auth at Middleware Level",
        "body": "Protect routes in middleware, not in pages. Middleware runs on Edge — lightweight auth checks only. See auth.md."
      },
      {
        "title": "Server vs Client",
        "body": "Server ComponentClient ComponentDefault in App RouterRequires 'use client'Can be asyncCannot be asyncAccess backend, env varsAccess hooks, browser APIsZero JS shippedJS shipped to browser\n\nDecision: Start Server. Add 'use client' only for: useState, useEffect, onClick, browser APIs."
      },
      {
        "title": "Common Traps",
        "body": "TrapFixrouter.push in ServerUse redirect()<Link> prefetches allprefetch={false}next/image no sizeAdd width/height or fillMetadata in ClientMove to Server or generateMetadatauseEffect for dataFetch in Server ComponentImport Server→ClientPass as children/propsMiddleware DB callCall API route insteadMissing await params (v15)Params are async in Next.js 15"
      },
      {
        "title": "Next.js 15 Changes",
        "body": "params and searchParams are now Promise — must await\nfetch not cached by default — opt-in with cache: 'force-cache'\nUse React 19 hooks: useActionState, useFormStatus"
      },
      {
        "title": "Related Skills",
        "body": "Install with clawhub install <slug> if user confirms:\n\nreact — React fundamentals and patterns\ntypescript — Type safety for better DX\nprisma — Database ORM for Next.js apps\ntailwindcss — Styling with utility classes\nnodejs — Server runtime knowledge"
      },
      {
        "title": "Feedback",
        "body": "If useful: clawhub star nextjs\nStay updated: clawhub sync"
      }
    ],
    "body": "Setup\n\nOn first use, read setup.md for project integration.\n\nWhen to Use\n\nUser needs Next.js expertise — routing, data fetching, caching, authentication, or deployment. Agent handles App Router patterns, server/client boundaries, and production optimization.\n\nArchitecture\n\nProject patterns stored in ~/nextjs/. See memory-template.md for setup.\n\n~/nextjs/\n├── memory.md          # Project conventions, patterns\n└── projects/          # Per-project learnings\n\nQuick Reference\nTopic\tFile\nSetup\tsetup.md\nMemory template\tmemory-template.md\nRouting (parallel, intercepting)\trouting.md\nData fetching & streaming\tdata-fetching.md\nCaching & revalidation\tcaching.md\nAuthentication\tauth.md\nDeployment\tdeployment.md\nCore Rules\n1. Server Components by Default\n\nEverything is Server Component in App Router. Add 'use client' only for useState, useEffect, event handlers, or browser APIs. Server Components can't be imported into Client — pass as children.\n\n2. Fetch Data on Server\n\nFetch in Server Components, not useEffect. Use Promise.all for parallel requests. See data-fetching.md for patterns.\n\n3. Cache Intentionally\n\nfetch is cached by default — use cache: 'no-store' for dynamic data. Set revalidate for ISR. See caching.md for strategies.\n\n4. Server Actions for Mutations\n\nUse 'use server' functions for form submissions and data mutations. Progressive enhancement — works without JS. See data-fetching.md.\n\n5. Environment Security\n\nNEXT_PUBLIC_ exposes to client bundle. Server Components access all env vars. Use .env.local for secrets.\n\n6. Streaming for Large Data\n\nUse <Suspense> boundaries to stream content progressively. Wrap slow components individually. See data-fetching.md.\n\n7. Auth at Middleware Level\n\nProtect routes in middleware, not in pages. Middleware runs on Edge — lightweight auth checks only. See auth.md.\n\nServer vs Client\nServer Component\tClient Component\nDefault in App Router\tRequires 'use client'\nCan be async\tCannot be async\nAccess backend, env vars\tAccess hooks, browser APIs\nZero JS shipped\tJS shipped to browser\n\nDecision: Start Server. Add 'use client' only for: useState, useEffect, onClick, browser APIs.\n\nCommon Traps\nTrap\tFix\nrouter.push in Server\tUse redirect()\n<Link> prefetches all\tprefetch={false}\nnext/image no size\tAdd width/height or fill\nMetadata in Client\tMove to Server or generateMetadata\nuseEffect for data\tFetch in Server Component\nImport Server→Client\tPass as children/props\nMiddleware DB call\tCall API route instead\nMissing await params (v15)\tParams are async in Next.js 15\nNext.js 15 Changes\nparams and searchParams are now Promise — must await\nfetch not cached by default — opt-in with cache: 'force-cache'\nUse React 19 hooks: useActionState, useFormStatus\nRelated Skills\n\nInstall with clawhub install <slug> if user confirms:\n\nreact — React fundamentals and patterns\ntypescript — Type safety for better DX\nprisma — Database ORM for Next.js apps\ntailwindcss — Styling with utility classes\nnodejs — Server runtime knowledge\nFeedback\nIf useful: clawhub star nextjs\nStay updated: clawhub sync"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/nextjs",
    "publisherUrl": "https://clawhub.ai/ivangdavila/nextjs",
    "owner": "ivangdavila",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/nextjs",
    "downloadUrl": "https://openagent3.xyz/downloads/nextjs",
    "agentUrl": "https://openagent3.xyz/skills/nextjs/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nextjs/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nextjs/agent.md"
  }
}