opencode-skills-collection 1.0.186 → 1.0.187

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +5 -1
  2. package/bundled-skills/3d-web-experience/SKILL.md +152 -37
  3. package/bundled-skills/agent-evaluation/SKILL.md +1088 -26
  4. package/bundled-skills/agent-memory-systems/SKILL.md +1037 -25
  5. package/bundled-skills/agent-tool-builder/SKILL.md +668 -16
  6. package/bundled-skills/ai-agents-architect/SKILL.md +271 -31
  7. package/bundled-skills/ai-product/SKILL.md +716 -26
  8. package/bundled-skills/ai-wrapper-product/SKILL.md +450 -44
  9. package/bundled-skills/algolia-search/SKILL.md +867 -15
  10. package/bundled-skills/autonomous-agents/SKILL.md +1033 -26
  11. package/bundled-skills/aws-serverless/SKILL.md +1046 -35
  12. package/bundled-skills/azure-functions/SKILL.md +1318 -19
  13. package/bundled-skills/browser-automation/SKILL.md +1065 -28
  14. package/bundled-skills/browser-extension-builder/SKILL.md +159 -32
  15. package/bundled-skills/bullmq-specialist/SKILL.md +347 -16
  16. package/bundled-skills/clerk-auth/SKILL.md +796 -15
  17. package/bundled-skills/computer-use-agents/SKILL.md +1870 -28
  18. package/bundled-skills/context-window-management/SKILL.md +271 -18
  19. package/bundled-skills/conversation-memory/SKILL.md +453 -24
  20. package/bundled-skills/crewai/SKILL.md +252 -46
  21. package/bundled-skills/discord-bot-architect/SKILL.md +1207 -34
  22. package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
  23. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
  24. package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
  25. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  26. package/bundled-skills/docs/users/bundles.md +1 -1
  27. package/bundled-skills/docs/users/claude-code-skills.md +1 -1
  28. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  29. package/bundled-skills/docs/users/getting-started.md +1 -1
  30. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  31. package/bundled-skills/docs/users/usage.md +4 -4
  32. package/bundled-skills/docs/users/visual-guide.md +4 -4
  33. package/bundled-skills/email-systems/SKILL.md +646 -26
  34. package/bundled-skills/faf-expert/SKILL.md +221 -0
  35. package/bundled-skills/faf-wizard/SKILL.md +252 -0
  36. package/bundled-skills/file-uploads/SKILL.md +212 -11
  37. package/bundled-skills/firebase/SKILL.md +646 -16
  38. package/bundled-skills/gcp-cloud-run/SKILL.md +1117 -32
  39. package/bundled-skills/graphql/SKILL.md +1026 -27
  40. package/bundled-skills/hubspot-integration/SKILL.md +804 -19
  41. package/bundled-skills/idea-darwin/SKILL.md +120 -0
  42. package/bundled-skills/inngest/SKILL.md +431 -16
  43. package/bundled-skills/interactive-portfolio/SKILL.md +342 -44
  44. package/bundled-skills/langfuse/SKILL.md +296 -41
  45. package/bundled-skills/langgraph/SKILL.md +259 -50
  46. package/bundled-skills/micro-saas-launcher/SKILL.md +343 -44
  47. package/bundled-skills/neon-postgres/SKILL.md +572 -15
  48. package/bundled-skills/nextjs-supabase-auth/SKILL.md +269 -21
  49. package/bundled-skills/notion-template-business/SKILL.md +371 -44
  50. package/bundled-skills/personal-tool-builder/SKILL.md +537 -44
  51. package/bundled-skills/plaid-fintech/SKILL.md +825 -19
  52. package/bundled-skills/prompt-caching/SKILL.md +438 -25
  53. package/bundled-skills/rag-engineer/SKILL.md +271 -29
  54. package/bundled-skills/salesforce-development/SKILL.md +912 -19
  55. package/bundled-skills/satori/SKILL.md +54 -0
  56. package/bundled-skills/scroll-experience/SKILL.md +381 -44
  57. package/bundled-skills/segment-cdp/SKILL.md +817 -19
  58. package/bundled-skills/shopify-apps/SKILL.md +1475 -19
  59. package/bundled-skills/slack-bot-builder/SKILL.md +1162 -28
  60. package/bundled-skills/telegram-bot-builder/SKILL.md +152 -37
  61. package/bundled-skills/telegram-mini-app/SKILL.md +445 -44
  62. package/bundled-skills/trigger-dev/SKILL.md +916 -27
  63. package/bundled-skills/twilio-communications/SKILL.md +1310 -28
  64. package/bundled-skills/upstash-qstash/SKILL.md +898 -27
  65. package/bundled-skills/vercel-deployment/SKILL.md +637 -39
  66. package/bundled-skills/viral-generator-builder/SKILL.md +132 -37
  67. package/bundled-skills/voice-agents/SKILL.md +937 -27
  68. package/bundled-skills/voice-ai-development/SKILL.md +375 -46
  69. package/bundled-skills/workflow-automation/SKILL.md +982 -29
  70. package/bundled-skills/zapier-make-patterns/SKILL.md +772 -27
  71. package/package.json +1 -1
