Communitygithub.com

Nuvraxis/nuvraxis-plugins

Configuración de Biome 2.5 y reglas para monorepos Nuvraxis: biome.json raíz con esquema fijo, ignorado VCS, formato, presets recomendados con a11y y dominios react/next, política de nursery, organización de importaciones, anulaciones, configuraciones anidadas, biome check --write local, biome ci en CI, configuración de VS Code y migración desde ESLint/Prettier.

¿Qué es nuvraxis-plugins?

Este skill proporciona una configuración completa y detallada de Biome 2.5 para proyectos monorepo de Nuvraxis. Está diseñado para desarrolladores y equipos que gestionan múltiples paquetes en un solo repositorio y necesitan un linting y formateo consistentes, eficientes y sin fricciones. El skill cubre desde la configuración raíz de biome.json (con esquema fijo, ignorado VCS y ajustes de formato) hasta el uso de presets recomendados con accesibilidad (a11y) y dominios de React y Next.js, políticas para reglas de nursery, organización automática de importaciones y anulaciones por glob para archivos de prueba. También incluye pautas para usar biome check --write en desarrollo local y biome ci en CI, la integración con VS Code (formateador por defecto, correcciones al guardar) y un proceso claro de migración desde ESLint/Prettier. El objetivo es eliminar por completo ESLint y Prettier del stack, reemplazándolos por Biome como herramienta única y unificada para JavaScript, TypeScript, JSX, JSON y CSS, con manejo especial para archivos .scss que quedan a cargo de stylelint.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Biome

Biome es el único formateador y linter para JS, TS, JSX, JSON y CSS. SCSS es la excepción: Biome 2.5 no lo procesa, por lo que stylelint maneja .scss (consulta scss-bem). Sin ESLint, sin Prettier.

El biome.json raíz de la plantilla es la fuente de verdad. Un hook del plugin ejecuta pnpm exec biome check --write <archivo> después de cada archivo que Claude modifica, cuando existe un biome.json por encima de él.

Reglas

  1. Un único biome.json raíz, con esquema fijado a la versión instalada. "$schema": "https://biomejs.dev/schemas/2.5.15/schema.json", y @biomejs/biome fijado a la misma versión en el catálogo del área de trabajo. Un esquema desajustado oculta opciones desconocidas o renombradas en el editor. Al actualizar, ejecuta pnpm exec biome migrate --write y actualiza ambos.

  2. Que git decida qué se ignora: vcs.useIgnoreFile: true. Luego fuerza la ignorancia de la salida de compilación con !! en files.includes (!!**/.next, !!**/.turbo, !!**/dist, !!**/coverage), lo que también evita que Biome escanee esas carpetas. Un solo ! excluye del procesamiento pero aún indexa. files.ignoreUnknown: true evita que .scss y otros archivos no compatibles sean reportados.

  3. Formateador: 2 espacios, ancho 100, LF, comillas dobles, punto y coma, comas finales. Estos valores son fijos para cada repositorio para que las diffs no discutan sobre el estilo. No agregues anulaciones de formateador por paquete.

  4. Linter: preset: "recommended", a11y: "error", dominios react y next en recommended. rules.recommended: true es la ortografía antigua y está obsoleta: usa rules.preset. a11y en error porque nuvui maneja la accesibilidad de sus propios componentes, por lo que lo que queda (alt, etiquetas, tipos de botón en tu propio marcado) debe ser correcto. El dominio next agrega reglas como noImgElement; react agrega reglas de hooks.

  5. Nursery desactivado. Las reglas de nursery cambian entre versiones de parche y pueden romper CI en una actualización de Biome. Activa una deliberadamente, por nombre, con un comentario que indique por qué, y vuelve a verificar en cada actualización.

  6. noConsole advierte, permitiendo error y warn. Los registros de error estructurados (instrumentation.ts) usan console.error; los console.log accidentales son detectados.

  7. Ordena las importaciones con el asistente, no a mano. assist.actions.source.organizeImports: "on". biome check --write lo aplica; biome ci falla si las importaciones están desordenadas.

  8. Anulaciones por glob, para archivos de prueba y similares. La plantilla habilita el dominio test solo para *.test.ts(x) / *.test-d.ts. Coloca allí otras diferencias por tipo de archivo, no en configuraciones separadas.

  9. Configuraciones anidadas solo para paquetes que realmente difieran, y extienden la raíz.

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

    "extends": "//" significa "la configuración raíz" e implica "root": false. Cualquier otra configuración anidada debe establecer "root": false. No usamos un paquete compartido @repo/biome-config: el archivo raíz más // lo cubre sin necesidad de compilación ni dependencia.

  10. Localmente biome check --write; en CI biome ci. pnpm lint ejecuta biome check . (sin escrituras); pnpm lint:fix ejecuta biome check --write .. CI ejecuta pnpm exec biome ci --reporter=github ., que nunca escribe, falla en formato, linting y orden de importaciones, y anota el PR. Agrega --changed --since=origin/main solo si la ejecución completa se vuelve lenta; hoy es milisegundos.

  11. Suprime una línea, con una razón.

    // biome-ignore lint/suspicious/noExplicitAny: third-party callback typed as any upstream
    

    Nunca deshabilites una regla en todo el repositorio para que un solo archivo pase. Si una regla es incorrecta para el repositorio, cambia biome.json en su propio commit con la razón.

  12. Corrige, no silencies, las comunes.

    • useImportType: ejecuta la corrección; es requerido por verbatimModuleSyntax.
    • noExplicitAny: usa unknown y analiza (consulta typescript-production).
    • useButtonType, noSvgWithoutTitle, useAltText: errores reales de accesibilidad.
    • noImgElement: usa next/image.
    • useExhaustiveDependencies: corrige la lista de dependencias o mueve el valor fuera del componente.
  13. VS Code: Biome es el formateador predeterminado, corrige al guardar. El .vscode/settings.json de la plantilla establece editor.defaultFormatter: "biomejs.biome", source.fixAll.biome y source.organizeImports.biome al guardar, y biome.requireConfiguration: true para que la extensión permanezca inactiva en repositorios sin Biome. SCSS conserva la extensión stylelint. Recomienda ambas en .vscode/extensions.json.

  14. Migrando desde ESLint/Prettier: migrar, luego eliminar. Consulta references/migration.md. Estado final: sin paquetes eslint*, prettier* o @typescript-eslint/*, sin .eslintrc*, eslint.config.*, .prettierrc*, .prettierignore.

Lo que Biome no cubre

ArchivoHerramienta
.scssstylelint (scss-bem)
.yaml (workflows, Helm)actionlint para workflows; helm lint + kubeconform para charts
.mdnada exigido
Errores de tipotsc --noEmit (pnpm typecheck)

Verificar

pnpm lint                               # biome check . && stylelint
pnpm exec biome ci --reporter=github .  # lo que ejecuta CI
pnpm exec biome rage                    # imprime la configuración resuelta si algo parece ignorado

Fuentes

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.

Skills relacionados