#!/bin/bash # bootstrap-project.sh - Crea un nuevo proyecto con estructura estándar # Uso: ./bootstrap-project.sh [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 [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'"