workspace/devtools/scripts/bootstrap-project.sh
rckrdmrd ea1879f4ad feat: Initial workspace structure with multi-level Git configuration
- Configure workspace Git repository with comprehensive .gitignore
- Add Odoo as submodule for ERP reference code
- Include documentation: SETUP.md, GIT-STRUCTURE.md
- Add gitignore templates for projects (backend, frontend, database)
- Structure supports independent repos per project/subproject level

Workspace includes:
- core/ - Reusable patterns, modules, orchestration system
- projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.)
- knowledge-base/ - Reference code and patterns (includes Odoo submodule)
- devtools/ - Development tools and templates
- customers/ - Client implementations template

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 10:44:23 -06:00

429 lines
12 KiB
Bash
Executable File

#!/bin/bash
# bootstrap-project.sh - Crea un nuevo proyecto con estructura estándar
# Uso: ./bootstrap-project.sh <nombre> [tipo]
# Tipos: saas, erp-vertical, analytics, edtech
set -e
PROJECT_NAME=$1
PROJECT_TYPE=${2:-saas}
WORKSPACE_ROOT="${HOME}/workspace"
PROJECTS_DIR="${WORKSPACE_ROOT}/projects"
# Colores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Validar argumentos
if [ -z "$PROJECT_NAME" ]; then
echo -e "${RED}Error: Nombre del proyecto requerido${NC}"
echo "Uso: ./bootstrap-project.sh <nombre> [tipo]"
echo "Tipos disponibles: saas, erp-vertical, analytics, edtech"
exit 1
fi
# Validar que no exista
if [ -d "${PROJECTS_DIR}/${PROJECT_NAME}" ]; then
echo -e "${RED}Error: El proyecto '${PROJECT_NAME}' ya existe${NC}"
exit 1
fi
echo -e "${GREEN}Creando proyecto: ${PROJECT_NAME} (tipo: ${PROJECT_TYPE})${NC}"
# Crear estructura base
echo "Creando estructura de directorios..."
mkdir -p "${PROJECTS_DIR}/${PROJECT_NAME}"/{apps,docs,orchestration}
# Crear apps según tipo
case $PROJECT_TYPE in
"saas"|"edtech")
mkdir -p "${PROJECTS_DIR}/${PROJECT_NAME}/apps"/{backend,frontend,database,devops}
;;
"erp-vertical")
mkdir -p "${PROJECTS_DIR}/${PROJECT_NAME}/apps"/{backend,frontend,database}
;;
"analytics")
mkdir -p "${PROJECTS_DIR}/${PROJECT_NAME}/apps"/{backend,frontend,database,ml}
;;
*)
mkdir -p "${PROJECTS_DIR}/${PROJECT_NAME}/apps"/{backend,frontend,database}
;;
esac
# Crear estructura de docs según estándar
# Ver: core/standards/ESTANDAR-ESTRUCTURA-DOCUMENTACION.md
echo "Creando estructura de documentación (estándar NEXUS)..."
mkdir -p "${PROJECTS_DIR}/${PROJECT_NAME}/docs"/{00-vision-general,01-fase-mvp,90-transversal,95-guias-desarrollo,96-quick-reference,97-adr,98-standards}
# Crear estructura de orchestration
echo "Creando estructura de orquestación..."
mkdir -p "${PROJECTS_DIR}/${PROJECT_NAME}/orchestration"/{00-guidelines,01-analisis,02-planeacion,03-tareas,04-ejecucion-logs,05-validaciones,06-subagentes,agentes,directivas,prompts,templates,estados,inventarios,trazas,reportes}
mkdir -p "${PROJECTS_DIR}/${PROJECT_NAME}/orchestration/05-validaciones"/{pre,durante,post}
# Crear archivo de herencia de directivas
cat > "${PROJECTS_DIR}/${PROJECT_NAME}/orchestration/00-guidelines/HERENCIA-DIRECTIVAS.md" << 'HERENCIA'
# Herencia de Directivas - Sistema NEXUS
## Arquitectura de Directivas
Este proyecto hereda directivas del workspace (core) y define directivas específicas.
### Directivas Globales (core)
**Path:** `~/workspace/core/orchestration/directivas/`
Estas directivas aplican a TODOS los proyectos:
- `DIRECTIVA-FLUJO-5-FASES.md` - Workflow obligatorio
- `DIRECTIVA-VALIDACION-SUBAGENTES.md` - Validación de entregables
- `POLITICAS-USO-AGENTES.md` - Reglas de delegación
- `DIRECTIVA-DOCUMENTACION-OBLIGATORIA.md` - Documentación requerida
- `DIRECTIVA-CALIDAD-CODIGO.md` - Estándares de código
- `DIRECTIVA-CONTROL-VERSIONES.md` - Git y versionado
- `PROTOCOLO-ESCALAMIENTO-PO.md` - Escalamiento
### Directivas Específicas (proyecto)
**Path:** `./directivas/`
Directivas que aplican solo a este proyecto.
### Prompts Base (core)
**Path:** `~/workspace/core/orchestration/prompts/base/`
Prompts genéricos reutilizables:
- `PROMPT-SUBAGENTES-BASE.md` - Instrucciones generales subagentes
- `PROMPT-BUG-FIXER.md` - Corrección de bugs
- `PROMPT-CODE-REVIEWER.md` - Revisión de código
- `PROMPT-FEATURE-DEVELOPER.md` - Desarrollo de features
- `PROMPT-DOCUMENTATION-VALIDATOR.md` - Validación de docs
### Prompts Específicos (proyecto)
**Path:** `./prompts/`
Prompts especializados para este proyecto.
## Orden de Precedencia
1. Directivas específicas del proyecto (mayor prioridad)
2. Directivas globales del workspace
3. Prompts específicos del proyecto
4. Prompts base del workspace
---
*Sistema NEXUS - Orquestación de Agentes*
HERENCIA
# Crear README.md
cat > "${PROJECTS_DIR}/${PROJECT_NAME}/README.md" << EOF
# ${PROJECT_NAME}
## Descripción
[Descripción del proyecto pendiente de definir]
## Estado del Proyecto
- **Tipo:** ${PROJECT_TYPE}
- **Creado:** $(date +%Y-%m-%d)
- **Estado:** Planificación
## Estructura
\`\`\`
${PROJECT_NAME}/
├── apps/
│ ├── backend/
│ ├── frontend/
│ └── database/
├── docs/
│ ├── 00-vision-general/ # Visión y arquitectura
│ ├── 01-fase-mvp/ # Primera fase
│ ├── 90-transversal/ # Documentación transversal
│ ├── 95-guias-desarrollo/ # Guías técnicas
│ ├── 96-quick-reference/ # Referencias rápidas
│ ├── 97-adr/ # Decisiones de arquitectura
│ └── 98-standards/ # Estándares del proyecto
└── orchestration/
├── 00-guidelines/ # Directivas del proyecto
├── agentes/ # Configuración por agente
├── directivas/ # Directivas específicas
├── templates/ # Templates de tareas
└── estados/ # Estado de subagentes
\`\`\`
## Inicio Rápido
\`\`\`bash
# Ver siguiente tarea
cat orchestration/PROXIMA-ACCION.md
# Ver contexto del proyecto
cat orchestration/00-guidelines/CONTEXTO-PROYECTO.md
\`\`\`
## Sistema de Agentes
Este proyecto usa el sistema NEXUS de orquestación de agentes.
Ver \`orchestration/README.md\` para más detalles.
---
*Proyecto parte del workspace de Fábrica de Software con Agentes IA*
EOF
# Crear docs/README.md
cat > "${PROJECTS_DIR}/${PROJECT_NAME}/docs/README.md" << EOF
# Documentación - ${PROJECT_NAME}
## Estructura
\`\`\`
docs/
├── 00-vision-general/ # Visión, arquitectura, contexto
├── 01-fase-mvp/ # Primera fase del proyecto
├── 90-transversal/ # Documentación transversal
├── 95-guias-desarrollo/ # Guías técnicas de desarrollo
├── 96-quick-reference/ # Referencias rápidas
├── 97-adr/ # Architecture Decision Records
└── 98-standards/ # Estándares del proyecto
\`\`\`
## Estado
| Fase | Estado | Descripción |
|------|--------|-------------|
| 00-vision-general | Pendiente | Definir visión y arquitectura |
| 01-fase-mvp | Pendiente | Definir alcance MVP |
## Navegación
### Por Fase
- [Visión General](./00-vision-general/)
- [Fase MVP](./01-fase-mvp/)
### Por Tipo
- [Guías de Desarrollo](./95-guias-desarrollo/)
- [Quick Reference](./96-quick-reference/)
- [ADR](./97-adr/)
- [Estándares](./98-standards/)
---
*Documentación del proyecto ${PROJECT_NAME} - Sistema NEXUS*
EOF
# Crear PROXIMA-ACCION.md
cat > "${PROJECTS_DIR}/${PROJECT_NAME}/orchestration/PROXIMA-ACCION.md" << EOF
# Próxima Acción - ${PROJECT_NAME}
## Estado Actual
- **Fecha:** $(date +%Y-%m-%d)
- **Estado:** Proyecto recién creado
## Próxima Tarea Prioritaria
### Tarea: Definir alcance y requerimientos iniciales
- **Prioridad:** P0
- **Agente sugerido:** NEXUS-ARCHITECTURE-ANALYST
### Pasos:
1. Definir visión y alcance en docs/00-vision-general/
2. Documentar requerimientos iniciales
3. Crear épicas para la fase MVP
4. Configurar stack tecnológico
---
*Actualizado: $(date +%Y-%m-%d)*
EOF
# Crear REGISTRO-SUBAGENTES.json
cat > "${PROJECTS_DIR}/${PROJECT_NAME}/orchestration/estados/REGISTRO-SUBAGENTES.json" << EOF
{
"proyecto": "${PROJECT_NAME}",
"limite_maximo": 15,
"slots_disponibles": 15,
"ultima_actualizacion": "$(date -Iseconds)",
"activos": [],
"completados": [],
"fallidos": []
}
EOF
# Crear CONTEXTO-PROYECTO.md básico
cat > "${PROJECTS_DIR}/${PROJECT_NAME}/orchestration/00-guidelines/CONTEXTO-PROYECTO.md" << EOF
# Contexto del Proyecto - ${PROJECT_NAME}
## Identificación
| Campo | Valor |
|-------|-------|
| **Nombre** | ${PROJECT_NAME} |
| **Tipo** | ${PROJECT_TYPE} |
| **Estado** | Planificación |
| **Creado** | $(date +%Y-%m-%d) |
## Descripción
[Pendiente de definir]
## Stack Tecnológico
[Pendiente de definir]
## Paths de Trabajo
\`\`\`
~/workspace/projects/${PROJECT_NAME}/
├── apps/ → Código fuente
├── docs/ → Documentación del proyecto
└── orchestration/ → Sistema de orquestación local
\`\`\`
## Convenciones Específicas
[Pendiente de definir]
## Documentación de Referencia
### Dentro del Proyecto
- \`docs/00-vision-general/\`
- \`docs/01-fase-mvp/\`
### En Core
- \`~/workspace/core/orchestration/directivas/\`
- \`~/workspace/core/standards/\`
---
*Contexto del proyecto ${PROJECT_NAME} - Sistema NEXUS*
EOF
# Crear orchestration/README.md
cat > "${PROJECTS_DIR}/${PROJECT_NAME}/orchestration/README.md" << EOF
# Orquestación - ${PROJECT_NAME}
## Sistema NEXUS
Este proyecto usa el sistema NEXUS de orquestación de agentes.
## Estructura
\`\`\`
orchestration/
├── 00-guidelines/ # Directivas del proyecto
├── 01-analisis/ # Análisis de tareas
├── 02-planeacion/ # Planes de ejecución
├── 03-tareas/ # Tareas en curso
├── 04-ejecucion-logs/ # Logs de ejecución
├── 05-validaciones/ # Validaciones (pre/durante/post)
├── 06-subagentes/ # Contexto de subagentes
├── agentes/ # Configuración por agente
├── directivas/ # Directivas específicas
├── templates/ # Templates de tareas
├── estados/ # Estado de subagentes
├── inventarios/ # Inventarios del proyecto
├── trazas/ # Trazas de ejecución
└── reportes/ # Reportes generados
\`\`\`
## Archivos Clave
- \`PROXIMA-ACCION.md\` - Siguiente tarea prioritaria
- \`00-guidelines/CONTEXTO-PROYECTO.md\` - Contexto del proyecto
- \`estados/REGISTRO-SUBAGENTES.json\` - Estado de subagentes
## Directivas Core
Las directivas globales están en:
\`~/workspace/core/orchestration/directivas/\`
---
*Sistema NEXUS - ${PROJECT_NAME}*
EOF
# Copiar y personalizar .gitignore desde template
echo "Creando .gitignore..."
GITIGNORE_TEMPLATE="${WORKSPACE_ROOT}/devtools/templates/gitignore-proyecto.template"
if [ -f "$GITIGNORE_TEMPLATE" ]; then
sed -e "s/{PROJECT_NAME}/${PROJECT_NAME}/g" \
-e "s/{DATE}/$(date +%Y-%m-%d)/g" \
"$GITIGNORE_TEMPLATE" > "${PROJECTS_DIR}/${PROJECT_NAME}/.gitignore"
else
# Crear .gitignore básico si no existe template
cat > "${PROJECTS_DIR}/${PROJECT_NAME}/.gitignore" << 'GITIGNORE'
# Dependencias
**/node_modules/
# Build
**/dist/
**/build/
# Environment
.env
.env.*
!.env.example
# Logs
**/*.log
**/logs/
# IDE
.idea/
.vscode/*
!.vscode/settings.json
# OS
.DS_Store
Thumbs.db
# Temp
**/tmp/
**/*.tmp
**/*.cache
# Claude Code
.claude/
# Backups
*.backup
*.bak
GITIGNORE
fi
# Crear .editorconfig
cat > "${PROJECTS_DIR}/${PROJECT_NAME}/.editorconfig" << 'EOF'
# EditorConfig - https://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
[Makefile]
indent_style = tab
EOF
echo -e "${GREEN}✓ Proyecto '${PROJECT_NAME}' creado exitosamente${NC}"
echo ""
echo -e "${BLUE}Estructura creada:${NC}"
echo " - apps/ (${PROJECT_TYPE})"
echo " - docs/ (estándar NEXUS)"
echo " - orchestration/ (sistema NEXUS)"
echo " - .gitignore (configurado)"
echo " - .editorconfig (configurado)"
echo ""
echo -e "${BLUE}Próximos pasos:${NC}"
echo " 1. cd ${PROJECTS_DIR}/${PROJECT_NAME}"
echo " 2. Editar README.md con descripción del proyecto"
echo " 3. Definir visión en docs/00-vision-general/"
echo " 4. Definir contexto en orchestration/00-guidelines/CONTEXTO-PROYECTO.md"
echo " 5. git init && git add . && git commit -m 'Initial commit'"