Skip to content

Latest commit

 

History

History
100 lines (77 loc) · 3.2 KB

File metadata and controls

100 lines (77 loc) · 3.2 KB

Templates de Proyectos

Concepto

Los archivos JSON de esta carpeta son la fuente única de verdad para generar proyectos. Cada template define: estructura, archivos, cursor rules y opcionalmente post_create.

El motor genera archivos y, si el template incluye post_create, ejecuta esos comandos al final de forma controlada (sin Invoke-Expression sobre contenido del template).

Para inicializar entornos o Docker, usa comandos separados: Init-UvProject, New-Dockerfile, etc.

Templates incluidos

Template Comando rápido Descripción
python/fastapi New-PythonProject mi-api API REST con FastAPI
python/basic New-PythonProject mi-lib -Template basic Python puro (CLI, scripts)
powershell/module New-PowerShellProject MiModulo Módulo PS con Public/Private
nodejs/basic New-NodeProject mi-app Proyecto Node.js

Uso

# Ver todos los templates disponibles
Get-ProjectTemplate

# Crear proyecto desde template específico
New-Project -Name mi-api -Template python/fastapi

# Wrappers de conveniencia
New-PythonProject mi-api                              # → python/fastapi
New-PythonProject mi-lib -Template basic               # → python/basic
New-PowerShellProject MiModulo                         # → powershell/module
New-NodeProject mi-app                                 # → nodejs/basic

# Modo interactivo
New-Project -Interactive

# Sin cursor rules
New-PythonProject mi-api -NoCursorRules

# Dry run (ver qué se crearía sin crear nada)
New-Project -Name test -Template fastapi -DryRun

Formato JSON

Cada template tiene esta estructura:

{
  "name": "Template Name",
  "description": "Descripción del template",
  "version": "1.0.0",
  "type": "python|powershell|nodejs|custom",
  "structure": {
    "directories": ["src", "tests", "docs"],
    "files": {
      "src/main.py": "contenido con {{project_name}} variables",
      "README.md": "# {{project_name}}\n\n{{description}}"
    }
  },
  "cursor_rules": {
    "cursorrules": "# Rules para {{project_name}}...",
    "settings": { "editor.formatOnSave": true },
    "mdc_rules": {
      "general.mdc": "---\ndescription: ...\nglobs: [\"**/*\"]\nalwaysApply: true\n---\nContenido..."
    }
  },
  "post_create": [
    "python -m venv .venv",
    "pip install -r requirements.txt"
  ]
}

Variables disponibles

Variable Descripción
{{project_name}} Nombre del proyecto
{{slug}} Nombre en formato URL-friendly
{{description}} Descripción del proyecto
{{author}} Autor del proyecto
{{guid}} GUID único (auto-generado)

post_create (opcional)

  • Soporta string o array de comandos.
  • Se ejecuta al final de New-Project (omitido en -DryRun).
  • Solo se ejecuta si el template está bajo la raíz configurada de templates/.
  • Si falla un comando, el motor marca la operación como fallida para evitar éxito engañoso.

Crear templates personalizados

  1. Crea un JSON en templates/custom/mi-template.json
  2. Sigue el formato de arriba
  3. Usa: New-Project -Name mi-proyecto -Template custom/mi-template

El Tab completion autocompleta nombres de templates.