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.
| 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 |
# 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 -DryRunCada 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"
]
}| 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) |
- Soporta
stringoarrayde 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.
- Crea un JSON en
templates/custom/mi-template.json - Sigue el formato de arriba
- Usa:
New-Project -Name mi-proyecto -Template custom/mi-template
El Tab completion autocompleta nombres de templates.