mirror of
https://github.com/makeplane/plane.git
synced 2026-06-13 19:19:54 +00:00
chore: integrate react-doctor scanning (#9223)
Add react-doctor for React lint/a11y/perf/architecture diagnostics: - Add react-doctor devDependency and "doctor" npm script - Add .claude/skills/react-doctor skill for local triage workflow - Add GitHub Actions workflow to scan PRs and track health score
This commit is contained in:
committed by
GitHub
parent
0bbfe95cc7
commit
a1535319e6
@@ -0,0 +1,50 @@
|
||||
---
|
||||
name: react-doctor
|
||||
description: Use when finishing a feature, fixing a bug, before committing React code, or when the user types `/doctor`, asks to scan, triage, or clean up React diagnostics. Covers lint, accessibility, bundle size, architecture. Includes a regression check and a full local-triage workflow that fetches the canonical playbook.
|
||||
version: "1.1.0"
|
||||
---
|
||||
|
||||
# React Doctor
|
||||
|
||||
Scans React codebases for security, performance, correctness, and architecture issues. Outputs a 0–100 health score.
|
||||
|
||||
## After making React code changes:
|
||||
|
||||
Run `npx react-doctor@latest --verbose --diff` and check the score did not regress.
|
||||
|
||||
If the score dropped, fix the regressions before committing.
|
||||
|
||||
## For general cleanup or code improvement:
|
||||
|
||||
Run `npx react-doctor@latest --verbose` (without `--diff`) to scan the full codebase. Fix issues by severity — errors first, then warnings.
|
||||
|
||||
## /doctor — full local triage workflow
|
||||
|
||||
When the user types `/doctor`, says "run react doctor", or asks for a full triage / cleanup pass (not just a regression check), fetch the canonical local-triage playbook and follow every step in it:
|
||||
|
||||
```bash
|
||||
curl --fail --silent --show-error \
|
||||
--header 'Cache-Control: no-cache' \
|
||||
https://www.react.doctor/prompts/react-doctor-agent.md
|
||||
```
|
||||
|
||||
The playbook is the single source of truth — a scan → filter → triage → fix → validate loop that edits the working tree directly (never commits, never opens PRs). Updating the prompt at its source updates every agent on its next fetch — no skill reinstall needed.
|
||||
|
||||
Pair it with the matching per-rule prompts at `https://www.react.doctor/prompts/rules/<plugin>/<rule>.md` (fetched on demand inside the playbook) so each fix uses the canonical, reviewer-tested recipe.
|
||||
|
||||
## Configuring or explaining rules
|
||||
|
||||
When the user wants to understand a rule, disagrees with one, or wants to disable / tune which rules run (not fix code), use the `doctor-explain` skill (alias `/doctor-config`). Start with `npx react-doctor@latest rules explain <rule>`, then apply the narrowest control via `npx react-doctor@latest rules disable|set|category|ignore-tag …`, which edits your `doctor.config.*` (or `package.json#reactDoctor`).
|
||||
|
||||
## Command
|
||||
|
||||
```bash
|
||||
npx react-doctor@latest --verbose --diff
|
||||
```
|
||||
|
||||
| Flag | Purpose |
|
||||
| ----------- | --------------------------------------------- |
|
||||
| `.` | Scan current directory |
|
||||
| `--verbose` | Show affected files and line numbers per rule |
|
||||
| `--diff` | Only scan changed files vs base branch |
|
||||
| `--score` | Output only the numeric score |
|
||||
@@ -0,0 +1,62 @@
|
||||
# React Doctor — finds security, performance, correctness, accessibility,
|
||||
# bundle-size, and architecture issues in React codebases.
|
||||
#
|
||||
# Docs: https://www.react.doctor/ci
|
||||
# Source: https://github.com/millionco/react-doctor
|
||||
|
||||
name: React Doctor
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, ready_for_review]
|
||||
# Scans `main` on every push so you get a health-score trend on the
|
||||
# default branch — useful for tracking the overall number commit-by-commit
|
||||
# and catching regressions that slipped past PR review. PR-specific steps
|
||||
# (the sticky summary comment) are skipped automatically on `push` events.
|
||||
# Comment this block out if you only want PR-time scans.
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
permissions:
|
||||
# `actions/checkout` needs this to read the repo source.
|
||||
contents: read
|
||||
# Two uses: (1) reads the PR's changed-file list so the scan only checks
|
||||
# what the PR touched (faster, scoped to the diff), and (2) posts/updates
|
||||
# the sticky React Doctor summary comment on the PR. Downgrade `write` to
|
||||
# `read` to keep the changed-file scan but disable comment posting.
|
||||
pull-requests: write
|
||||
# The sticky-comment step uses GitHub's `issues.createComment` /
|
||||
# `issues.updateComment` endpoints — those are the same APIs that back PR
|
||||
# comments (PRs are issues under the hood). Not exercised on `push`
|
||||
# events, so safe to drop if you only run on `main`.
|
||||
issues: write
|
||||
# Lets the action publish a commit status with the score + error/warning
|
||||
# counts (links to the run). This is how a `push` to `main` surfaces its
|
||||
# result, since the PR comment is skipped off pull requests. Drop it to
|
||||
# disable the status (or set `commit-status: false` below).
|
||||
statuses: write
|
||||
|
||||
# Cancels any in-flight scan for the same PR (or branch, on push) the moment
|
||||
# a new commit arrives, so reviewers only ever see the latest run.
|
||||
concurrency:
|
||||
group: react-doctor-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
react-doctor:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- uses: millionco/react-doctor@v2
|
||||
# Common configuration knobs — uncomment any to override the default.
|
||||
# Full reference: https://www.react.doctor/ci
|
||||
# with:
|
||||
# blocking: warning # Gate level: "error" (default) | "warning" | "none" (advisory)
|
||||
# scope: full # On PRs, scan the whole project instead of just changed files
|
||||
# comment: false # Disable the sticky PR summary comment
|
||||
# review-comments: false # Disable inline review comments on changed lines
|
||||
# commit-status: false # Disable the commit status (score + counts, links to the run)
|
||||
# version: "0.4.0" # Pin to a specific react-doctor version instead of "latest"
|
||||
# directory: apps/web # Scan a sub-directory (default: ".")
|
||||
# project: "web,admin" # In a monorepo, scan specific workspace project(s)
|
||||
+3
-1
@@ -17,13 +17,15 @@
|
||||
"check:lint": "turbo run check:lint",
|
||||
"check:format": "turbo run check:format",
|
||||
"check:types": "turbo run check:types",
|
||||
"prepare": "husky"
|
||||
"prepare": "husky",
|
||||
"doctor": "npx react-doctor@latest"
|
||||
},
|
||||
"devDependencies": {
|
||||
"husky": "catalog:",
|
||||
"lint-staged": "catalog:",
|
||||
"oxfmt": "catalog:",
|
||||
"oxlint": "catalog:",
|
||||
"react-doctor": "^0.4.2",
|
||||
"turbo": "catalog:"
|
||||
},
|
||||
"lint-staged": {
|
||||
|
||||
Generated
+1826
-187
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user