🌱 Seed

CLI & Build

O Seed oferece uma CLI completa para criar projetos, desenvolver com live reload e gerar builds de produção.

Comandos

seed init

```bash
seed init <nome> [--components <src>]
```

Cria um novo projeto com a estrutura completa de pastas e um seed.yaml inicial. O seed-theme é instalado automaticamente via Git. Passe --components para usar uma biblioteca de componentes alternativa.

seed dev

```bash
seed dev <pasta> [porta]
```

Inicia o dev server com live reload na porta 8000 (padrão). Durante o servidor, teclas de atalho estão disponíveis:

TeclaAção
oAbre o browser
bRebuilda todos os arquivos
hAbre o component explorer no browser
rReinicia o servidor
qEncerra

seed build

```bash
seed build <pasta> [--no-optimize-images]
```

Gera o build de produção em dist/ e copia os assets de src/assets/ e do tema (se houver) para dist/static/. O build é incremental: arquivos sem mudança de conteúdo mantêm a data de modificação anterior, e arquivos que deixaram de ser gerados (fonte renomeada/apagada) são removidos de dist/. --no-optimize-images desativa a geração de srcset/webp responsivo só para essa execução. Detalhes completos em Build & Assets.

seed theme-install / theme-update

```bash
seed theme-install <projeto> <path|github-url>
seed theme-update  <projeto> <path|github-url>
```

Instala ou atualiza um tema em themes/ e atualiza o seed.yaml. Se o tema já estiver instalado, theme-install pergunta antes de sobrescrever.

seed lint

```bash
seed lint <arquivo.seed|pasta>
```

Analisa arquivos .seed e reporta problemas semânticos sem modificar nenhum arquivo. Retorna exit 1 se houver diagnósticos — útil em CI.

O linter detecta:

```bash
# arquivo único
seed lint src/index.seed

# pasta inteira
seed lint src/
# → src/index.seed:12: componente não registrado: @cards
# → src/index.seed:34: @button: valor inválido 'larg' para 'size'
```

seed fmt

```bash
seed fmt <arquivo.seed|pasta> [--write] [--check]
```

Formata arquivos .seed normalizando indentação (2 espaços) e o formato de props (vírgula + espaço). Por padrão imprime o resultado formatado no stdout sem modificar o arquivo.

FlagComportamento
(sem flag)Imprime o resultado formatado no stdout
--writeReescreve o arquivo in-place
--checkRetorna exit 1 se o arquivo não está formatado (CI)
```bash
# visualizar sem modificar
seed fmt src/index.seed

# formatar in-place
seed fmt src/index.seed --write

# checar pasta inteira em CI
seed fmt src/ --check
```

O formatter é idempotente: rodar duas vezes produz o mesmo resultado. Comentários (//, /* */) e front matter YAML são preservados exatamente como estão no source.

seed components

```bash
seed components <pasta-do-projeto> [--output caminho]
```

Gera uma referência em Markdown de todos os componentes disponíveis no projeto (tema + src/components/): tag, classe base, modifier groups e slots de template, quando existirem. Por padrão salva em components-reference.md na raiz do projeto; --output escolhe outro caminho.

seed contract

```bash
seed contract [pasta-do-projeto] [--output caminho]
```

Gera em Markdown o "contrato" do Seed: como escrever arquivos .seed válidos e estruturar um projeto, incluindo a lista de componentes disponíveis quando uma pasta de projeto é informada. Sem argumento, gera só a parte base (sintaxe e estrutura, sem componentes de um projeto específico). Sem --output, o resultado vai para stdout em vez de um arquivo.

seed.yaml

O arquivo seed.yaml na raiz do projeto configura o tema e o comportamento de build:

```yaml
theme: seed-theme    # tema instalado em themes/seed-theme/
js: file          # inline | file (padrão: file)
css: file         # inline | file (padrão: file)
minify: false     # minificar HTML (padrão: false)
```

js e css controlam como os assets do tema são entregues: file gera <script src="..."> e <link rel="stylesheet">, enquanto inline injeta o conteúdo diretamente no HTML.

Estrutura de output

```
dist/
├── index.html              # sempre — páginas renderizadas
├── ...demais páginas .html
├── sitemap.xml             # quando `url` está configurado
├── robots.txt              # quando `url` está configurado
├── llms.txt                # quando `llms` está ativo
├── llms-full.txt           # quando `llms` está ativo
└── static/
    ├── styles.<hash>.css   # quando `optimize-css` está ativo
    ├── seed.<hash>.js      # quando há scripts de componente ou tema
    └── ...demais assets
```

Feito com ❤️ e Seed