Config Project
Overview
Executar um script determinístico e idempotente para bootstrap web+backend no padrão do monorepo.
O fluxo usa npx create-turbo@latest para gerar a base padrão do TurboRepo (incluindo configs compartilhadas e .gitignore) e reconcilia apenas o que estiver faltando na pasta atual.
Se .git já existir no diretório atual, o scaffold é executado com --no-git para evitar recriação de repositório git.
Depois cria frontend/backend apenas quando necessário, aplica namespace do skills.config.json nos pacotes e atualiza somente os arquivos pendentes.
As configurações padrão são lidas de skills.config.json (em .agents/skills/.env, .cloud/skills/.env ou .env/ no repositório de skills).
Workflow
- Ler defaults de
namespace, frontendAppPath, backendAppPath, frontendPort, backendPort e env vars no skills.config.json.
- Detectar gaps da estrutura Turbo na pasta atual; quando necessário, executar
npx create-turbo@latest e reconciliar somente os arquivos/pastas ausentes (packages/eslint-config, packages/typescript-config, .gitignore, .npmrc, configs base).
- Antes de criar apps customizados, remover os projetos padrão do Turbo (
apps/docs, apps/web e packages/ui) quando detectados como template original.
- Criar app frontend com
create-next-app --src-dir somente se frontendAppPath ainda não existir como app Next.js, garantindo estrutura src/ no frontend.
- Criar app backend com
nest new --skip-git somente se backendAppPath ainda não existir como app NestJS.
- Garantir namespace em todos os projetos do workspace (
apps/* e packages/*), incluindo frontend/backend, usando namespace do config (ou --scope).
- Instalar apenas dependências faltantes (
turbo, ts-node e prettier no root, dotenv no backend).
- Atualizar
package.json root, garantir .prettierrc no root e atualizar turbo.json de forma incremental.
- Ajustar
next.config.ts|js|mjs do frontend para garantir images.remotePatterns liberando imagens remotas em http e https com hostname: "**" (idempotente).
- Atualizar
.env e .env.example de frontend/backend via upsert (sem apagar chaves extras existentes).
- Ajustar
main.ts do backend de forma incremental (dotenv/config, app.enableCors(), porta via backendPortEnvVar).
- Scaffold E2E idempotente via
ensure-e2e-scaffold.mjs:
- backend:
test/jest-e2e.json, test/app.e2e-spec.ts, supertest, script test:e2e
- root:
playwright.config.ts, e2e/smoke.spec.ts, scripts test:e2e e test:e2e:web
- Registrar execução em
.log/skills.log com título da skill e lista simples dos comandos/ações relevantes (sem timestamps e sem status), garantindo .log/ no .gitignore.
Commands
Fluxo padrão:
node .agents/skills/config-project/scripts/project-init.mjs
Se o repositório estiver instalado em .cloud/skills, ajuste o caminho dos comandos.
Pular instalação global do Nest CLI (forçar npx):
node .agents/skills/config-project/scripts/project-init.mjs --skip-global-nest
Customizar paths e portas:
node .agents/skills/config-project/scripts/project-init.mjs \
--frontend-path apps/frontend \
--backend-path apps/api \
--frontend-port 3000 \
--backend-port 4000
Customizar nomes das env vars de porta/url:
node .agents/skills/config-project/scripts/project-init.mjs \
--frontend-api-env-var NEXT_PUBLIC_API_URL \
--backend-port-env-var PORT
Sobrescrever namespace por CLI:
node .agents/skills/config-project/scripts/project-init.mjs --scope @namespace
Scaffold E2E standalone (Angular/Vue ou reaplicar após bootstrap):
node .agents/skills/config-project/scripts/ensure-e2e-scaffold.mjs \
--backend-path apps/backend \
--frontend-path apps/web-angular \
--frontend-port 4200 \
--backend-port 4000
Resources
scripts/project-init.mjs: script principal de bootstrap.
scripts/ensure-e2e-scaffold.mjs: scaffold idempotente de Supertest + Playwright.
assets/e2e-scaffold/: templates de jest-e2e.json, app.e2e-spec.ts, Playwright.
references/bootstrap-contract.md: contrato dos arquivos e alterações que o bootstrap aplica.
- Log local de execução:
.log/skills.log (não versionado; .log/ é adicionado ao .gitignore automaticamente, sem metadados extras).
Risk Logging Guardrails
- Registrar fatos de execucao em
.log/skills.log com marcador no inicio da linha.
- Marcadores minimos esperados:
[CMD], [FILE_CREATE], [FILE_UPDATE], [FILE_DELETE], [DIR_CREATE], [RISK], [FAIL], [AI].
- Sempre registrar
[RISK] quando houver sobrescrita, exclusao, rename/move, ou fallback forcado em arquivos/pastas.
- Toda falha inesperada deve gerar
[FAIL] com descricao factual curta do evento.
- Operacoes de terminal e alteracoes de arquivos devem passar pelos utilitarios compartilhados em
../utils para manter rastreabilidade consistente.
Global Standards
- Consultar
../skills-standards.md para padroes globais de nomenclatura e convencoes gerais entre skills.
1---2name: config-project3description: Inicializar ou continuar um projeto no padrão TurboRepo com frontend (Next.js) e backend (NestJS sem git interno), criando/reconciliando a estrutura base via `npx create-turbo@latest` no diretório atual quando necessário e aplicando setup idempotente por `skills.config.json` (com override via CLI). Usar quando o pedido envolver bootstrap de monorepo web+backend, setup inicial Next+Nest, reaplicação segura do setup sem sobrescrever, ou padronização das tasks de `test/build` no Turbo.4---56# Config Project78## Overview910Executar um script determinístico e idempotente para bootstrap web+backend no padrão do monorepo.11O fluxo usa `npx create-turbo@latest` para gerar a base padrão do TurboRepo (incluindo configs compartilhadas e `.gitignore`) e reconcilia apenas o que estiver faltando na pasta atual.12Se `.git` já existir no diretório atual, o scaffold é executado com `--no-git` para evitar recriação de repositório git.13Depois cria frontend/backend apenas quando necessário, aplica namespace do `skills.config.json` nos pacotes e atualiza somente os arquivos pendentes.14As configurações padrão são lidas de `skills.config.json` (em `.agents/skills/.env`, `.cloud/skills/.env` ou `.env/` no repositório de skills).1516## Workflow17181. Ler defaults de `namespace`, `frontendAppPath`, `backendAppPath`, `frontendPort`, `backendPort` e env vars no `skills.config.json`.192. Detectar gaps da estrutura Turbo na pasta atual; quando necessário, executar `npx create-turbo@latest` e reconciliar somente os arquivos/pastas ausentes (`packages/eslint-config`, `packages/typescript-config`, `.gitignore`, `.npmrc`, configs base).203. Antes de criar apps customizados, remover os projetos padrão do Turbo (`apps/docs`, `apps/web` e `packages/ui`) quando detectados como template original.214. Criar app frontend com `create-next-app --src-dir` somente se `frontendAppPath` ainda não existir como app Next.js, garantindo estrutura `src/` no frontend.225. Criar app backend com `nest new --skip-git` somente se `backendAppPath` ainda não existir como app NestJS.236. Garantir namespace em todos os projetos do workspace (`apps/*` e `packages/*`), incluindo frontend/backend, usando `namespace` do config (ou `--scope`).247. Instalar apenas dependências faltantes (`turbo`, `ts-node` e `prettier` no root, `dotenv` no backend).258. Atualizar `package.json` root, garantir `.prettierrc` no root e atualizar `turbo.json` de forma incremental.269. Ajustar `next.config.ts|js|mjs` do frontend para garantir `images.remotePatterns` liberando imagens remotas em `http` e `https` com `hostname: "**"` (idempotente).2710. Atualizar `.env` e `.env.example` de frontend/backend via upsert (sem apagar chaves extras existentes).2811. Ajustar `main.ts` do backend de forma incremental (`dotenv/config`, `app.enableCors()`, porta via `backendPortEnvVar`).2912. Scaffold E2E idempotente via `ensure-e2e-scaffold.mjs`:30 - backend: `test/jest-e2e.json`, `test/app.e2e-spec.ts`, `supertest`, script `test:e2e`31 - root: `playwright.config.ts`, `e2e/smoke.spec.ts`, scripts `test:e2e` e `test:e2e:web`3213. Registrar execução em `.log/skills.log` com título da skill e lista simples dos comandos/ações relevantes (sem timestamps e sem status), garantindo `.log/` no `.gitignore`.3334## Commands3536Fluxo padrão:3738```bash39node .agents/skills/config-project/scripts/project-init.mjs40```4142> Se o repositório estiver instalado em `.cloud/skills`, ajuste o caminho dos comandos.4344Pular instalação global do Nest CLI (forçar `npx`):4546```bash47node .agents/skills/config-project/scripts/project-init.mjs --skip-global-nest48```4950Customizar paths e portas:5152```bash53node .agents/skills/config-project/scripts/project-init.mjs \54 --frontend-path apps/frontend \55 --backend-path apps/api \56 --frontend-port 3000 \57 --backend-port 400058```5960Customizar nomes das env vars de porta/url:6162```bash63node .agents/skills/config-project/scripts/project-init.mjs \64 --frontend-api-env-var NEXT_PUBLIC_API_URL \65 --backend-port-env-var PORT66```6768Sobrescrever namespace por CLI:6970```bash71node .agents/skills/config-project/scripts/project-init.mjs --scope @namespace72```7374Scaffold E2E standalone (Angular/Vue ou reaplicar após bootstrap):7576```bash77node .agents/skills/config-project/scripts/ensure-e2e-scaffold.mjs \78 --backend-path apps/backend \79 --frontend-path apps/web-angular \80 --frontend-port 4200 \81 --backend-port 400082```8384## Resources8586- `scripts/project-init.mjs`: script principal de bootstrap.87- `scripts/ensure-e2e-scaffold.mjs`: scaffold idempotente de Supertest + Playwright.88- `assets/e2e-scaffold/`: templates de `jest-e2e.json`, `app.e2e-spec.ts`, Playwright.89- `references/bootstrap-contract.md`: contrato dos arquivos e alterações que o bootstrap aplica.90- Log local de execução: `.log/skills.log` (não versionado; `.log/` é adicionado ao `.gitignore` automaticamente, sem metadados extras).9192## Risk Logging Guardrails9394- Registrar fatos de execucao em `.log/skills.log` com marcador no inicio da linha.95- Marcadores minimos esperados: `[CMD]`, `[FILE_CREATE]`, `[FILE_UPDATE]`, `[FILE_DELETE]`, `[DIR_CREATE]`, `[RISK]`, `[FAIL]`, `[AI]`.96- Sempre registrar `[RISK]` quando houver sobrescrita, exclusao, rename/move, ou fallback forcado em arquivos/pastas.97- Toda falha inesperada deve gerar `[FAIL]` com descricao factual curta do evento.98- Operacoes de terminal e alteracoes de arquivos devem passar pelos utilitarios compartilhados em `../utils` para manter rastreabilidade consistente.99100## Global Standards101102- Consultar `../skills-standards.md` para padroes globais de nomenclatura e convencoes gerais entre skills.