npx skills add https://github.com/fernandofuc/nextjs-claude-setup --skill nextjs-16-complete-guideInstale esta skill com a CLI e comece a usar o fluxo de trabalho SKILL.md em seu espaço de trabalho.
Setup completo de Next.js 16 + Supabase + Claude Code listo para producción. Arquitectura Feature-First optimizada para desarrollo asistido por IA.
Un template production-ready para aplicaciones frontend modernas con:
Runtime: Node.js + TypeScript
Framework: Next.js 16 (App Router)
Database: PostgreSQL/Supabase
Styling: Tailwind CSS
State: Zustand
Testing: Jest + React Testing Library
Validation: Zod
AI Tooling: Claude Code + MCPs
src/
├── app/ # Next.js App Router
│ ├── (auth)/ # Rutas auth (grupo)
│ ├── (main)/ # Rutas principales
│ ├── layout.tsx
│ └── page.tsx
│
├── features/ # 🎯 Organizadas por funcionalidad
│ ├── auth/
│ │ ├── components/ # LoginForm, SignupForm
│ │ ├── hooks/ # useAuth, useSession
│ │ ├── services/ # authService.ts
│ │ ├── types/ # User, Session
│ │ └── store/ # authStore.ts
│ │
│ ├── dashboard/
│ │ ├── components/
│ │ ├── hooks/
│ │ ├── services/
│ │ └── types/
│ │
│ └── [tu-feature]/
│
└── shared/ # Código reutilizable
├── components/ # Button, Card, Input
├── hooks/ # useDebounce, useLocalStorage
├── stores/ # appStore.ts
├── types/ # api.ts, domain.ts
├── utils/ # helpers
├── lib/ # supabase.ts, axios.ts
└── constants/
¿Por qué Feature-First? Cada feature tiene TODO lo necesario en un solo lugar. Perfecto para que la IA entienda contexto completo sin navegar múltiples carpetas.
npm install
# o
pnpm install
# Crear .env.local
cp .env.example .env.local
# Editar con tus credenciales de Supabase
NEXT_PUBLIC_SUPABASE_URL=tu_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=tu_anon_key
Edita .mcp.json con tu project ref de Supabase:
{
"mcpServers": {
"supabase": {
"args": ["--project-ref=TU_PROJECT_REF"],
"env": {
"SUPABASE_ACCESS_TOKEN": "TU_TOKEN"
}
}
}
}
npm run dev
# Auto-detecta puerto disponible (3000-3006)
npm run dev # Servidor desarrollo (auto-port 3000-3006)
npm run build # Build para producción
npm run start # Servidor producción
npm run test # Tests con Jest
npm run test:watch # Tests en modo watch
npm run lint # ESLint
npm run lint:fix # Fix automático
npm run typecheck # TypeScript check
# Crear nuevo skill
python .claude/skills/skill-creator/scripts/init_skill.py my-skill
# Validar skill
python .claude/skills/skill-creator/scripts/quick_validate.py ./my-skill
# Empaquetar skill
python .claude/skills/skill-creator/scripts/package_skill.py ./my-skill
| Comando | Descripción |
|---|---|
/explorador |
Explora codebase y arquitectura |
/ejecutar-prp |
Ejecuta PRPs (features complejas) |
/generar-prp |
Genera nuevo PRP |
/preparar-paralelo |
Prepara tareas paralelas |
/ejecutar-paralelo |
Ejecuta en paralelo |
Este setup incluye integración con Playwright MCP para desarrollo visual:
1. Implementar componente
2. Capturar screenshot automático
3. Comparar vs requirements
4. Iterar hasta pixel-perfect
Lee .claude/prompts/bucle-agentico.md para más detalles.
mkdir -p src/features/mi-feature/{components,hooks,services,types,store}
# En Claude Code, ejecuta:
/generar-prp
# Describe tu feature, el agente generará:
# - Estructura completa
# - Componentes base
# - Hooks necesarios
# - Types + validaciones
# - Tests
# Visita: https://supabase.com/dashboard
# Crea nuevo proyecto
# Copia URL y Anon Key
El cliente ya está configurado en src/shared/lib/supabase.ts:
import { createClient } from '@supabase/supabase-js'
export const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
)
# Guardar migraciones en supabase/migrations/
# Ejemplo: supabase/migrations/001_create_users.sql
// src/features/auth/hooks/useAuth.test.ts
import { renderHook } from '@testing-library/react'
import { useAuth } from './useAuth'
test('should authenticate user', async () => {
const { result } = renderHook(() => useAuth())
await result.current.login('[email protected]', 'password')
expect(result.current.user).toBeDefined()
})
npm run test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # Coverage report
// ✅ GOOD: Clear props, typed, documented
interface ButtonProps {
children: React.ReactNode
variant?: 'primary' | 'secondary'
onClick: () => void
}
export function Button({ children, variant = 'primary', onClick }: ButtonProps) {
return (
<button
onClick={onClick}
className={`btn btn-${variant}`}
>
{children}
</button>
)
}
// ✅ GOOD: Todo relacionado en un lugar
src/features/auth/
├── components/ # UI específicos de auth
├── hooks/ # Lógica de auth
├── services/ # API calls
├── types/ # Types de auth
└── store/ # Estado de auth
# El auto-port detection debería resolver esto
# Si persiste:
lsof -i :3000
kill -9 <PID>
# O usa el script directamente:
node scripts/dev-server.js
npm run typecheck # Verificar errores
rm -rf .next # Limpiar cache
npm install # Reinstalar deps
npm run test -- --clearCache # Limpiar cache de Jest
npm run test -- --verbose # Ver detalles
/generar-prpEste template está diseñado para ser extendido. Algunas ideas:
npm install -g vercel
vercel
En tu dashboard de Vercel, añade:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYNext.js + Claude Code Setup v1.0 | Built with AI-first development in mind 🤖