Communitygithub.com

Nuvraxis/nuvraxis-plugins

Configuração do Biome 2.5 e regras para monorepos Nuvraxis — biome.json raiz com $schema fixado, VCS ignore, configurações de formatação, preset recomendado com a11y e domínios react/next, política de nursery, organização de imports, overrides, configurações aninhadas por pacote ("extends": "//"), biome check --write localmente, biome ci no CI, configurações do VS Code e migração de ESLint/Prettier.

O que é nuvraxis-plugins?

Esta skill define a configuração e as regras do Biome 2.5 para monorepos Nuvraxis, atuando como a única ferramenta de formatação e linting para JS, TS, JSX, JSON e CSS. O arquivo `biome.json` na raiz do template é a fonte da verdade, com o esquema fixado na versão instalada, VCS ignore habilitado, formatação padronizada (2 espaços, largura 100, LF, aspas duplas, ponto e vírgula, trailing commas) e o preset recomendado com os domínios `a11y`, `react` e `next`. As regras incluem manter o nursery desligado, organizar imports automaticamente via assist, usar overrides por glob para testes, permitir configurações aninhadas com `"extends": "//"`, executar `biome check --write` localmente e `biome ci` no CI, suprimir linhas com justificativa e corrigir erros comuns como `useImportType` e `noExplicitAny`. Para arquivos não suportados como `.scss`, o stylelint é utilizado. A skill também abrange a migração completa de ESLint/Prettier e recomendações de extensões VS Code. É útil quando o repositório já possui `biome.json` ou `biome.jsonc`, `@biomejs/biome` no `package.json`, ou quando se está migrando de ESLint/Prettier e corrigindo erros de lint e formatação.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Nuvraxis/nuvraxis-plugins/tree/HEAD/plugins/nuvraxis-frontend/skills/biome

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Biome

Biome é o único formatador e linter para JS, TS, JSX, JSON e CSS. SCSS é a exceção: Biome 2.5 não o analisa, então o stylelint cuida de .scss (veja scss-bem). Sem ESLint, sem Prettier.

O biome.json raiz do template é a fonte da verdade. Um hook do plugin executa pnpm exec biome check --write <file> após cada arquivo que Claude edita, quando um biome.json existe acima dele.

