skills/accessible-website-check/SKILL.md
Use when the user asks to check, audit, or improve a website or web project for accessibility (a11y), WCAG compliance, screen reader support, keyboard navigation, color contrast, or alt text. Triggers a plan-mode investigation against the TeachAccess design and code checklists, then implements approved fixes.
npx skillsauth add AMindToThink/claude-code-settings accessible-website-checkInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit a web project for accessibility issues against the TeachAccess design and code checklists, propose a prioritized remediation plan in plan mode, and implement the plan after user approval.
Run when the user asks to:
Identify scope — Determine which files/pages/components to audit. If unclear, scan the project root for index.html, src/, pages/, components/, or framework markers (React/Vue/Svelte/Astro/Next).
Enter plan mode — Use EnterPlanMode before investigating. All investigation is read-only and happens inside plan mode.
Investigate — Walk the codebase systematically against both checklists below. For each finding, capture: file path, line number, the checklist item it violates, severity (blocker/major/minor), and the concrete fix.
Write the plan — Group findings by checklist item. Prioritize blockers (keyboard traps, missing alt text on meaningful images, contrast failures on body text) above minor issues. Include a verification step.
Exit plan mode for approval — Use ExitPlanMode. The user reviews and approves.
Implement — After approval, apply fixes in priority order. Test each change. Run any available linters/a11y tools (see Tooling).
Verify — Re-run through the checklists on changed files. Report what was fixed and any items deferred.
Source: https://teachaccess.github.io/tutorial/design/checklist
Source: https://teachaccess.github.io/tutorial/code/checklist
alt text (decorative images use alt="")outline: none without replacement)<label>, aria-label, aria-labelledby, <title>)aria-describedby, role="alert", aria-invalid)<track kind="captions">)| Pattern | Likely issue |
|---|---|
| <img without alt= | Missing alt text |
| outline: none, outline: 0 | Removed focus indicator |
| <div onClick, <span onClick | Non-semantic interactive element (use <button>) |
| <a href="#" or <a> without href | Non-navigable link (use <button>) |
| <input without associated <label> | Unlabeled form field |
| tabindex="-1" on interactive content, tabindex > 0 | Keyboard order issues |
| role="button" without onKeyDown for Enter/Space | Missing keyboard handler |
| placeholder= used as label | Placeholder is not a label |
| aria-hidden="true" on focusable element | Hidden from AT but reachable |
| Color-only state (color: red for error, no icon/text) | Color-only meaning |
| <h1> skipping to <h3> | Broken heading hierarchy |
| <table> without <th> / scope | Inaccessible data table |
| autoplay on <video> / <audio> | Unexpected motion/sound |
If the project already has one of these configured, run it during the Verify step.
When exiting plan mode, structure the plan as:
## Accessibility Audit — Findings
### Blockers (must fix)
- [file:line] <issue> — <fix>
### Major
- [file:line] <issue> — <fix>
### Minor / polish
- [file:line] <issue> — <fix>
### Out of scope / deferred
- <item> — <reason>
### Verification
- <tool/command/manual step>
EnterPlanMode first.<button> beats <div role="button">. First rule of ARIA: don't use ARIA.outline without a replacement — Every focus-removal needs a custom :focus-visible style.alt="" (empty, not missing).development
--- name: make-anonymous-branch description: Use when preparing a research repo for double-blind submission via anonymous.4open.science (ICML/NeurIPS/ICLR/workshop). Builds a single `anon-submission` branch with code+data+paper, scrubs identity leaks (author names, home paths, emails, wandb metadata, PDF author fields), patches LaTeX for pdf.js compatibility, and leaves `main` untouched. Triggers: "make an anonymous branch", "anonymize my repo for X submission", "set up anonymous.4open.science",
development
Translate math (formulas, estimators, algorithms) into code so the implementation faithfully matches what the source actually specifies. Use when writing code from a formula, reviewing an LLM-generated implementation of a formula, debugging a numerical mismatch with a paper, designing a new metric/estimator, or refactoring an existing math-heavy computation. Especially load-bearing whenever aggregation operators (sums, means, expectations, products, geometric means) appear over indices that can be reordered, or whenever the same English label can refer to multiple non-equivalent estimators (e.g. ratio-of-means vs mean-of-ratios, micro-average vs macro-average, sample-weighted vs unweighted). Prevents the failure mode where a code path silently implements the wrong estimator under the same name as the intended one.
development
Use when the user asks to review, find, summarize, or check Claude Code chat transcripts from a past date or time range ("review my chats from May 1st", "what was I working on yesterday", "any unfinished sessions this week"). Reads transcripts under `~/.claude/projects/`, handles local-time vs UTC correctly so late-evening sessions don't get dropped, and flags chats whose last assistant turn looks like an unanswered question.
documentation
Consolidate scattered research notes, logs, experiment outputs, and submodule docs into a single living research paper. Use when the user wants to pull together multiple source documents into one structured paper.