# Crear un proyecto

Modo interactivo, scaffold reproducible, shell Astro y TypeScript generado.

Consulta las versiones, cambios y requisitos en [Framework 4.0 y CLI 1.2](/es/docs/guides/releases/).


<span class="section-anchor" id="section-1"></span>

## Creación reproducible

```bash
wu create conocimiento --template react --shell astro
```

El modo rápido se activa cuando hay un nombre y una plantilla. Escribe `conocimiento/`, un shell Astro, una microapp React llamada `conocimiento`, configuración y manifiestos. **Este modo no instala dependencias.** Al terminar propone entrar en la carpeta y ejecutar `wu install` y `wu dev`.

```text
conocimiento/
  .gitignore
  package.json
  wu.config.json
  shell/
    package.json
    astro.config.mjs
    src/pages/index.astro
    src/styles/wu-shell.css
  mf-conocimiento/
    package.json
    index.html
    vite.config.js
    src/main.tsx
    src/App.tsx
```

La estructura muestra los archivos principales de esa combinación. Otros frameworks eligen extensiones, componentes y configuraciones distintos. El generador no escribe un `wu.json` fuente: el servidor de desarrollo puede sintetizarlo y el build escribe el manifiesto de producción. Crea uno explícito cuando la app necesite declarar contratos o permisos.

El proyecto nuevo incluye `.gitignore` para dependencias, builds, cachés, logs, claves PEM y `.env`, manteniendo `.env.example`. `wu upgrade` puede añadir esas reglas a un proyecto anterior sin reemplazar las existentes.

<span class="section-anchor" id="section-2"></span>

## Opciones reconocidas

| Argumento | Alias | Efecto |
| --- | --- | --- |
| Nombre posicional | — | Directorio del proyecto y nombre de la primera app en modo rápido |
| `--template <framework>` | `-t` | Framework de la microapp generada |
| `--shell <framework>` | `-s` | Framework del shell en modo rápido |

Si omites `--shell`, el shell usa la selección de `--template`; la forma concreta puede ser un shell del framework o uno agnóstico. `--shell` sin `--template` no configura el asistente: el flujo interactivo vuelve a pedir el shell.

No existe `--no-install` para `create`, porque el modo rápido ya deja la instalación pendiente. Tampoco hay flags públicos `--typescript`, `--yes`, `--package-manager` o `--apps`. Usa únicamente el contrato de la tabla para automatizar esta versión.

<span class="section-anchor" id="section-3"></span>

## Asistente interactivo

```bash
wu create
```

El asistente utiliza modo raw de terminal. Solicita nombre, shell y microapps una por una; ofrece TypeScript donde la plantilla lo admite. Los puertos de apps empiezan en 5001 y se incrementan. El flujo interactivo admite hasta 16 apps; para una topología mayor se usa configuración explícita.

El asistente pide confirmar generación e instalación y ejecuta `wu install`. Una instalación fallida devuelve `1`; sin terminal también devuelve `1` y muestra el modo rápido. Ctrl+C cancela con `130`. El modo rápido continúa sin instalar dependencias.

<span class="section-anchor" id="section-4"></span>

## Nombres y validaciones

La creación rechaza un directorio existente con salida 1. Una plantilla desconocida también falla. Astro y Next están en el catálogo del shell, pero son rechazados como `--template` de una microapp.

Los nombres de app se normalizan y validan con `^[a-z][a-z0-9-]{0,31}$`, sin nombres reservados de Windows. El proyecto admite hasta 64 caracteres, sin rutas ni espacios; la primera app del modo rápido debe cumplir además su límite de 32. Un fallo de generación no deja el directorio parcial.

<span class="section-anchor" id="section-5"></span>

## Astro dentro del proyecto WU

Astro compila el shell con su propio bundler. WU sirve esa salida y monta las microapps desde sus entradas WU. El scaffold no convierte a React o Vue en islas Astro: la composición entre aplicaciones pertenece al runtime WU.

El shell generado importa su hoja CSS, inicializa el framework y consume el catálogo de apps que la CLI inserta. La configuración declara `npx astro dev` y `npx astro build`. En modo de desarrollo nativo, WU utiliza la salida del build de Astro y la reconstruye cuando cambian sus fuentes.

<span class="section-anchor" id="section-6"></span>

## Referencia de implementación

- `wu-cli/src/commands/create.zig`
- `wu-cli/src/config/names.zig`
- `wu-cli/src/config/catalog.zig`
- `wu-cli/src/commands/templates/astro-shell.index.astro`
- `wu-cli/tests/create-exit-code.test.cjs`
- `wu-cli/tests/wizard-keys.test.cjs`
- `wu-cli/tests/gitignore.test.cjs`