clerk-nextjs-patterns
ClerkとNext.jsの統合パターンに焦点を当て、AIスキルを活用して開発効率を高め、ユーザー認証と管理プロセスを簡素化します。
npx skills add clerk/skills --skill clerk-nextjs-patternsBefore / After 効果比較
1 组Next.jsアプリケーションに認証機能を手動で統合する場合、ルーティング保護、セッション管理、ユーザー状態の同期などの複雑なロジックを処理する必要があり、時間がかかり、セキュリティ脆弱性を招きやすいです。
`clerk-nextjs-patterns` が提供するベストプラクティスに従うことで、Clerk認証サービスを迅速かつ安全に統合し、開発を簡素化し、システムセキュリティを向上させます。
clerk-nextjs-patterns
Next.js Patterns
Version: Check package.json for the SDK version — see clerk skill for the version table. Core 2 differences are noted inline with > **Core 2 ONLY (skip if current SDK):** callouts.
For basic setup, see setup/.
Impact Levels
-
CRITICAL - Breaking bugs, security holes
-
HIGH - Common mistakes
-
MEDIUM - Optimization
References
Reference Impact
references/server-vs-client.md
CRITICAL - await auth() vs hooks
references/middleware-strategies.md
HIGH - Public-first vs protected-first, proxy.ts (Next.js <=15: middleware.ts)
references/server-actions.md
HIGH - Protect mutations
references/api-routes.md
HIGH - 401 vs 403
references/caching-auth.md
MEDIUM - User-scoped caching
Mental Model
Server vs Client = different auth APIs:
-
Server:
await auth()from@clerk/nextjs/server(async!) -
Client:
useAuth()hook from@clerk/nextjs(sync)
Never mix them. Server Components use server imports, Client Components use hooks.
Key properties from auth():
-
isAuthenticated— boolean, replaces the!!userIdpattern -
sessionStatus—'active'|'pending', for detecting incomplete session tasks -
userId,orgId,orgSlug,has(),protect()— unchanged
Core 2 ONLY (skip if current SDK): isAuthenticated and sessionStatus are not available. Check !!userId instead.
Minimal Pattern
// Server Component
import { auth } from '@clerk/nextjs/server'
export default async function Page() {
const { isAuthenticated, userId } = await auth() // MUST await!
if (!isAuthenticated) return <p>Not signed in</p>
return <p>Hello {userId}</p>
}
Core 2 ONLY (skip if current SDK): isAuthenticated is not available. Use if (!userId) instead.
Conditional Rendering with <Show>
For client-side conditional rendering based on auth state:
import { Show } from '@clerk/nextjs'
<Show when="signed-in" fallback={<p>Please sign in</p>}>
<Dashboard />
</Show>
Core 2 ONLY (skip if current SDK): Use <SignedIn> and <SignedOut> components instead of <Show>. See custom-ui/core-3/show-component.md for the full migration table.
Common Pitfalls
Symptom Cause Fix
undefined userId in Server Component
Missing await
await auth() not auth()
Auth not working on API routes Missing matcher Add `'/(api
Cache returns wrong user's data
Missing userId in key
Include userId in unstable_cache key
Mutations bypass auth
Unprotected Server Action
Check auth() at start of action
Wrong HTTP error code Confused 401/403 401 = not signed in, 403 = no permission
See Also
-
setup/ -
orgs/
Docs
Next.js SDK Weekly Installs4.3KRepositoryclerk/skillsGitHub Stars27First SeenJan 30, 2026Security AuditsGen Agent Trust HubPassSocketPassSnykPassInstalled oncursor3.8Kcodex2.2Kopencode2.2Kgithub-copilot2.2Kgemini-cli2.2Kamp2.1K
ユーザーレビュー (0)
レビューを書く
レビューなし
統計データ
ユーザー評価
この Skill を評価