Añadidos arhcivos basicos de repos

This commit is contained in:
2026-03-18 21:27:21 +01:00
commit 4bc7a7d291
31 changed files with 6506 additions and 0 deletions
+170
View File
@@ -0,0 +1,170 @@
---
version: 1.0.0
updated: 2026-03-12
tags: [workspace, list, repos]
---
# Command: list-repos
Lista todos los workspaces registrados en la base de datos local con soporte de filtro y ordenamiento.
## Para el usuario
### Cuándo usar este comando
Usar para inspeccionar rápidamente los workspaces disponibles:
- Ver qué repos existen localmente
- Verificar estado de sincronización con Gitea
- Encontrar un workspace por nombre o descripción
- Ver URLs de Gitea para clonar en otra máquina
### Prerequisitos
- Issue 0007 completado (base de datos SQLite)
- Feature flag `workspace_commands` habilitado
### Sintaxis
```bash
/workspace:list-repos
/workspace:list-repos --filter <term>
/workspace:list-repos --sort <field>
```
### Ejemplos
```bash
# Listar todos los workspaces
/workspace:list-repos
# Filtrar por nombre o descripción
/workspace:list-repos --filter pipeline
# Ordenar por nombre alfabético
/workspace:list-repos --sort name
# Filtrar y ordenar combinados
/workspace:list-repos --filter etl --sort name
```
### Salida esperada
```
Workspaces locales (4 repos):
┌────────────────────────┬─────────────────────────────┬────────────────┬─────────────┐
│ Nombre │ Descripción │ Última act. │ Estado │
├────────────────────────┼─────────────────────────────┼────────────────┼─────────────┤
│ my-etl-pipeline │ ETL para datos ventas │ hace 2 días │ ✓ activo │
│ data-pipeline-v2 │ Pipeline v2 mejorado │ hace 1 sem. │ ✓ activo │
│ ml-training-service │ Servicio ML training │ hace 3 días │ ✓ activo │
│ old-experiment │ Experimento temporal │ hace 2 meses │ ✓ activo │
└────────────────────────┴─────────────────────────────┴────────────────┴─────────────┘
URLs Gitea:
- my-etl-pipeline: https://gitea-xxx.organic-machine.com/Bl4cksmith/my-etl-pipeline
- data-pipeline-v2: https://gitea-xxx.organic-machine.com/Bl4cksmith/data-pipeline-v2
- ml-training-service: https://gitea-xxx.organic-machine.com/Bl4cksmith/ml-training-service
- old-experiment: (no disponible en Gitea)
Para trabajar en un workspace:
cd workspaces/<nombre>
```
## Para Claude
### Precondiciones
Verificar antes de ejecutar:
- [ ] Feature flag `workspace_commands` habilitado en `dev/feature_flags.json`
- [ ] Base de datos inicializada (issue 0007 completado)
### Flujo de implementación
#### Paso 0: Verificar feature flag
Leer `dev/feature_flags.json`. Si `workspace_commands.enabled: false`, informar al usuario:
```
El comando /list-repos requiere que el feature flag 'workspace_commands' esté habilitado.
Editar dev/feature_flags.json y cambiar "enabled": true para workspace_commands.
```
#### Paso 1: Detectar argumentos
Parsear los argumentos del usuario:
- `--filter <term>` → filtrar por nombre/descripción (case-insensitive)
- `--sort <field>` → ordenar por campo (`name` o `date`, default: `date`)
#### Paso 2: Ejecutar vía `app.ListWorkspacesCommand`
El flujo completo está en `app/workspace_list.go`:
```go
// Listar todos:
err := app.ListWorkspacesCommand(config, "", "date")
// Filtrar:
err := app.ListWorkspacesCommand(config, "pipeline", "date")
// Filtrar y ordenar:
err := app.ListWorkspacesCommand(config, "etl", "name")
```
El comando hace automáticamente:
1. Obtener workspaces de SQLite (`shell.ListWorkspacesDB`)
2. Filtrar si hay `--filter` (`core.FilterWorkspaces` — función pura)
3. Ordenar (`core.SortWorkspaces` — función pura)
4. Formatear tabla ASCII (`core.FormatWorkspaceTable` — función pura)
5. Mostrar resultado con URLs de Gitea al final
#### Paso 3: Si no hay workspaces
Si la BD está vacía o el filtro no coincide con nada:
```
No hay workspaces registrados.
```
O si había filtro:
```
Workspaces que coinciden con 'pipeline':
No hay workspaces registrados.
```
Sugerir usar `/workspace:create-repo` para crear el primero o `/workspace:sync-repos` para importar desde Gitea.
### Decisiones de diseño
1. **Tabla ASCII con box-drawing**: Legible en cualquier terminal sin dependencias adicionales.
2. **Filtro case-insensitive**: Busca en slug, nombre y descripción.
3. **Ordenamiento por fecha por defecto**: Los más recientes primero (más útil en el día a día).
4. **URLs Gitea al final**: Separadas de la tabla para no saturar visualmente.
5. **Nombres truncados a 22 chars**: Evita tablas muy anchas.
### Manejo de errores
| Error | Causa | Solución |
|-------|-------|----------|
| "error al inicializar base de datos" | BD no creada | Ejecutar `dataforge init` |
| "error al listar workspaces" | Corrupción de BD | Ejecutar `dataforge workspace rebuild-db` |
## Troubleshooting
### No aparecen workspaces
La BD puede estar vacía. Opciones:
1. Crear un workspace: `/workspace:create-repo`
2. Importar desde Gitea: `/workspace:sync-repos`
### El filtro no encuentra nada
El filtro busca en slug, nombre y descripción (case-insensitive). Verificar:
- El término está bien escrito
- El workspace existe: ejecutar `/workspace:list-repos` sin filtro
### Tabla con formato incorrecto
Puede ocurrir si la terminal es muy estrecha. Usar una terminal de al menos 80 columnas de ancho.