Pular para o conteúdo

CLI

Todos os comandos seguem o formato slash <comando> [opções] e rodam na pasta em que você está. module, backup e admin aceitam --dir <pasta> para apontar outra pasta. Com --help depois do comando, o slash mostra só o uso dele.

uso: slash <comando> [opções]

  slash create <pasta> [--template landing-page|one-page|multi-page|blog] [--model <modelo>] [--modules <id,…>] [--github owner/repo]
  slash check [--watch]
  slash approve
  slash verify [--background] [--update-baseline] [--if-changed]
  slash module list [--dir <pasta>]
  slash module add <id> [--dir <pasta>]
  slash backup [--restore <arquivo>] [--dir <pasta>]
  slash admin create --email <e-mail> [--dir <pasta>]
[saída: 0]

Os comandos saem com código 0 quando dão certo. Um erro esperado, como uma opção desconhecida ou uma pasta que não é projeto, sai com 1 e uma mensagem em português. Uma falha inesperada sai com 2 e mostra a pilha de chamadas.

slash create

uso: slash create <pasta> [--template landing-page|one-page|multi-page|blog] [--model <modelo>] [--modules <id,…>] [--github owner/repo]

Cria um projeto novo em <pasta>. A pasta não pode existir e não pode ficar dentro de um workspace do bun. Os programas bun e git precisam estar no PATH.

  • --template: landing-page (padrão), one-page, multi-page ou blog.
  • --model: modelo visual do template. Em landing-page o padrão é vendas (também produto, evento, lancamento e captura); em multi-page, classico (ou catalogo); em blog, revista (ou autor e central). one-page não tem modelo.
  • --modules: ids dos módulos separados por vírgula. Só vale com --template blog. Sem a opção, o blog recebe todos os módulos oficiais.
  • --github owner/repo: cria um repositório privado com o gh e envia o projeto. Exige o gh instalado.
Projeto criado em <projeto>.
Próximos passos, dentro da pasta:
  slash check                     confere conteúdo, contraste e SEO
  slash approve                   libera o conteúdo fictício aprovado
  bun run dev                     servidor local
  slash verify --update-baseline  grava as bases visuais e verifica tudo
[saída: 0]

slash check

uso: slash check [--watch]

Confere o conteúdo, o contraste das cores e o SEO do projeto. Sem problemas, a saída é check ok. Com --watch, o comando roda de novo a cada mudança em src/ e termina com Ctrl+C.

slash approve

uso: slash approve

Lista o conteúdo fictício ou marcado como de origem do Claude que ainda não foi liberado, pede confirmação e grava content-release.json. A liberação leva o nome do git config user.name. Conteúdo pendente, placeholder ou problema de origem não é liberado: o comando recusa e diz o que corrigir. Se você recusar a confirmação, o comando sai com 1 e imprime Cancelado..

