本文へ移動
cccskills
無料GitHub で公開

fix-react-doctor-finding

Use when asked to fix a specific react-doctor finding on the Namias portfolio. Reads the report, locates the file, applies the canonical fix pattern, re-runs the tool, and commits the slice.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md3.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

fix-react-doctor-finding

The fix is always: read → locate → apply the canonical pattern → re-run → commit.

Step 1 — read the report

npm run doctor:json
node -e "
  const r = require('./.react-doctor/report.json');
  console.log(r.summary.errorCount, 'err,', r.summary.warningCount, 'warn');
  r.diagnostics.forEach(d =>
    console.log(d.filePath + ':' + d.line + ':' + d.column + ' [' + d.severity + '] ' + d.rule + ' — ' + d.title)
  );
"

Step 2 — locate the file

The filePath in the report is relative to the repo root. Open it with the read tool, jump to the line number from the report.

Step 3 — apply the canonical pattern

See .agents/skills/run-react-doctor/SKILL.md for the 12-rule catalog. The patterns:

RuleOne-liner
no-dangerimport { JsonLd } from '@/components/seo/JsonLd' and replace <script dangerouslySetInnerHTML={...}> with <JsonLd data={...} />
iframe-missing-sandboxadd sandbox="" (or sandbox="allow-scripts ..." with a justification comment for Cal.com)
no-array-index-as-keyreplace key={i} with key={item.slug ?? item._key ?? item.id ?? item.name}
no-fetch-in-effectconst { data } = useSWR(key, fetcher) and move the fetch into a module-level function
rendering-hydration-mismatch-timehoist const X = computeAtModuleLoad() and use useState(X) + useEffect to refresh
button-has-typeadd type="button" (or submit/reset) as the first prop
control-has-associated-labeladd aria-label="..." to the input
prefer-tag-over-roleswap <div role="x"> for the native element OR add a documented eslint-disable-next-line on the same line as the role attribute
only-export-componentsmove helpers to *.lib.ts and types to *.types.ts; keep a barrel index.ts
no-multi-compextract a sibling file
jsx-no-constructed-context-valuesconst value = useMemo(() => ({...}), [deps])
react-hooks/exhaustive-depsadd the dep, or memoize the value with useMemo / useCallback

Step 4 — re-run

npm run doctor:json

Expect the targeted finding to be gone. The summary should drop by 1.

Step 5 — run the full test suite

npm run test -- --run

All 266 tests across 29 files must pass. The fix must not change visual or functional parity.

Step 6 — commit

One commit per fix. Message format:

fix(doctor): <one-line description> (<rule>, EPIC-<n> S-<x.y>)

Closes:
  - F-NNN file:line: <one-line context>
  - ...

Verified:
- vitest: 29/29 test files, 266/266 tests pass
- doctor:check findings drop from N to N-1

Use the F-NNN id from docs/react-doctor/findings.json (the historical baseline); for findings introduced after baseline, omit the cross-reference and describe the file/line directly.

When NOT to disable a rule

  • If a rule fires on a false positive that is unavoidable (e.g. CSS selector string containing the token button in FOCUSABLE_SELECTOR), the disable comment must:
    1. Sit on the line the rule reports, not the line above
    2. Include a one-paragraph justification that names the alternative and why it was rejected
    3. Use the react-doctor/<rule> namespace (NOT react/<rule>)
  • If you find yourself disabling more than 2 rules per file, stop and ask — the configuration is probably wrong, not the code.

Reference documents

  • docs/react-doctor/scoreboard.md — full journey from 91/100 baseline to 100/100, with the commit hash that closed each category
  • docs/react-doctor/findings.json — frozen F-NNN catalog from the baseline
  • docs/react-doctor/triage.md — strategy for each rule
  • docs/react-doctor/epic-N-report.md — per-epic narrative

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Audit and fix accessibility issues across the portfolio to ensure WCAG 2.1 AA compliance.

日本語の概要は準備中です。原文の説明を表示しています。

PP-Namias/Portfolio22026年10月7日 更新

Creates a new blog post document in the Sanity studio. Use when the user wants to write a blog post, publish an article, or schedule a future post.

日本語の概要は準備中です。原文の説明を表示しています。

PP-Namias/Portfolio22026年10月7日 更新

Creates a new certification document in the Sanity studio. Use when the user wants to add a credential, certificate, or professional accreditation to the Certifications collection.

日本語の概要は準備中です。原文の説明を表示しています。

PP-Namias/Portfolio22026年10月7日 更新

Adds a new skill MD file to the studio's skills collection. Use when the user wants to author a new step-by-step recipe for the studio's in-app Skills tool or the .agents mirror.

日本語の概要は準備中です。原文の説明を表示しています。

PP-Namias/Portfolio22026年10月7日 更新

Creates a new project document in the Sanity studio. Use when the user wants to add a new portfolio project, a case study, or a work sample to the Projects collection.

日本語の概要は準備中です。原文の説明を表示しています。

PP-Namias/Portfolio22026年10月7日 更新

Creates a new experience document in the Sanity studio. Use when the user wants to add a job, role, internship, or work history entry to the Experience collection.

日本語の概要は準備中です。原文の説明を表示しています。

PP-Namias/Portfolio22026年10月7日 更新

PP-Namias のスキルをすべて見る

このスキルの問題を報告する