@@ -1,23 +1,14 @@
1
1
  ---
2
2
  name: nextjs-supabase-auth
3
- description: "Expert integration of Supabase Auth with Next.js App Router Use when: supabase auth next, authentication next.js, login supabase, auth middleware, protected route."
3
+ description: Expert integration of Supabase Auth with Next.js App Router
4
4
  risk: none
5
- source: "vibeship-spawner-skills (Apache 2.0)"
6
- date_added: "2026-02-27"
5
+ source: vibeship-spawner-skills (Apache 2.0)
6
+ date_added: 2026-02-27
7
7
  ---
8
8
 
9
9
  # Next.js + Supabase Auth
10
10
 
11
- You are an expert in integrating Supabase Auth with Next.js App Router.
12
- You understand the server/client boundary, how to handle auth in middleware,
13
- Server Components, Client Components, and Server Actions.
14
-
15
- Your core principles:
16
- 1. Use @supabase/ssr for App Router integration
17
- 2. Handle tokens in middleware for protected routes
18
- 3. Never expose auth tokens to client unnecessarily
19
- 4. Use Server Actions for auth operations when possible
20
- 5. Understand the cookie-based session flow
11
+ Expert integration of Supabase Auth with Next.js App Router
21
12
 
22
13
  ## Capabilities
23
14
 
@@ -26,10 +17,9 @@ Your core principles:
26
17
  - auth-middleware
27
18
  - auth-callback
28
19
 
29
- ## Requirements
20
+ ## Prerequisites
30
21
 
31
- - nextjs-app-router
32
- - supabase-backend
22
+ - Required skills: nextjs-app-router, supabase-backend
33
23
 
34
24
  ## Patterns
35
25
 
@@ -37,25 +27,283 @@ Your core principles:
37
27
 
38
28
  Create properly configured Supabase clients for different contexts
39
29
 
30
+ **When to use**: Setting up auth in a Next.js project
31
+
32
+ // lib/supabase/client.ts (Browser client)
33
+ 'use client'
34
+ import { createBrowserClient } from '@supabase/ssr'
35
+
36
+ export function createClient() {
37
+ return createBrowserClient(
38
+ process.env.NEXT_PUBLIC_SUPABASE_URL!,
39
+ process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
40
+ )
41
+ }
42
+
43
+ // lib/supabase/server.ts (Server client)
44
+ import { createServerClient } from '@supabase/ssr'
45
+ import { cookies } from 'next/headers'
46
+
47
+ export async function createClient() {
48
+ const cookieStore = await cookies()
49
+ return createServerClient(
50
+ process.env.NEXT_PUBLIC_SUPABASE_URL!,
51
+ process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
52
+ {
53
+ cookies: {
54
+ getAll() {
55
+ return cookieStore.getAll()
56
+ },
57
+ setAll(cookiesToSet) {
58
+ cookiesToSet.forEach(({ name, value, options }) => {
59
+ cookieStore.set(name, value, options)
60
+ })
61
+ },
62
+ },
63
+ }
64
+ )
65
+ }
66
+
40
67
  ### Auth Middleware
41
68
 
42
69
  Protect routes and refresh sessions in middleware
43
70
 