about.numbers[0] (fictitious): {"value":"12 anos","label":"de confeitaria"}
about.numbers[1] (fictitious): {"value":"3.400","label":"alunas formadas"}
about.numbers[2] (fictitious): {"value":"4,9","label":"nota média das avaliações"}
about.numbers[3] (fictitious): {"value":"27","label":"estados com alunas ativas"}
about.paragraphs[0] (fictitious): Sou a Marina, confeiteira há 12 anos. Comecei vendendo bolos…
about.paragraphs[1] (fictitious): Criei este curso para encurtar o caminho que levei anos para…
about.title (claude): Quem ensina
consent.text (claude): Usamos cookies para medir o uso da página e melhorar a ofert…
cta.cta.href (fictitious): https://pay.example.com/checkout/curso
cta.cta.label (claude): Quero garantir minha vaga
cta.text (claude): Garantia de 7 dias: se não gostar, devolvemos o valor.
cta.title (claude): Pronta para vender seus primeiros doces?
faq.items[0].answer (claude): Não. O curso começa do zero e avança passo a passo.
faq.items[0].question (claude): Preciso de experiência?
faq.items[1].answer (claude): Para sempre, com todas as atualizações futuras.
faq.items[1].question (claude): Por quanto tempo tenho acesso?
faq.items[2].answer (claude): Sim, em até 12 vezes, além de Pix e boleto.
faq.items[2].question (claude): Posso pagar no cartão?
faq.items[3].answer (claude): Você tem 7 dias para pedir o reembolso, sem burocracia.
faq.items[3].question (claude): E se eu não gostar?
faq.title (claude): Perguntas frequentes
features.intro (claude): Quatro pilares que tiram você do improviso e colocam pedidos…
features.items[0].text (claude): Mais de 40 receitas com rendimento e custo calculados.
features.items[0].title (claude): Receitas testadas
features.items[1].text (claude): Planilha pronta para saber quanto cobrar em cada doce.
features.items[1].title (claude): Preço sem achismo
features.items[2].text (claude): Modelos de mensagem e cardápio para fechar encomendas.
features.items[2].title (claude): Vendas pelo WhatsApp
features.items[3].text (claude): Tire dúvidas com a professora em dias úteis.
features.items[3].title (claude): Suporte de verdade
features.title (claude): Tudo para começar a vender já na primeira semana
featureSplit.eyebrow (claude): Como funciona
featureSplit.points[0] (claude): Aulas curtas, de até 12 minutos
featureSplit.points[1] (claude): Passo a passo com fotos e vídeos
featureSplit.points[2] (claude): Certificado ao concluir
featureSplit.text (claude): Cada módulo termina com uma tarefa prática, para você aplica…
featureSplit.title (claude): Do primeiro bolo à primeira encomenda
hero.cta.label (claude): Quero ver a aula de apresentação
hero.eyebrow (claude): Curso online de confeitaria
hero.rating (fictitious): {"value":4.9,"count":1280}
hero.subtitle (claude): Aprenda receitas, preço e vendas em 30 dias, no seu ritmo, d…
hero.title (claude): Transforme sua cozinha em um negócio que vende todo dia
pricing.guarantee.text (claude): Se não gostar, devolvemos o valor integral.
pricing.guarantee.title (claude): Garantia de 7 dias
pricing.intro (claude): Pague uma vez e tenha acesso para sempre.
pricing.plans[0].cta.href (fictitious): https://pay.example.com/checkout/curso
pricing.plans[0].cta.label (claude): Quero garantir minha vaga
pricing.plans[0].features[0] (claude): Acesso vitalício às aulas
pricing.plans[0].features[1] (claude): Planilhas e modelos prontos
pricing.plans[0].features[2] (claude): Comunidade de alunas
pricing.plans[0].features[3] (claude): Certificado de conclusão
pricing.plans[0].name (claude): Curso completo
pricing.plans[0].note (fictitious): ou 12x de R$ 51,40 no cartão
pricing.plans[0].price (fictitious): {"amount":497,"currency":"BRL","period":"once"}
pricing.title (claude): Um preço simples, sem surpresas
site.business (fictitious): {"name":"Doces Lucrativos","legalId":"12.345.678/0001-90"}
site.checkoutUrl (fictitious): https://pay.example.com/checkout/curso
site.gtmId (fictitious): GTM-TEST000
site.whatsapp (fictitious): {"number":"11999999999","message":"Olá! Quero saber mais sob…
testimonials.items[0] (fictitious): {"quote":"Na terceira semana já fechei minha primeira encome…
testimonials.items[1] (fictitious): {"quote":"A planilha de preços mudou minha margem. Eu vendia…
testimonials.items[2] (fictitious): {"quote":"Aulas curtas, que cabem na rotina de quem tem filh…
testimonials.title (claude): Quem fez o curso conta como foi
Liberar 63 item(ns) de conteúdo fictício/Claude? [s/N] 
[saída: 0]

slash verify

uso: slash verify [--background] [--update-baseline] [--if-changed]

Roda, em ordem, as bases visuais, o lint (quando o projeto declara um script lint), o typecheck com os testes, o check, o build, a conferência do HTML, o orçamento de tamanho, o Playwright e o Lighthouse. A primeira etapa que falha para a execução.

  • --update-baseline: regrava as imagens de referência das bases visuais.
  • --if-changed: não roda nada quando a árvore do projeto é igual à da última execução verde e à do último commit.
  • --background: roda em segundo plano. O andamento vai para .slash/verify.log e o resultado para .slash/verify.json.
✓ typecheck + testes (<n> s)
✓ check (<n> s)
✓ build (<n> s)
✓ html (<n> s)
✓ orçamento (<n> s)
✓ playwright (<n> s)
✓ lighthouse (<n> s)
[saída: 0]

slash module

uso: slash module list [--dir <pasta>]
uso: slash module add <id> [--dir <pasta>]

Só existe em projetos blog, que têm o arquivo slash.lock.

  • slash module list mostra os módulos instalados e os disponíveis no catálogo oficial deste slash-kit.
  • slash module add <id> copia o módulo e as dependências que o projeto ainda não tem, na ordem do catálogo. Depois regenera src/modules/index.ts e grava os módulos no slash.lock. Se você editou o índice à mão, o comando acrescenta a linha do módulo ao seu arquivo, desde que consiga reconhecer a lista. Se não conseguir, recusa e não copia nada.

Reinicie o servidor para o painel carregar o módulo.

Instalados:
  posts  1.0.0  v1.1.0

Disponíveis:
  categorias         1.0.0  depende de: posts
  comentarios        1.0.0  depende de: posts
  metricas           1.0.0  depende de: posts
  newsletter         1.0.0  sem dependências
  paginas            1.0.0  sem dependências
  redirecionamentos  1.0.0  sem dependências
  seo                1.0.0  depende de: posts, paginas
  tags               1.0.0  depende de: posts
[saída: 0]
Instalado: tags 1.0.0.
Reinicie o servidor (bun run start) para o painel carregar o que entrou.
[saída: 0]

Fora de um projeto blog, o comando recusa e diz o que falta:

Esta pasta não é um projeto blog do slash: slash.lock não encontrado em <pasta>. Rode o comando dentro de um projeto criado com "slash create <pasta> --template blog" ou use --dir <pasta>.
[saída: 1]

slash backup

uso: slash backup [--restore <arquivo>] [--dir <pasta>]

Só existe em projetos blog. Sem opções, faz um backup manual em storage/backups, com o banco, as imagens da mídia e o slash.lock. A pasta do banco vem de DATABASE_URL; sem ela, é storage/db.sqlite.

Com --restore <arquivo>, o comando pede confirmação e substitui o banco e as imagens pelo conteúdo do arquivo. Antes, guarda um backup do estado atual. O arquivo pode ser um caminho ou só o nome de um backup de storage/backups. Depois da restauração, todos saem do painel e os convites e links de recuperação deixam de valer. A linha de comando não publica o site: republique pela tela Publicação do painel.

Backup criado: storage/backups/backup-<data>-manual.tar.gz
[saída: 0]

slash admin

uso: slash admin create --email <e-mail> [--dir <pasta>]

Só existe em projetos blog. Cria um administrador que pode entrar no painel, útil no primeiro acesso ou quando a conta se perde. A senha é pedida duas vezes no terminal, sem eco, e nunca vem em uma opção. Ela precisa ter pelo menos 12 caracteres caracteres. O e-mail é gravado em minúsculas, e um e-mail já cadastrado é recusado.

Senha: Repita a senha: Administrador criado: admin@exemplo.com.br
[saída: 0]