Files
repo_Claude/.claude/commands/workspace/list-repos.md
T

5.7 KiB

version, updated, tags
version updated tags
1.0.0 2026-03-12
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

/workspace:list-repos
/workspace:list-repos --filter <term>
/workspace:list-repos --sort <field>

Ejemplos

# 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:

// 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.