Debug Skill - SmartKet ERP
🎯 Propósito
Esta skill facilita el diagnóstico rápido de errores en producción y desarrollo, con scripts automatizados y catálogo de soluciones para problemas comunes.
🔍 Categorías de Errores
1. CORS Issues (500 Internal Error con navegador)
Síntomas: Request funciona en Postman, falla en navegador
Diagnóstico:
.\Pruebas\test-cors.ps1
Checklist:
- • Middleware Cors en
bootstrap/app.php - • Variable
CORS_ALLOWED_ORIGINSen.env - • Servidor reiniciado después de cambios
2. Namespace Errors (Class not found)
Síntomas: Class "App\Models\XYZ" not found
Diagnóstico:
cd smartket-api php ..\.agent\skills\architecture\scripts\check-namespaces.php composer dump-autoload
Checklist:
- • Namespace coincide con ubicación física
- • PSR-4 compliant
- • Composer autoload actualizado
3. Database Connection Failures
Síntomas: Connection refused, database does not exist
Diagnóstico:
cd smartket-api php ..\.agent\skills\debug\scripts\check-connections.php
Checklist:
- • PostgreSQL corriendo
- • Credenciales en
.envcorrectas - • DB existe (
psql -lpara verificar)
4. Token Expiration/Invalid
Síntomas: 401 Unauthorized, Token expired
Diagnóstico:
cd smartket-api php ..\.agent\skills\debug\scripts\trace-auth.php --email=user@example.com
Checklist:
- • Token no expirado (verificar
expires_at) - • Header
Authorization: Bearercorrecto - • Cookie HTTP-only presente
5. Multi-Tenant Isolation Breach
Síntomas: Usuario ve datos de otro tenant
Diagnóstico:
cd smartket-api php ..\.agent\skills\debug\scripts\audit-tenant-isolation.php
Checklist:
- • Header
X-Tenant-IDpresente - • Modelos usan conexión
tenant - • Global scopes aplicados
🛠️ Scripts de Diagnóstico
1. Analizar Logs
.\. agent\skills\debug\scripts\analyze-logs.ps1 -Last 100 -Filter "error"
Output: Errores más frecuentes y stack traces
2. Verificar Conexiones
php ..\.agent\skills\debug\scripts\check-connections.php
Output: Estado de DB, cache, Redis (si aplica)
3. Trace Request Específico
php ..\.agent\skills\debug\scripts\trace-request.php --endpoint="/api/products" --method=POST
Output: Middlewares ejecutados, queries, timing
4. Performance Profiler
php ..\.agent\skills\debug\scripts\performance-profiler.php
Output: Endpoints lentos, N+1 queries, memory usage
📋 Catálogo de Errores Comunes
Ver: .agent/skills/debug/resources/common-errors.md
Incluye:
- •Error 500: Causas y soluciones
- •Error 419: CSRF token mismatch
- •Error 403: Forbidden (RBAC)
- •Error 422: Validation errors
- •Errores de migraciones
- •Errores de seeding
🔄 Workflow de Debugging
Paso 1: Reproducir
- •Obtener pasos exactos del error
- •Verificar en ambiente local
- •Revisar logs:
tail -f storage/logs/laravel.log
Paso 2: Diagnosticar
- •Ejecutar script relevante de esta skill
- •Revisar stack trace completo
- •Identificar componente problemático
Paso 3: Corregir
- •Aplicar fix
- •Ejecutar tests relacionados
- •Verificar en ambientes
Paso 4: Prevenir
- •Agregar test que cubra el caso
- •Actualizar docs si es patrón común
- •Registrar en CHANGELOG
🚨 Decision Tree de Debugging
Error Ocurrió ├─ ¿En qué capa? │ ├─ Frontend → Ver console.log, network tab │ ├─ Backend → Ver laravel.log │ └─ Base de Datos → Ver PostgreSQL logs │ ├─ ¿Es reproducible? │ ├─ Sí → Ejecutar script diagnóstico │ └─ No → Verificar race conditions, cache │ └─ ¿Afecta a todos los tenants? ├─ Sí → Problema en landlord o Core └─ No → Problema en tenant específico
💡 Tips de Debugging
1. Usar dd() estratégicamente
// ❌ Malo
dd($variable); // Termina ejecución temprano
// ✅ Bueno
Log::debug('Variable value', ['var' => $variable]); // Continúa
2. Query Debugging
// Ver todas las queries ejecutadas DB::enableQueryLog(); // ... código ... dd(DB::getQueryLog());
3. Request Debugging
// En controller, ver todo el request
Log::debug('Full request', [
'headers' => $request->headers->all(),
'body' => $request->all(),
'user' => auth()->user()
]);
🎓 Cuándo Usar Esta Skill
✅ Usar cuando:
- •Error en producción que no se reproduce localmente
- •Performance degradado sin causa obvia
- •Bug reportado por usuario
- •Comportamiento extraño multi-tenant
❌ No reemplaza:
- •Debugger IDE (XDebug)
- •Profilers avanzados (Telescope, Clockwork)
- •Monitoring (Sentry, New Relic)