{
  "schemaVersion": "1.0",
  "item": {
    "slug": "next-best-practices",
    "name": "Next Best Practices",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/TuanViDev/next-best-practices",
    "canonicalUrl": "https://clawhub.ai/TuanViDev/next-best-practices",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/next-best-practices",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=next-best-practices",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "async-patterns.md",
      "bundling.md",
      "data-patterns.md",
      "debug-tricks.md",
      "directives.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/next-best-practices"
    },
    "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/next-best-practices",
    "agentPageUrl": "https://openagent3.xyz/skills/next-best-practices/agent",
    "manifestUrl": "https://openagent3.xyz/skills/next-best-practices/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/next-best-practices/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": "Next.js Best Practices",
        "body": "Apply these rules when writing or reviewing Next.js code."
      },
      {
        "title": "File Conventions",
        "body": "See file-conventions.md for:\n\nProject structure and special files\nRoute segments (dynamic, catch-all, groups)\nParallel and intercepting routes\nMiddleware rename in v16 (middleware → proxy)"
      },
      {
        "title": "RSC Boundaries",
        "body": "Detect invalid React Server Component patterns.\n\nSee rsc-boundaries.md for:\n\nAsync client component detection (invalid)\nNon-serializable props detection\nServer Action exceptions"
      },
      {
        "title": "Async Patterns",
        "body": "Next.js 15+ async API changes.\n\nSee async-patterns.md for:\n\nAsync params and searchParams\nAsync cookies() and headers()\nMigration codemod"
      },
      {
        "title": "Runtime Selection",
        "body": "See runtime-selection.md for:\n\nDefault to Node.js runtime\nWhen Edge runtime is appropriate"
      },
      {
        "title": "Directives",
        "body": "See directives.md for:\n\n'use client', 'use server' (React)\n'use cache' (Next.js)"
      },
      {
        "title": "Functions",
        "body": "See functions.md for:\n\nNavigation hooks: useRouter, usePathname, useSearchParams, useParams\nServer functions: cookies, headers, draftMode, after\nGenerate functions: generateStaticParams, generateMetadata"
      },
      {
        "title": "Error Handling",
        "body": "See error-handling.md for:\n\nerror.tsx, global-error.tsx, not-found.tsx\nredirect, permanentRedirect, notFound\nforbidden, unauthorized (auth errors)\nunstable_rethrow for catch blocks"
      },
      {
        "title": "Data Patterns",
        "body": "See data-patterns.md for:\n\nServer Components vs Server Actions vs Route Handlers\nAvoiding data waterfalls (Promise.all, Suspense, preload)\nClient component data fetching"
      },
      {
        "title": "Route Handlers",
        "body": "See route-handlers.md for:\n\nroute.ts basics\nGET handler conflicts with page.tsx\nEnvironment behavior (no React DOM)\nWhen to use vs Server Actions"
      },
      {
        "title": "Metadata & OG Images",
        "body": "See metadata.md for:\n\nStatic and dynamic metadata\ngenerateMetadata function\nOG image generation with next/og\nFile-based metadata conventions"
      },
      {
        "title": "Image Optimization",
        "body": "See image.md for:\n\nAlways use next/image over <img>\nRemote images configuration\nResponsive sizes attribute\nBlur placeholders\nPriority loading for LCP"
      },
      {
        "title": "Font Optimization",
        "body": "See font.md for:\n\nnext/font setup\nGoogle Fonts, local fonts\nTailwind CSS integration\nPreloading subsets"
      },
      {
        "title": "Bundling",
        "body": "See bundling.md for:\n\nServer-incompatible packages\nCSS imports (not link tags)\nPolyfills (already included)\nESM/CommonJS issues\nBundle analysis"
      },
      {
        "title": "Scripts",
        "body": "See scripts.md for:\n\nnext/script vs native script tags\nInline scripts need id\nLoading strategies\nGoogle Analytics with @next/third-parties"
      },
      {
        "title": "Hydration Errors",
        "body": "See hydration-error.md for:\n\nCommon causes (browser APIs, dates, invalid HTML)\nDebugging with error overlay\nFixes for each cause"
      },
      {
        "title": "Suspense Boundaries",
        "body": "See suspense-boundaries.md for:\n\nCSR bailout with useSearchParams and usePathname\nWhich hooks require Suspense boundaries"
      },
      {
        "title": "Parallel & Intercepting Routes",
        "body": "See parallel-routes.md for:\n\nModal patterns with @slot and (.) interceptors\ndefault.tsx for fallbacks\nClosing modals correctly with router.back()"
      },
      {
        "title": "Self-Hosting",
        "body": "See self-hosting.md for:\n\noutput: 'standalone' for Docker\nCache handlers for multi-instance ISR\nWhat works vs needs extra setup"
      },
      {
        "title": "Debug Tricks",
        "body": "See debug-tricks.md for:\n\nMCP endpoint for AI-assisted debugging\nRebuild specific routes with --debug-build-paths"
      }
    ],
    "body": "Next.js Best Practices\n\nApply these rules when writing or reviewing Next.js code.\n\nFile Conventions\n\nSee file-conventions.md for:\n\nProject structure and special files\nRoute segments (dynamic, catch-all, groups)\nParallel and intercepting routes\nMiddleware rename in v16 (middleware → proxy)\nRSC Boundaries\n\nDetect invalid React Server Component patterns.\n\nSee rsc-boundaries.md for:\n\nAsync client component detection (invalid)\nNon-serializable props detection\nServer Action exceptions\nAsync Patterns\n\nNext.js 15+ async API changes.\n\nSee async-patterns.md for:\n\nAsync params and searchParams\nAsync cookies() and headers()\nMigration codemod\nRuntime Selection\n\nSee runtime-selection.md for:\n\nDefault to Node.js runtime\nWhen Edge runtime is appropriate\nDirectives\n\nSee directives.md for:\n\n'use client', 'use server' (React)\n'use cache' (Next.js)\nFunctions\n\nSee functions.md for:\n\nNavigation hooks: useRouter, usePathname, useSearchParams, useParams\nServer functions: cookies, headers, draftMode, after\nGenerate functions: generateStaticParams, generateMetadata\nError Handling\n\nSee error-handling.md for:\n\nerror.tsx, global-error.tsx, not-found.tsx\nredirect, permanentRedirect, notFound\nforbidden, unauthorized (auth errors)\nunstable_rethrow for catch blocks\nData Patterns\n\nSee data-patterns.md for:\n\nServer Components vs Server Actions vs Route Handlers\nAvoiding data waterfalls (Promise.all, Suspense, preload)\nClient component data fetching\nRoute Handlers\n\nSee route-handlers.md for:\n\nroute.ts basics\nGET handler conflicts with page.tsx\nEnvironment behavior (no React DOM)\nWhen to use vs Server Actions\nMetadata & OG Images\n\nSee metadata.md for:\n\nStatic and dynamic metadata\ngenerateMetadata function\nOG image generation with next/og\nFile-based metadata conventions\nImage Optimization\n\nSee image.md for:\n\nAlways use next/image over <img>\nRemote images configuration\nResponsive sizes attribute\nBlur placeholders\nPriority loading for LCP\nFont Optimization\n\nSee font.md for:\n\nnext/font setup\nGoogle Fonts, local fonts\nTailwind CSS integration\nPreloading subsets\nBundling\n\nSee bundling.md for:\n\nServer-incompatible packages\nCSS imports (not link tags)\nPolyfills (already included)\nESM/CommonJS issues\nBundle analysis\nScripts\n\nSee scripts.md for:\n\nnext/script vs native script tags\nInline scripts need id\nLoading strategies\nGoogle Analytics with @next/third-parties\nHydration Errors\n\nSee hydration-error.md for:\n\nCommon causes (browser APIs, dates, invalid HTML)\nDebugging with error overlay\nFixes for each cause\nSuspense Boundaries\n\nSee suspense-boundaries.md for:\n\nCSR bailout with useSearchParams and usePathname\nWhich hooks require Suspense boundaries\nParallel & Intercepting Routes\n\nSee parallel-routes.md for:\n\nModal patterns with @slot and (.) interceptors\ndefault.tsx for fallbacks\nClosing modals correctly with router.back()\nSelf-Hosting\n\nSee self-hosting.md for:\n\noutput: 'standalone' for Docker\nCache handlers for multi-instance ISR\nWhat works vs needs extra setup\nDebug Tricks\n\nSee debug-tricks.md for:\n\nMCP endpoint for AI-assisted debugging\nRebuild specific routes with --debug-build-paths"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/TuanViDev/next-best-practices",
    "publisherUrl": "https://clawhub.ai/TuanViDev/next-best-practices",
    "owner": "TuanViDev",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/next-best-practices",
    "downloadUrl": "https://openagent3.xyz/downloads/next-best-practices",
    "agentUrl": "https://openagent3.xyz/skills/next-best-practices/agent",
    "manifestUrl": "https://openagent3.xyz/skills/next-best-practices/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/next-best-practices/agent.md"
  }
}