# Download Tracking System

> Sistema de seguimiento de descargas anónimo para Claude Code Templates, inspirado en npm analytics.

- Skill: `tools-only/download-tracking-system` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add tools-only/download-tracking-system`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tools-only/download-tracking-system/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tools-only (https://skillmd.com/u/tools-only)
- Updated: 2026-09-29
- Page: https://skillmd.com/skills/tools-only/download-tracking-system

---

# Download Tracking System

Sistema de seguimiento de descargas anónimo para Claude Code Templates, inspirado en npm analytics.

## Descripción

Este sistema rastrea las descargas e instalaciones de componentes de forma completamente anónima para:
- Identificar los componentes más populares
- Mejorar la calidad de los componentes más utilizados
- Entender patrones de uso para desarrollo futuro
- Proporcionar estadísticas públicas similares a npm

## Arquitectura

### Backend (Vercel + Supabase)

1. **API Endpoint**: `/api/track-download-supabase.js`
   - Recibe requests POST con datos de descarga
   - Valida y almacena en Supabase (PostgreSQL)
   - Maneja rate limiting y validaciones

2. **Base de Datos**:
   ```sql
   -- Tabla principal de descargas
   component_downloads (
     id, component_type, component_name, component_path,
     category, download_timestamp, user_agent, ip_address,
     country, cli_version, created_at
   )
   
   -- Tabla de estadísticas agregadas
   download_stats (
     id, component_type, component_name, total_downloads,
     last_download, created_at, updated_at
   )
   ```

### Cliente (CLI)

1. **TrackingService**: Maneja el envío de datos
   - Dual endpoint: Base de datos + telemetría
   - Fire-and-forget (no bloquea al usuario)
   - Respeta opt-out del usuario
   - Timeout de 5 segundos

2. **Integración**: Se ejecuta automáticamente en:
   - `--agent`, `--command`, `--mcp`, `--setting`, `--hook`
   - Instalaciones de templates
   - Health checks
   - Lanzamientos de analytics dashboard

## Datos Recopilados

### Información Anónima
- **Tipo de componente**: agent, command, mcp, setting, hook
- **Nombre del componente**: ej. "api-security-audit"
- **Categoría**: ej. "security", "testing", "automation"
- **Timestamp**: Momento de instalación
- **Plataforma**: OS (linux, darwin, win32)
- **Versión CLI**: Para compatibilidad
- **País**: Solo código de 2 letras (IP geolocation)

### NO se Recopila
- ❌ Información personal identificable
- ❌ Nombres de usuario
- ❌ Rutas completas de archivos
- ❌ Contenido de proyectos
- ❌ Tokens o credenciales

## Configuración

### Variables de Entorno

```bash
# Desactivar tracking completamente
export CCT_NO_TRACKING=true
export CCT_NO_ANALYTICS=true

# Modo debug (mostrar info de tracking)
export CCT_DEBUG=true

# Base de datos (Supabase)
export SUPABASE_URL="https://..."
export SUPABASE_SERVICE_ROLE_KEY="..."
```

### Opt-out del Usuario

El tracking se desactiva automáticamente si:
- `CCT_NO_TRACKING=true`
- `CCT_NO_ANALYTICS=true` 
- `CI=true` (entornos CI/CD)

## Desarrollo

### Setup Local

1. Instalar dependencias:
   ```bash
   npm install
   ```

2. Configurar Vercel:
   ```bash
   # Instalar Vercel CLI
   npm i -g vercel
   
   # Configurar proyecto
   vercel
   ```

3. Configurar base de datos (Supabase):
   ```bash
   # Crear proyecto en Supabase
   # Copiar SUPABASE_URL y SUPABASE_SERVICE_ROLE_KEY
   # Agregar variables de entorno en Vercel Dashboard
   ```

### Testing

```bash
# Test local con CLI
CCT_DEBUG=true node cli-tool/bin/create-claude-config.js --agent deep-research-team/academic-researcher

# Test sin tracking (simula opt-out)
CCT_NO_TRACKING=true node cli-tool/bin/create-claude-config.js --agent test-agent

