--- name: create-repo description: Crea un nuevo subrepo en workspaces/ con estructura core/shell/app disable-model-invocation: true user-invocable: true allowed-tools: Bash, Read, Write --- # create-repo Crea un nuevo workspace (subrepo) con estructura estándar, repo en Gitea, y registro en BD. ## Prerequisitos - Variables: `GITEA_URL` y `GITEA_TOKEN` - Feature flag `workspace_commands` habilitado ## Flujo interactivo ### 1. Solicitar inputs 1. **Nombre**: URL-safe (lowercase, alfanumérico, guiones) 2. **Descripción**: texto libre 3. **Tipo**: go, data, etl, api 4. **¿Privado?**: s/n (default: n) ### 2. Mostrar resumen y confirmar ``` Resumen: Nombre: my-etl-pipeline Path local: ./workspaces/my-etl-pipeline Gitea: https://gitea.../my-etl-pipeline Tipo: etl Privado: no ¿Crear repositorio? (s/n): ``` ### 3. Ejecutar creación Usa `app.CreateWorkspaceCommand(config, params)`: 1. Validar nombre 2. Verificar que no existe 3. Crear estructura core/shell/app/ 4. Escribir templates (go.mod, main.go, etc.) 5. git init + configurar usuario 6. Crear repo en Gitea 7. Push inicial 8. Registrar en SQLite **Rollback automático** si falla cualquier paso. ### 4. Mostrar resultado ``` Workspace creado: ./workspaces/my-etl-pipeline Para trabajar: cd workspaces/my-etl-pipeline ``` ## Validación de nombre - Solo letras, números y guiones - No empezar/terminar con guión - 2-100 caracteres ## Troubleshooting - "nombre inválido": usar solo lowercase, alfanumérico, guiones - "ya existe": verificar `ls workspaces/` o usar otro nombre - "error Gitea": verificar GITEA_TOKEN