Noibuのアクセス情報と自動スキャンを使用して、ウェブサイトのWCAG 2.1 AA(国際的なアクセシビリティ基準)への違反をチェックし、必要に応じて修正案も作成できます。 **次のような場合に使用:** - サイト全体のアクセシビリティの問題を把握したい - WCAG または ADA(米国障害者法)への適合状況を確認したい - 色のコントラストや見出しの構造に誤りがないか探したい - スクリーンリーダー(音声読み上げソフト)への対応状況を調べたい - アクセシビリティレポートを生成したい - アクセシビリティの問題をプルリクエストやチケットとして修正に繋げたい
Audit a website for WCAG 2.1 AA accessibility violations using automated scanning and Noibu traffic data, and optionally draft the fixes. Use when you want to know what's inaccessible across the store, check WCAG or ADA compliance, find contrast or heading errors, audit for screen reader support, generate an accessibility report, or fix accessibility violations with pull requests or tickets.
Requires Cowork, linked to a computer with the Claude desktop app open — see Setup below before anything else. This does not work in plain Claude chat, desktop app included.
The scan needs mcp__remote-devices__Claude_Browser__*, which exists only in a Cowork session linked to a computer running the Claude desktop app — being in the desktop app isn't enough by itself. If those tools are genuinely absent (not just offline): tell the operator plainly this needs Cowork linked to a computer with the desktop app open, and stop. Never offer a reduced fallback (e.g. manual web-fetch review) — it's a materially weaker audit than this skill promises.
Nothing else is required to run a plain audit — it never touches a repo or ticket platform on its own.
mcp__remote-devices__Claude_Browser__*), for both on-demand and scheduled runs. Once confirmed present (see above), it still needs the linked desktop app to be open and online, not just installed, at the moment it's used. Not available at firing time (scheduled) → report the failure plainly rather than scanning some other way; this means the desktop app wasn't open then, not that anything is broken. Don't substitute Claude in Chrome or the linked-device bridge here — they share the same underlying constraint, not a way around it.noibu_get_domain. Neither → noibu_list_domains; use it if there's exactly one, else ask. Never block on this.GitHub or a ticket platform are only needed if the operator opts into automated PRs/tickets — resolved at that point (Step 4), not up front.
There's no config file — connector status is checked at runtime.
https://www.w3.org/WAI/WCAG21/Understanding/<slug>.html, confirmed via axe-core's helpUrl.impact (critical/serious/moderate/minor). "Priority" = the traffic-weighted ranking score (references/wcag-violations.md) — determines row order, never shown as a column.auto_pr, card label "Auto-draft PR," button copy "Automatically draft a pull request (PR)." Never "Auto-fix."references/wcag-violations.md → Pooling).<a href>, never styled text. External URLs: <a href="...">text</a>. Same-document (e.g. Key Findings row → detail section): <a name="finding-N"/> + <a href="#finding-N">.SendUserFile/show_widget call. A subagent's own tool calls (including SendUserFile) don't reliably surface to the operator, and its prose summary drifts from Step 3's required chat structure.axe.run(). See references/wcag-violations.md → Scan mechanics. No screenshots — selector + HTML snippet is enough to locate a finding.This step alone may run in a subagent (see Rules) if that helps keep the session's context light — it must hand back the pooled, ranked findings as data, and nothing more. Steps 2 onward always run directly in this session.
Read the pdf skill, then build the report from the pooled, ranked findings.
[Domain] Accessibility Audit [MM] [DD] [YYYY] (e.g. Carsncards.com Accessibility Audit 09 09 2026).Table cell with a large bold number over a small label. Colors: critical #A32D2D/#FCEBEB, serious #854F0B/#FAEEDA, moderate #8A6D0B/#FEF6DA, minor neutral gray. Zero counts still get a card.
Paragraphs; give the number real leading (~32–34 for a 28pt font) and non-zero spaceAfter so they don't overlap.nodes (monospace block); Suggested fix (+ ticket link if one exists); Scanned pages affected (comma-separated, each hyperlinked) as the final line.
Paragraph/Table with real spacing, never packed tight against its neighbor. This applies to every adjacent pair, not just the two called out below: the severity/pages-affected header line, the WCAG line, the description, the Selector label, the Selector block, the Example HTML label, the Example HTML block, the Suggested fix line, the Automated ticket link line (when present), and the Scanned pages affected line. Give each a non-zero spaceAfter (or the next element a spaceBefore) sized to its font — a label sitting directly above a monospace block, or a "Suggested fix" line sitting directly above an "Automated ticket" link, are the two places this has visibly broken before, but the rule is general: nothing in this section should render with less than ~4–6pt of breathing room from what's above or below it.No appendix, no per-page violation matrix.
Before delivering the PDF, verify a link resolves in each of: a Pages Scanned row, a Key Findings row, a WCAG criterion, a finding's Scanned pages affected line. Also visually check every finding's full detail section — not a sample — for overlap between any two adjacent elements (metric cards included). Fix any defect before Step 3 — don't ship and caveat.
One turn, exactly these two pieces in order, nothing else. The PDF's file card always renders last regardless of call order, so call it last — and once it's called, the turn is over: no closing sentence, no recap, no "let me know if..." after it.
We found 271 violation instances across the pages. Many repeat the same issue on multiple pages — once pooled, that's 27 unique fixes:
- 24 serious
- 2 moderate
- 1 minor
- 0 critical
Step 4's fix-automation offer comes after, as its own turn — don't fold it into this one.
Render references/automation-nudge-widget.md as a show_widget. Required — confirm it actually rendered before treating this step as done. It offers Auto-draft PR and Auto-create tickets for the findings just generated — no Skip button, ignoring it is the decline.
If a button is clicked, apply the fix-selection rule now, against the report just generated:
Fix-selection rule: for the top 10 fixable pooled findings (by Priority), draft a PR (
references/platforms/<platform>.md) or open a ticket, whichever was chosen. Not traceable to a file → ticket only, labelledneeds-investigation, doesn't consume a slot. Never touch checkout code or merchant-managed settings. Never merge anything.
Resolve what's needed for the chosen path if not already known this session (no persisted config — status is always checked at runtime, this session only):
suggest_connectors with uuids: ["fe983ccb-92c7-4df1-85af-b1c3340b89bb"], tell the operator to connect it, and wait for confirmation before doing anything else. Once active, ask once: "Which GitHub repo holds the theme? (owner/name)".suggest_connectors for it if it isn't, before writing anything.Run the fix-selection rule. Every ticket and PR description uses the same fields as the PDF's finding detail section (Step 2): severity/pages affected/pageviews affected header line, WCAG line (linked), plain-English description, selector + HTML snippet, suggested fix (or the needs-investigation note), and a Scanned pages affected line listing every page the pooled finding appears on — each one an actual hyperlink to its live URL, same as the Rules section's link requirement, never bare page names like "Homepage."
Reply with one line per finding that got something created — the finding name, then an arrow, then the ticket/PR reference hyperlinked to that ticket or PR's real URL (the platform tool's create call returns it; if a platform ever doesn't return a URL, use the platform's standard item-URL pattern rather than posting a bare ID like NOI-12454 or #172 with no link). Don't reuse the wording of any example below verbatim — it's illustrating the shape, not text to copy. More than 10 fixable findings → append "N more findings weren't addressed this run — they'll be picked up on the next scan." The PDF isn't regenerated.
Then ask in plain chat: "Want this to run automatically on a schedule going forward?" If yes, go to Step 5.
If the widget is ignored, nothing happens — no follow-up question, no scheduling offer. The operator can still ask for either, any time.
If show_widget isn't available: ask in plain chat whether to auto-draft PRs, auto-create tickets, or skip — same behavior once answered.
Only reached from Step 4's "run this automatically" question, or an explicit later request. Scheduling always includes fix automation — there's no report-only schedule. Step 5 can't be entered without a fix automation choice in hand:
references/schedule-widget.md as a show_widget. It only configures cadence and an optional digest (email/Slack/Notion) — it does not re-offer Auto-draft PR / Auto-create tickets; that choice is inherited automatically from whatever ran in Step 4 this session, or from the forced-choice question above.create_trigger and requires_local_device: true (never in-process cron; omit folders — the built-in browser needs no local files, just the device binding). Confirm in one or two sentences — no widget — and note that the Claude desktop app needs to be open and online at each scheduled time: if it's ever closed when the schedule fires, the whole recurring task pauses silently rather than just skipping that run, so it's worth checking the task's status occasionally. Offer to run it once now via fire_trigger so any misconfiguration surfaces immediately; only fire if the operator says yes.If show_widget isn't available: ask for frequency/day/time as plain chat questions.
Each firing is a fresh session; the trigger prompt is fully self-contained.
SendUserFile, same as Step 3 on-demand — "stays in this session" means never attached to an external destination (email/Slack/Notion), not that it goes undelivered. The operator opens this scheduled task's history to see it, so the file card needs to actually be there. If a digest was configured, also send the exec-summary-plus-links digest (see references/schedule-widget.md → Scheduled task prompt) to each configured channel; otherwise nothing further happens.No compliance-log document, no CI/GitHub Actions path — scheduling goes through create_trigger only.
See references/schedule-widget.md — triggered by Step 4's "run this automatically" question, or an explicit request. Configures frequency/day/time and an optional digest (email/Slack/Notion) for future runs; Auto-draft PR / Auto-create tickets aren't reconfigured here — they're inherited from Step 4. Never touches the report already delivered.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。