Regras

  1. Um biome.json raiz, com esquema fixado na versão instalada. "$schema": "https://biomejs.dev/schemas/2.5.15/schema.json" e @biomejs/biome fixado na mesma versão no catálogo do workspace. Um esquema incompatível oculta opções desconhecidas ou renomeadas no editor. Ao atualizar, execute pnpm exec biome migrate --write e atualize ambos.

  2. Deixe o git decidir o que é ignorado: vcs.useIgnoreFile: true. Em seguida, force a ignorar artefatos de build com !! em files.includes (!!**/.next, !!**/.turbo, !!**/dist, !!**/coverage), o que também impede o Biome de escanear essas pastas. Um único ! exclui do processamento mas ainda indexa. files.ignoreUnknown: true evita que .scss e outros arquivos não suportados sejam reportados.

  3. Formatador: 2 espaços, largura 100, LF, aspas duplas, ponto e vírgula, trailing commas. Essas opções são fixas para todo repositório para que os diffs não briguem sobre estilo. Não adicione overrides de formatação por pacote.

  4. Linter: preset: "recommended", a11y: "error", domínios react e next em recommended. rules.recommended: true é a grafia antiga e está obsoleta: use rules.preset. a11y em error porque o nuvui cuida da acessibilidade de seus próprios componentes, então o que sobra (alt, rótulos, tipos de botão em seu próprio markup) deve estar correto. O domínio next adiciona regras como noImgElement; o react adiciona regras de hooks.

  5. Nursery permanece desligado. Regras do nursery mudam entre versões de patch e podem quebrar o CI em uma atualização do Biome. Ative uma deliberadamente, pelo nome, com um comentário explicando o motivo, e reavalie a cada atualização.

  6. noConsole avisa, permitindo error e warn. Logs de erro estruturados (instrumentation.ts) usam console.error; console.log solto é capturado.

  7. Ordene imports com o assistente, não manualmente. assist.actions.source.organizeImports: "on". biome check --write o aplica; biome ci falha em imports não ordenados.

  8. Overrides por glob, para arquivos de teste e afins. O template habilita o domínio test apenas para *.test.ts(x) / *.test-d.ts. Coloque outras diferenças de tipo de arquivo lá também, não em configurações separadas.

  9. Configurações aninhadas apenas para pacotes que realmente diferem, e elas estendem a raiz.

    // packages/legacy-widget/biome.json
    { "extends": "//", "linter": { "rules": { "style": { "noNonNullAssertion": "off" } } } }
    

    "extends": "//" significa "a configuração raiz" e implica "root": false. Qualquer outra configuração aninhada deve definir "root": false. Não usamos um pacote @repo/biome-config compartilhado: o arquivo raiz mais // cobre tudo sem necessidade de build ou dependência.

  10. Localmente biome check --write; no CI biome ci. pnpm lint executa biome check . (sem escrita); pnpm lint:fix executa biome check --write .. O CI executa pnpm exec biome ci --reporter=github ., que nunca escreve, falha em formatação, lint e ordem de imports, e anota o PR. Adicione --changed --since=origin/main apenas se a execução completa ficar lenta; hoje é questão de milissegundos.

  11. Suprima uma linha, com um motivo.

    // biome-ignore lint/suspicious/noExplicitAny: callback de terceiros tipado como any no upstream
    

    Nunca desabilite uma regra em todo o repositório para fazer um arquivo passar. Se uma regra está errada para o repositório, altere biome.json em seu próprio commit com o motivo.

  12. Corrija, não silencie, os comuns.

    • useImportType: execute a correção; é exigido por verbatimModuleSyntax.
    • noExplicitAny: use unknown e faça parse (veja typescript-production).
    • useButtonType, noSvgWithoutTitle, useAltText: bugs reais de acessibilidade.
    • noImgElement: use next/image.
    • useExhaustiveDependencies: corrija a lista de dependências ou mova o valor para fora do componente.
  13. VS Code: Biome é o formatador padrão, correções ao salvar. O .vscode/settings.json do template define editor.defaultFormatter: "biomejs.biome", source.fixAll.biome e source.organizeImports.biome ao salvar, e biome.requireConfiguration: true para que a extensão fique silenciosa em repositórios sem Biome. SCSS mantém a extensão stylelint. Recomende ambas em .vscode/extensions.json.

  14. Migrando de ESLint/Prettier: migre e depois exclua. Veja references/migration.md. Estado final: nenhum pacote eslint*, prettier* ou @typescript-eslint/*, nenhum .eslintrc*, eslint.config.*, .prettierrc*, .prettierignore.

O que o Biome não cobre

ArquivoFerramenta
.scssstylelint (scss-bem)
.yaml (workflows, Helm)actionlint para workflows; helm lint + kubeconform para charts
.mdnada é imposto
Erros de tipotsc --noEmit (pnpm typecheck)

Verificar

pnpm lint                               # biome check . && stylelint
pnpm exec biome ci --reporter=github .  # o que o CI executa
pnpm exec biome rage                    # exibe a configuração resolvida se algo parecer ignorado

Fontes

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Nuvraxis/nuvraxis-plugins

>- Dockerfile rules for Next.js standalone apps in a pnpm + Turborepo monorepo — multi-stage build (turbo prune → pnpm fetch/offline install → turbo build → minimal runner), pinned Node 26 Alpine by digest, checksum-verified pnpm binary, non-root uid 1001, read-only root filesystem with a writable .next/cache, HEALTHCHECK on /api/health, build args only for NEXT_PUBLIC_* values, BuildKit secrets and cache mounts, multi-arch, OCI labels and .dockerignore. Use when the repo has a Dockerfile, .dockerignore, compose file, or next.config with output "standalone", or when asked to containerise, shrink, harden or debug an image.

Nuvraxis/nuvraxis-plugins

>- GitHub Actions conventions for Nuvraxis Next.js apps — exactly three workflows: pr.yaml (every PR to any branch: Biome, stylelint, typecheck/test/build with turbo --affected, Docker build + health check, helm lint + kubeconform; publishes nothing), main.yaml (push to main: one multi-arch image to GHCR tagged sha-SHORTSHA and main, provenance + SBOM, gha cache), release.yaml (tag vX.Y.Z: verify on main, retag the existing image without rebuilding, package and push the Helm chart to OCI, GitHub Release with chart, digest and SBOM). Minimal permissions per job, GITHUB_TOKEN only, pinned action majors. Use when editing .github/workflows/*, adding a CI step, or debugging a failed run or release.

Nuvraxis/nuvraxis-plugins

>- Helm chart rules for Nuvraxis Next.js apps — one chart per app in charts/ (named after the app), published to oci://ghcr.io/nuvraxis/charts and synced by Argo CD; Chart.yaml version/appVersion set only by release.yaml; Deployment with startup/liveness/readiness probes on /api/health, non-root read-only security context, emptyDir for .next/cache, ConfigMap + existing Secret via envFrom, Service, Ingress with cert-manager, HPA, PDB, ServiceAccount, topology spread; no Helm hooks; helm lint --strict + kubeconform. Use when the repo has charts/, Chart.yaml, values*.yaml, templates/*.yaml with Helm syntax, or an Argo CD Application, or when asked to deploy, scale, expose or configure the app on Kubernetes.

Nuvraxis/nuvraxis-plugins

>- Production rules for Next.js 16 App Router apps at Nuvraxis — Server/Client Component boundaries, Cache Components ("use cache", cacheLife, cacheTag, updateTag), Server Actions, route handlers, env handling, instrumentation, output standalone and the /api/health route. Use when the project has "next" in package.json, an app/ or src/app/ directory, next.config.ts, proxy.ts, instrumentation.ts, or files named page.tsx, layout.tsx, route.ts, loading.tsx, error.tsx.

Habilidades Relacionadas