# Test directo al API
curl -X POST https://www.aitmpl.com/api/track-download-supabase \
  -H "Content-Type: application/json" \
  -d '{"type":"agent","name":"test","path":"test","category":"test","cliVersion":"1.19.0"}'
```

### Deployment

```bash
# Deploy a Vercel
vercel --prod

# Verificar endpoints
curl -X POST https://tu-dominio.com/api/track-download-supabase \
  -H "Content-Type: application/json" \
  -d '{"type":"agent","name":"test","path":"test","category":"test","cliVersion":"1.19.0"}'
```

## API Reference

### POST /api/track-download-supabase

**Request Body:**
```json
{
  "type": "agent|command|mcp|setting|hook|template",
  "name": "component-name",
  "path": "optional/component/path", 
  "category": "component-category",
  "cliVersion": "1.0.0"
}
```

**Response:**
```json
{
  "success": true,
  "message": "Download tracked successfully",
  "data": {
    "type": "agent",
    "name": "component-name", 
    "timestamp": "2023-12-07T10:30:00.000Z"
  }
}
```

**Error Response:**
```json
{
  "error": "Bad Request",
  "message": "Component type and name are required"
}
```

## Monitoreo

### Health Check

```bash
# Verificar salud del API
curl https://tu-dominio.com/api/track-download
```

### Métricas

El sistema proporciona métricas para:
- Total de descargas por componente
- Tendencias de popularidad
- Distribución geográfica
- Versiones de CLI más usadas
- Patrones temporales de uso

### Logs

Los logs incluyen:
- Requests exitosos/fallidos
- Errores de validación
- Problemas de conectividad a BD
- Rate limiting activado

## Seguridad

### Protecciones Implementadas

1. **Rate Limiting**: Por IP y por endpoint
2. **Validación de Input**: Sanitización de todos los campos
3. **Timeout**: 5s máximo por request
4. **CORS**: Headers configurados apropiadamente
5. **SQL Injection**: Queries parametrizadas
6. **Privacy**: No PII, solo métricas agregadas

### Compliance

- **GDPR**: No se almacenan datos personales identificables
- **CCPA**: Sistema completamente anónimo
- **Opt-out**: Múltiples formas de desactivar tracking

## Troubleshooting

### Problemas Comunes

1. **Tracking no funciona**: 
   - Verificar conectividad de red
   - Comprobar variables de entorno
   - Revisar logs con `CCT_DEBUG=true`

2. **Base de datos no responde**:
   - Verificar `POSTGRES_URL`
   - Comprobar límites de conexión
   - Revisar logs de Vercel

3. **Rate limiting activo**:
   - Espaciar requests
   - Implementar backoff exponencial
   - Contactar soporte si persiste

### Debugging

```bash
# Debug completo
CCT_DEBUG=true node cli-tool/src/index.js --agent api-security-audit

# Solo tracking de base de datos
# (modificar código temporalmente)

# Verificar payload
console.log(JSON.stringify(payload, null, 2))
```

## Roadmap

### Próximas Features

1. **Dashboard Público**: Estadísticas en tiempo real
2. **API Pública**: Endpoint para consultar métricas
3. **Webhooks**: Notificaciones de descargas populares
4. **ML Insights**: Recomendaciones basadas en patrones
5. **Retention Analytics**: Análisis de uso continuado

### Mejoras Técnicas

1. **Caching**: Redis para requests frecuentes
2. **CDN**: Distribución geográfica
3. **Monitoring**: Alertas y métricas avanzadas
4. **Backup**: Replicación de base de datos
5. **Performance**: Optimización de queries

## Contribuir

1. Fork el repositorio
2. Crear branch: `git checkout -b feature/tracking-improvement`
3. Commit cambios: `git commit -m 'Add tracking feature'`
4. Push branch: `git push origin feature/tracking-improvement`
5. Crear Pull Request

## Licencia

MIT License - Ver [LICENSE](LICENSE) para detalles.

## Contacto

- Issues: [GitHub Issues](https://github.com/davila7/claude-code-templates/issues)
- Discussions: [GitHub Discussions](https://github.com/davila7/claude-code-templates/discussions)
- Email: soporte@claude-code-templates.com
