# Fuzz > Somete a fuzzing las reglas de React Doctor con `@react-doctor/fuzz` para hallar crashes, lentitud, falsos positivos y diagnósticos sensibles a mutaciones. Se usa tras pasar los tests de la regla o al confirmarse un falso positivo nuevo. Fuente: https://skillsagentes.com/skills/millionco/react-doctor/fuzz Markdown: https://skillsagentes.com/skills/millionco/react-doctor/fuzz.md Repositorio: https://github.com/millionco/react-doctor Autor: millionco Licencia: NOASSERTION Actualizado: el mes pasado Coste de contexto: 65 tok instalada, 839 tok al activarse, 839 tok con todos los archivos del bundle Bundle: 1 archivo, 3 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add millionco/react-doctor --skill fuzz --agent claude-code # Cursor npx -y skills add millionco/react-doctor --skill fuzz --agent cursor # Codex npx -y skills add millionco/react-doctor --skill fuzz --agent codex # Gemini CLI npx -y skills add millionco/react-doctor --skill fuzz --agent gemini # Windsurf npx -y skills add millionco/react-doctor --skill fuzz --agent windsurf # Cline npx -y skills add millionco/react-doctor --skill fuzz --agent cline ``` ## Qué hace - Somete a fuzzing las reglas de React Doctor con `@react-doctor/fuzz` para encontrar crashes, lentitud, falsos positivos y diagnósticos sensibles a mutaciones. - Se ejecuta tras pasar los tests enfocados de la regla: `FUZZ_RULE= FUZZ_STRICT=1 FUZZ_ITERATIONS=500 nr fuzz`, y confirma que la regla dispara. - Ofrece un barrido completo apuntando el corpus a checkouts reales, con corpora listos vía `sync-fuzz-corpus.ts` (48 repos) y `build-bench-corpus.ts`. - Tría cada hallazgo por tipo: crash, caso lento, caída de veredicto, violación de invariante o falso positivo, cada uno con su acción y test de regresión. - Por cada falso positivo confirmado añade un fixture mínimo a `corpus/regressions/` con clase de debilidad estable y un caso válido enfocado al test de la regla. ## Cuándo usarla - Después de que pasen los tests de la regla. - Al investigar un hallazgo de fuzz. - Cuando una eval, revisión o reporte de usuario confirma un falso positivo nuevo. ## Qué la activa - "Haz fuzzing de la regla exhaustive-deps" - "Investiga este hallazgo de fuzz y añade el test de regresión" - "Barrido de fuzz antes de la release del lote de reglas" ## Antes de instalar - Se ejecuta desde `packages/fuzz` con `nr fuzz` y variables `FUZZ_*`; el barrido completo necesita materializar el corpus con `bun scripts/sync-fuzz-corpus.ts`. - Necesita en el PATH: bun ## Archivos - SKILL.md — 3 KB ## SKILL.md Reproducido tal cual desde millionco/react-doctor bajo NOASSERTION. Esta sección es el documento original y está en inglés. # Fuzz rules Use `packages/fuzz` after focused rule tests pass. Read its `README.md` for harness architecture and corpus setup. ## Run the harness Run the target rule first: ```sh FUZZ_RULE= FUZZ_STRICT=1 FUZZ_ITERATIONS=500 nr fuzz ``` Useful variants: ```sh nr fuzz FUZZ_RULE= FUZZ_SEED=42 nr fuzz FUZZ_INVARIANTS=1 nr fuzz FUZZ_CORPUS_DIR= nr fuzz FUZZ_RULE= FUZZ_PRINT_SILENT=1 nr fuzz ``` Confirm that the target rule fires. A silent rule only exercises early exits. If it stays silent, add a triggering shape to `packages/fuzz/src/snippet-pools.ts` and rerun. Use `FUZZ_TAG=` instead of `FUZZ_RULE` to exercise an entire registry cohort. Recommended full sweep (e.g. before a rule-batch release), pointing the corpus at real checkouts. Ready-made corpora work on any machine — see the package README "Canonical corpora": `bun scripts/sync-fuzz-corpus.ts` materializes a pinned 48-repo sample (symlinking the RDE cache when present, cloning otherwise), and `bun scripts/build-bench-corpus.ts` extracts react-bench's diagnostic-dense RD-health target files: ```sh cd packages/fuzz bun scripts/sync-fuzz-corpus.ts FUZZ_INVARIANTS=1 FUZZ_ITERATIONS=100 FUZZ_CORPUS_DIR=tmp/corpus-repos nr fuzz ``` Run the direct false-positive check when a rule change affects common syntax: ```sh cd packages/fuzz bun scripts/hunt-false-positives.ts ``` ## Triage findings Reproducers live in `packages/fuzz/tmp/fuzz-findings/`. - **Crash**: minimize the program, add a no-throw regression test, fix the rule, and replay the seed - **Slow case**: profile the pathological shape, bound the walk, and keep the existing threshold - **Verdict drop**: fix detection that depends on incidental syntax, then add the rule to the robustness gate when appropriate - **Invariant violation**: decide whether the rule should react to the rewrite; fix and test unexpected changes - **False positive**: add the valid program to the rule tests and fuzz regression corpus Replay one finding: ```sh FUZZ_RULE= FUZZ_SEED= FUZZ_ITERATIONS=1 nr fuzz ``` ## Preserve false positives For every confirmed false positive: 1. Add a minimal fixture to `packages/fuzz/corpus/regressions/--.tsx`. 2. Include the rule ID, weakness class, and source in the fixture header. 3. Add a focused valid case to the rule test suite. 4. Add a generator snippet when the existing pools cannot produce the weakness. 5. Run `nr -C packages/fuzz test` and replay the target rule. Use a stable weakness name such as `library-idiom`, `control-flow`, `wrapper-transparency`, `name-heuristic`, `alias-guard`, `cross-file`, `framework-gating`, `paren-shape`, `default-parameter`, `dynamic-computed`, `private-member`, or `copy-tracking`. Project-level dead-code and dependency findings belong in core tests, not the rule fuzzer. ## Report results Record the command, target-rule fire count, findings, replay seeds, corpus fixtures, and generator changes. Pass confirmed implementation findings to `rule-validate`. ## Dónde encaja - Categoría: [Testing y QA](https://skillsagentes.com/categorias/testing-qa.md) — Flujos de testing unitario, de integración y end-to-end. - Creador: [millionco](https://skillsagentes.com/creators/millionco.md) — 16 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [React Doctor](https://skillsagentes.com/skills/millionco/react-doctor/react-doctor.md): Escanea bases de código React en busca de problemas de seguridad, rendimiento, corrección y arquitectura, y da una puntuación de salud de 0 a 100. Incluye chequeo de regresión y un flujo completo de triage local con `/doctor`. - [Run Parity](https://skillsagentes.com/skills/millionco/react-doctor/run-parity.md): Compara los diagnósticos de React Doctor de un pull request contra su base con Daytona. Se usa para correr parity, comprobar regresiones de diagnósticos en un PR o reportar diagnósticos añadidos y quitados. - [Improve Threejs](https://skillsagentes.com/skills/millionco/react-doctor/improve-threejs.md): Audita y arregla apps de Three.js y React Three Fiber: rendimiento del frame-loop, fugas de memoria de GPU, corrección del grafo de escena y defectos visuales como z-fighting, shadow acne, espacio de color erróneo y resize roto. - [Performance](https://skillsagentes.com/skills/millionco/react-doctor/performance.md): Diagnostica el rendimiento de React en tiempo de ejecución con trazas de React Doctor, marcado de renders en vivo, Long Animation Frames y evidencia de renders por componente. Se invoca como `/performance`. - [Rde Eval](https://skillsagentes.com/skills/millionco/react-doctor/rde-eval.md): Ejecuta un bucle local y acotado de React Doctor Evals contra un cambio de regla sin commitear. Se usa tras pasar los tests de la regla, al inspeccionar hits de código abierto o cuando rule-validate pide evidencia local antes de la parity. ## Skills relacionadas - [Improve React](https://skillsagentes.com/skills/millionco/react-doctor/improve-react.md): Audita toda una base de código React como ingeniero sénior, apoyándose en el escaneo de React Doctor, y produce hallazgos priorizados y planes de implementación autocontenidos. Es de solo lectura: planifica mejoras, no las aplica. - [Rule Research](https://skillsagentes.com/skills/millionco/react-doctor/rule-research.md): Define un contrato preciso de regla de React Doctor antes de implementarla. Se usa al validar la idea de una regla, recoger evidencia, identificar trampas de falso positivo o fijar los límites de la primera versión. - [Rule Writing](https://skillsagentes.com/skills/millionco/react-doctor/rule-writing.md): Implementa reglas de React Doctor a partir de un contrato validado: reglas de oxlint, detección por sintaxis o control de flujo, tests adversariales, reutilización de utilidades del árbol sintáctico y actualización del registro de reglas. - [Tdd](https://skillsagentes.com/skills/mattpocock/skills/tdd.md): Desarrollo guiado por tests. Úsalo cuando quieras construir features o arreglar bugs test-first, cuando menciones "red-green-refactor", o cuando quieras tests de integración. - [Migrate To Shoehorn](https://skillsagentes.com/skills/mattpocock/skills/migrate-to-shoehorn.md): Migra archivos de test de aserciones de tipo `as` a @total-typescript/shoehorn. Úsalo cuando menciones shoehorn, quieras reemplazar `as` en tests, o necesites datos de test parciales. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)