Audit and fix accessibility issues across the portfolio to ensure WCAG 2.1 AA compliance.
日本語の概要は準備中です。原文の説明を表示しています。
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.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
The fix is always: read → locate → apply the canonical pattern → re-run → commit.
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)
);
"
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.
See .agents/skills/run-react-doctor/SKILL.md for the 12-rule catalog. The patterns:
| Rule | One-liner |
|---|---|
no-danger | import { JsonLd } from '@/components/seo/JsonLd' and replace <script dangerouslySetInnerHTML={...}> with <JsonLd data={...} /> |
iframe-missing-sandbox | add sandbox="" (or sandbox="allow-scripts ..." with a justification comment for Cal.com) |
no-array-index-as-key | replace key={i} with key={item.slug ?? item._key ?? item.id ?? item.name} |
no-fetch-in-effect | const { data } = useSWR(key, fetcher) and move the fetch into a module-level function |
rendering-hydration-mismatch-time | hoist const X = computeAtModuleLoad() and use useState(X) + useEffect to refresh |
button-has-type | add type="button" (or submit/reset) as the first prop |
control-has-associated-label | add aria-label="..." to the input |
prefer-tag-over-role | swap <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-components | move helpers to *.lib.ts and types to *.types.ts; keep a barrel index.ts |
no-multi-comp | extract a sibling file |
jsx-no-constructed-context-values | const value = useMemo(() => ({...}), [deps]) |
react-hooks/exhaustive-deps | add the dep, or memoize the value with useMemo / useCallback |
npm run doctor:json
Expect the targeted finding to be gone. The summary should drop by 1.
npm run test -- --run
All 266 tests across 29 files must pass. The fix must not change visual or functional parity.
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.
button in FOCUSABLE_SELECTOR), the disable comment must:
react-doctor/<rule> namespace (NOT react/<rule>)docs/react-doctor/scoreboard.md — full journey from 91/100 baseline to 100/100, with the commit hash that closed each categorydocs/react-doctor/findings.json — frozen F-NNN catalog from the baselinedocs/react-doctor/triage.md — strategy for each ruledocs/react-doctor/epic-N-report.md — per-epic narrativeまだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Audit and fix accessibility issues across the portfolio to ensure WCAG 2.1 AA compliance.
日本語の概要は準備中です。原文の説明を表示しています。
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.
日本語の概要は準備中です。原文の説明を表示しています。
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.
日本語の概要は準備中です。原文の説明を表示しています。
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.
日本語の概要は準備中です。原文の説明を表示しています。
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.
日本語の概要は準備中です。原文の説明を表示しています。
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.
日本語の概要は準備中です。原文の説明を表示しています。