Skills Plugins MCP Prompt Model 博客 我的中心

accessibility

Audit and improve web accessibility following WCAG 2.2 guidelines. Use when asked to "improve accessibility", "a11y audit", "WCAG compliance", "screen reader support", "keyboard navigation", or "make accessible".

DeepseekModel Curated skill Quality Excellent · 90 v1.0.0

Get

https://deepseekmodel.com/api/download.php?id=addyosmani-web-quality-skills-skills-accessibility-skill-md&format=skill
Download .skill Standard format with system_prompt and model_config, ready for any agent framework
The actual content of the system_prompt field in the .skill file.
name accessibility description Audit and improve web accessibility following WCAG 2.2 guidelines. Use when asked to "improve accessibility", "a11y audit", "WCAG compliance", "screen reader support", "keyboard navigation", or "make accessible". license MIT metadata {"author":"web-quality-skills","version":"2.0"} Accessibility (a11y) Comprehensive accessibility guidelines based on WCAG 2.2 and Lighthouse accessibility audits. Goal: make content usable by everyone, including people with disabilities. Evidence-led audit workflow When a rendered page is available: Run a live Lighthouse Accessibility audit when that capability is available; with Chrome DevTools MCP, use lighthouse_audit . Use mobile navigation mode for a general public page or snapshot mode when reloading would lose authenticated or user-created state. Use failed audit nodes to localize the relevant component or template instead of searching the whole repository for generic patterns. Inspect a rendered accessibility-tree snapshot for names, roles, states, landmarks, and heading structure; with Chrome DevTools MCP, use take_snapshot . Exercise the affected flow with the keyboard. Fix the source, then re-run the same audit and manual interaction. If the live tools are unavailable, use Lighthouse CLI or axe for automated coverage and complete the same manual checks. Automated tools detect only a subset of accessibility barriers: a score of 100 is not WCAG conformance, and a low score does not replace issue-level evidence. WCAG Principles: POUR Principle Description P erceivable Content can be perceived through different senses O perable Interface can be operated by all users U nderstandable Content and interface are understandable R obust Content works with assistive technologies Conformance levels Level Requirement Target A Minimum accessibility Must pass AA Standard compliance Should pass (legal requirement in many jurisdictions) AAA Enhanced accessibility Nice to have Perceivable Text alternatives (1.1) Images require alt text: <!-- ❌ Missing alt --> < img src = "chart.png" > <!-- ✅ Descriptive alt --> < img src = "chart.png" alt = "Bar chart showing 40% increase in Q3 sales" > <!-- ✅ Decorative image (empty alt) --> < img src = "decorative-border.png" alt = "" role = "presentation" > <!-- ✅ Complex image with longer description --> < figure > < img src = "infographic.png" alt = "2024 market trends infographic" aria-describedby = "infographic-desc" > < figcaption id = "infographic-desc" > <!-- Detailed description --> </ figcaption > </ figure > Icon buttons need accessible names: <!-- ❌ No accessible name --> < button > < svg > <!-- menu icon --> </ svg > </ button > <!-- ✅ Using aria-label --> < button aria-label = "Open menu" > < svg aria-hidden = "true" > <!-- menu icon --> </ svg > </ button > <!-- ✅ Using visually hidden text --> < button > < svg aria-hidden = "true" > <!-- menu icon --> </ svg > < span class = "visually-hidden" > Open menu </ span > </ button > Visually hidden class: .visually-hidden { position : absolute; width : 1px ; height : 1px ; padding : 0 ; margin : - 1px ; overflow : hidden; clip : rect ( 0 , 0 , 0 , 0 ); white-space : nowrap; border : 0 ; } Color contrast (1.4.3, 1.4.6) Text Size AA minimum AAA enhanced Normal text (< 18px / < 14px bold) 4.5:1 7:1 Large text (≥ 18px / ≥ 14px bold) 3:1 4.5:1 UI components & graphics 3:1 3:1 /* ❌ Low contrast (2.5:1) */ .low-contrast { color : #999 ; background : #fff ; } /* ✅ Sufficient contrast (7:1) */ .high-contrast { color : #333 ; background : #fff ; } /* ✅ Focus states need contrast too (3:1 against background, WCAG 1.4.11) */ :focus-visible { outline : 2px solid currentColor; outline-offset : 2px ; } Don't rely on color alone: <!-- ❌ Only color indicates error --> < input class = "error-border" > < style > .error-border { border-color : red; } </ style > <!-- ✅ Color + icon + text --> < div class = "field-error" > < input aria-invalid = "true" aria-describedby = "email-error" > < span id = "email-error" class = "error-message" > < svg aria-hidden = "true" > <!-- error icon --> </ svg > Please enter a valid email address </ span > </ div > Media alternatives (1.2) <!-- Video with captions --> < video controls > < source src = "video.mp4" type = "video/mp4" > < track kind = "captions" src = "captions.vtt" srclang = "en" label = "English" default > < track kind = "descriptions" src = "descriptions.vtt" srclang = "en" label = "Descriptions" > </ video > <!-- Audio with transcript --> < audio controls > < source src = "podcast.mp3" type = "audio/mp3" > </ audio > < details > < summary > Transcript </ summary > < p > Full transcript text... </ p > </ details > Operable Keyboard accessible (2.1) All functionality must be keyboard accessible. Prefer native interactive elements — <button> , <a href> , and form controls handle Enter/Space activation, focus, and assistive-tech semantics for free. Only add manual keyboard handling when you cannot use a native element. <!-- ❌ Non-interactive element with click only: not focusable, no keyboard activation --> < div class = "card" onclick = "handleAction()" > Open </ div > <!-- ✅ Best: use a native button --> < button type = "button" onclick = "handleAction()" > Open </ button > // ✅ When you MUST use a non-interactive element (e.g. div with role="button"), // make it focusable AND handle keyboard activation. Do NOT add this to a native // <button> — Enter/Space already fire click, so you'd double-trigger. element. setAttribute ( 'role' , 'button' ); element. setAttribute ( 'tabindex' , '0' ); element. addEventListener ( 'click' , handleAction); element. addEventListener ( 'keydown' , ( e ) => { if (e. key === 'Enter' || e. key === ' ' ) { e. preventDefault (); handleAction (); } }); No keyboard traps. Users must be able to Tab into and out of every component. Use the modal focus trap pattern for dialogs—the native <dialog> element handles this automatically. Focus visible (2.4.7) /* ❌ Never remove focus outlines */ * :focus { outline : none; } /* ✅ Use :focus-visible for keyboard-only focus */ :focus { outline : none; } :focus-visible { outline : 2px solid currentColor; /* inherits text color → already contrast-checked */ outline-offset : 2px ; } /* ✅ Or pick a brand color and verify ≥3:1 contrast against every background it lands on */ button :focus-visible { box-shadow : 0 0 0 3px rgba ( 0 , 95 , 204 , 0.5 ); } Focus not obscured (2.4.11) — new in 2.2 When an element receives keyboard focus, it must not be entirely hidden by other author-created content such as sticky headers, footers, or overlapping panels. At Level AAA (2.4.12), no part of the focused element may be hidden. /* ✅ Account for sticky headers when scrolling to focused elements */ :target { scroll-margin-top : 80px ; } /* ✅ Ensure focused items clear fixed/sticky bars */ :focus { scroll-margin-top : 80px ; scroll-margin-bottom : 60px ; } Skip links (2.4.1) Provide a skip link so keyboard users can bypass repetitive navigation. See the skip link pattern for full markup and styles. Target size (2.5.8) — new in 2.2 Interactive targets must be at least 24 × 24 CSS pixels (AA). Exceptions: inline text links, elements where the browser controls the size, and targets where a 24px circle centered on the bounding box does not overlap another target. /* ✅ Minimum target size */ button , [role= "button" ] , input [type= "checkbox" ] + label , input [type= "radio" ] + label { min-width : 24px ; min-height : 24px ; } /* ✅ Comfortable target size (recommended 44×44) */ .touch-target { min-width : 44px ; min-height : 44px ; display : inline-flex; align-items : center; justify-content : center; } Dragging movements (2.5.7) — new in 2.2 Any action that requires dragging must have a single-pointer alternative (e.g., buttons, inputs). See the dragging movements pattern for a sortable-list example. Timing (2.2) // Allow users to extend time limits function showSessionWarning ( ) { const modal = createModal ({ title : 'Session Expiring' , content : 'Your session will expire in 2 minutes.' , actions : [ { label : 'Extend session' , action : extendSession }, { label : 'Log out' , action : logout } ], timeout : 120000 }); } Motion (2.3) /* Respect reduced motion preference */ @media ( prefers-reduced-motion : reduce) { *, * ::before , * ::after { animation-duration : 0.01ms !important ; animation-iteration-count : 1 !important ; transition-duration : 0.01ms !important ; scroll-behavior : auto !important ; } } Understandable Page language (3.1.1) <!-- ❌ No language specified --> < html > <!-- ✅ Language specified --> < html lang = "en" > <!-- ✅ Language changes within page --> < p > The French word for hello is < span lang = "fr" > bonjour </ span > . </ p > Consistent navigation (3.2.3) <!-- Navigation should be consistent across pages --> < nav aria-label = "Main" > < ul > < li > < a href = "/" aria-current = "page" > Home </ a > </ li > < li > < a href = "/products" > Products </ a > </ li > < li > < a href = "/about" > About </ a > </ li > </ ul > </ nav > Consistent help (3.2.6) — new in 2.2 If a help mechanism (contact info, chat widget, FAQ link, self-help option) is repeated across multiple pages, it must appear in the same relative order each time. Users who rely on consistent placement shouldn't have to hunt for help on every page. Form labels (3.3.2) Every input needs a programmatically associated label. See the form labels pattern for explicit, implicit, and instructional examples. Error handling (3.3.1, 3.3.3) Announce errors to screen readers with role="alert" or aria-live , set aria-invalid="true" on invalid fields, and focus the first error on submit. See the error handling pattern for full markup and JS. Redundant entry (3.3.7) — new in 2.2 Don't force users to re-enter information they already provided in the same session. Auto-populate from earlier steps, or let users select from previously entered values. Exceptions: security re-confirmation and content that has expired. <!-- ✅ Auto-fill shipping address from billing --> < fieldset > < legend > Shipping address </ legend > < label > < input type = "checkbox" id = "same-as-billing" checked > Same as billing address </ label > <!-- Fields auto-populated when checked --> </ fieldset > Accessible authentication (3.3.8) — new in 2.2 Login flows must not rely on cognitive function tests (e.g., remembering a password, solving a puzzle) unless at least one of: A copy-paste or autofill mechanism is available An alternative method exists (e.g., passkey, SSO, email link) The test uses object recognition or personal content (AA only; AAA removes this exception)
Keywords that activate this skill. Click one to copy it.

This skill does not provide trigger words.

The downloaded .skill package contains the following fields.
Field Description
formatFormat tag (skill/v1)
skill_idUnique skill ID
nameSkill name
versionVersion
descriptionDescription
categoryCategories (array)
trigger_wordsTrigger words
tagsTags
sourceSource
source_urlSource URL (this page)
exported_atExported at (set per download)
system_promptSystem prompt body
model_configModel config: provider / model / temperature / max_tokens / top_p
examplesExamples
install_guideImport guide for Coze / Dify / Claude / custom frameworks
The same skill can be exported in different platform formats.
.skill Standard format with system_prompt and model_config, ready for any agent framework Download
.skillpro Enhanced format with scripts, tools, dependencies and hooks Download
.json Plain JSON export with system_prompt and model parameters only Download
Coze Markdown with frontmatter, for Coze platform import Download
Dify Dify DSL, import directly after creating an app Download

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。