71
+ **When to use**: You need route protection or session refresh
72
+
73
+ // middleware.ts
74
+ import { createServerClient } from '@supabase/ssr'
75
+ import { NextResponse, type NextRequest } from 'next/server'
76
+
77
+ export async function middleware(request: NextRequest) {
78
+ let response = NextResponse.next({ request })
79
+
80
+ const supabase = createServerClient(
81
+ process.env.NEXT_PUBLIC_SUPABASE_URL!,
82
+ process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
83
+ {
84
+ cookies: {
85
+ getAll() {
86
+ return request.cookies.getAll()
87
+ },
88
+ setAll(cookiesToSet) {
89
+ cookiesToSet.forEach(({ name, value, options }) => {
90
+ response.cookies.set(name, value, options)
91
+ })
92
+ },
93
+ },
94
+ }
95
+ )
96
+
97
+ // Refresh session if expired
98
+ const { data: { user } } = await supabase.auth.getUser()
99
+
100
+ // Protect dashboard routes
101
+ if (request.nextUrl.pathname.startsWith('/dashboard') && !user) {
102
+ return NextResponse.redirect(new URL('/login', request.url))
103
+ }
104
+
105
+ return response
106
+ }
107
+
108
+ export const config = {
109
+ matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'],
110
+ }
111
+
44
112
  ### Auth Callback Route
45
113
 
46
114
  Handle OAuth callback and exchange code for session
47
115
 
48
- ## Anti-Patterns
116
+ **When to use**: Using OAuth providers (Google, GitHub, etc.)
117
+
118
+ // app/auth/callback/route.ts
119
+ import { createClient } from '@/lib/supabase/server'
120
+ import { NextResponse } from 'next/server'
121
+
122
+ export async function GET(request: Request) {
123
+ const { searchParams, origin } = new URL(request.url)
124
+ const code = searchParams.get('code')
125
+ const next = searchParams.get('next') ?? '/'
126
+
127
+ if (code) {
128
+ const supabase = await createClient()
129
+ const { error } = await supabase.auth.exchangeCodeForSession(code)
130
+ if (!error) {
131
+ return NextResponse.redirect(`${origin}${next}`)
132
+ }
133
+ }
134
+
135
+ return NextResponse.redirect(`${origin}/auth/error`)
136
+ }
137
+
138
+ ### Server Action Auth
139
+
140
+ Handle auth operations in Server Actions
141
+
142
+ **When to use**: Login, logout, or signup from Server Components
143
+
144
+ // app/actions/auth.ts
145
+ 'use server'
146
+ import { createClient } from '@/lib/supabase/server'
147
+ import { redirect } from 'next/navigation'
148
+ import { revalidatePath } from 'next/cache'
149
+
150
+ export async function signIn(formData: FormData) {
151
+ const supabase = await createClient()
152
+ const { error } = await supabase.auth.signInWithPassword({
153
+ email: formData.get('email') as string,
154
+ password: formData.get('password') as string,
155
+ })
156
+
157
+ if (error) {
158
+ return { error: error.message }
159
+ }
160
+
161
+ revalidatePath('/', 'layout')
162
+ redirect('/dashboard')
163
+ }
164
+
165
+ export async function signOut() {
166
+ const supabase = await createClient()
167
+ await supabase.auth.signOut()
168
+ revalidatePath('/', 'layout')
169
+ redirect('/')
170
+ }
171
+
172
+ ### Get User in Server Component
173
+
174
+ Access the authenticated user in Server Components
175
+
176
+ **When to use**: Rendering user-specific content server-side
177
+
178
+ // app/dashboard/page.tsx
179
+ import { createClient } from '@/lib/supabase/server'
180
+ import { redirect } from 'next/navigation'
181
+
182
+ export default async function DashboardPage() {
183
+ const supabase = await createClient()
184
+ const { data: { user } } = await supabase.auth.getUser()
185
+
186
+ if (!user) {
187
+ redirect('/login')
188
+ }
189
+
190
+ return (
191
+ <div>
192
+ <h1>Welcome, {user.email}</h1>
193
+ </div>
194
+ )
195
+ }
196
+
197
+ ## Validation Checks
198
+
199
+ ### Using getSession() for Auth Checks
200
+
201
+ Severity: ERROR
202
+
203
+ Message: getSession() doesn't verify the JWT. Use getUser() for secure auth checks.
204
+
205
+ Fix action: Replace getSession() with getUser() for security-critical checks
49
206
 
