--- name: sync-repos description: Sincroniza workspaces locales con repositorios en Gitea argument-hint: [--dry-run] disable-model-invocation: true user-invocable: true allowed-tools: Bash, Read, Write --- # sync-repos Sincroniza workspaces locales con repositorios en Gitea: detecta repos nuevos, clona faltantes, actualiza metadata. ## Sintaxis ```bash /sync-repos # Sincronización con confirmación /sync-repos --dry-run # Solo análisis, sin cambios ``` ## Prerequisitos - Variables de entorno: `GITEA_URL` y `GITEA_TOKEN` - Feature flag `workspace_commands` habilitado ## Flujo ### 1. Verificar feature flag Leer `feature_flags.json`. Si `workspace_commands.enabled: false`, informar y detener. ### 2. Detectar modo - `--dry-run`: solo análisis - Sin flags: mostrar plan y pedir confirmación ### 3. Ejecutar análisis Usa `app.SyncWorkspacesCommand(config, dryRun)`: 1. Obtener workspaces locales desde SQLite 2. Consultar repos en Gitea 3. Comparar con `core.CompareWorkspaces()` 4. Mostrar plan: ToClone, ToUpdate, Orphans ### 4. Confirmación interactiva (si no --dry-run) ``` ¿Ejecutar sincronización? (s/n): ``` ### 5. Mostrar resultado ``` Sincronización completada. Clonados: N Actualizados: M Huérfanos: X ``` ## Decisiones de diseño - Huérfanos NO se eliminan automáticamente - Confirmación obligatoria antes de clonar - Clonación secuencial (no paralela) ## Troubleshooting - "GITEA_URL y GITEA_TOKEN requeridos": Configurar variables de entorno - "error al obtener repositorios": Verificar token y conectividad