50
- ### getSession in Server Components
207
+ ### OAuth Without Callback Route
51
208
 
52
- ### ❌ Auth State in Client Without Listener
209
+ Severity: ERROR
53
210
 
54
- ### Storing Tokens Manually
211
+ Message: Using OAuth but missing callback route at app/auth/callback/route.ts
212
+
213
+ Fix action: Create app/auth/callback/route.ts to handle OAuth redirects
214
+
215
+ ### Browser Client in Server Context
216
+
217
+ Severity: ERROR
218
+
219
+ Message: Browser client used in server context. Use createServerClient instead.
220
+
221
+ Fix action: Import and use createServerClient from @supabase/ssr
222
+
223
+ ### Protected Routes Without Middleware
224
+
225
+ Severity: WARNING
226
+
227
+ Message: No middleware.ts found. Consider adding middleware for route protection.
228
+
229
+ Fix action: Create middleware.ts to protect routes and refresh sessions
230
+
231
+ ### Hardcoded Auth Redirect URL
232
+
233
+ Severity: WARNING
234
+
235
+ Message: Hardcoded localhost redirect. Use origin for environment flexibility.
236
+
237
+ Fix action: Use window.location.origin or process.env.NEXT_PUBLIC_SITE_URL
238
+
239
+ ### Auth Call Without Error Handling
240
+
241
+ Severity: WARNING
242
+
243
+ Message: Auth operation without error handling. Always check for errors.
244
+
245
+ Fix action: Destructure { data, error } and handle error case
246
+
247
+ ### Auth Action Without Revalidation
248
+
249
+ Severity: WARNING
250
+
251
+ Message: Auth action without revalidatePath. Cache may show stale auth state.
252
+
253
+ Fix action: Add revalidatePath('/', 'layout') after auth operations
254
+
255
+ ### Client-Only Route Protection
256
+
257
+ Severity: WARNING
258
+
259
+ Message: Client-side route protection shows flash of content. Use middleware.
260
+
261
+ Fix action: Move protection to middleware.ts for better UX
262
+
263
+ ## Collaboration
264
+
265
+ ### Delegation Triggers
266
+
267
+ - database|rls|queries|tables -> supabase-backend (Auth needs database layer)
268
+ - route|page|component|layout -> nextjs-app-router (Auth needs Next.js patterns)
269
+ - deploy|production|vercel -> vercel-deployment (Auth needs deployment config)
270
+ - ui|form|button|design -> frontend (Auth needs UI components)
271
+
272
+ ### Full Auth Stack
273
+
274
+ Skills: nextjs-supabase-auth, supabase-backend, nextjs-app-router, vercel-deployment
275
+
276
+ Workflow:
277
+
278
+ ```
279
+ 1. Database setup (supabase-backend)
280
+ 2. Auth implementation (nextjs-supabase-auth)
281
+ 3. Route protection (nextjs-app-router)
282
+ 4. Deployment config (vercel-deployment)
283
+ ```
284
+
285
+ ### Protected SaaS
286
+
287
+ Skills: nextjs-supabase-auth, stripe-integration, supabase-backend
288
+
289
+ Workflow:
290
+
291
+ ```
292
+ 1. User authentication (nextjs-supabase-auth)
293
+ 2. Customer sync (stripe-integration)
294
+ 3. Subscription gating (supabase-backend)
295
+ ```
55
296
 
56
297
  ## Related Skills
57
298
 
58
299
  Works well with: `nextjs-app-router`, `supabase-backend`
59
300
 
60
301
  ## When to Use
61
- This skill is applicable to execute the workflow or actions described in the overview.
302
+
303
+ - User mentions or implies: supabase auth next
304
+ - User mentions or implies: authentication next.js
305
+ - User mentions or implies: login supabase
306
+ - User mentions or implies: auth middleware
307
+ - User mentions or implies: protected route
308
+ - User mentions or implies: auth callback
309
+ - User mentions or implies: session management