sky-a11y
Skill8 starsChanged 7 days agoMITView on GitHub
Web erişilebilirliği (WCAG 2.2 AA): semantik HTML, klavye ile kullanım, odak yönetimi, ARIA kalıpları (dialog, menu, tabs, combobox), form etiketleri, kontrast, ekran okuyucu duyuruları, hareket tercihleri ve otomatik test (axe, Playwright). Bileşen yazarken, erişilebilirlik denetimi yaparken veya "a11y", "erişilebilir", "klavye" dendiğinde kullan.
In this repository213 other files it gives its agents.
- sky-3dSkill
- sky-a11y-auditorSkill
- sky-ai-agentsSkill
- sky-ai-evalSkill
- sky-aiSkill
- sky-ai-uxSkill
- sky-algorithmsSkill
- sky-androidSkill
- sky-angularSkill
- sky-ansibleSkill
- sky-api-reviewerSkill
- sky-architectSkill
- sky-architecture-docsSkill
- sky-architecture-patternsSkill
- sky-astroSkill
- sky-audit-historySkill
- sky-authSkill
- sky-auth-uxSkill
- sky-awsSkill
- sky-azureSkill
- sky-baasSkill
- sky-backend-apiSkill
- sky-botsSkill
- sky-brandSkill
- sky-browser-apisSkill
- sky-browser-extensionSkill
- sky-browser-qaSkill
- sky-builderSkill
- sky-build-fixerSkill
- sky-cachingSkill
- sky-canvasSkill
- sky-changelogSkill
- sky-chat-productSkill
- sky-checkout-uxSkill
- sky-claude-codeSkill
- sky-claude-mdSkill
- sky-cli-toolsSkill
- sky-cloudflareSkill
- sky-cmsSkill
- sky-codebase-mapperSkill
- sky-code-reviewerSkill
- sky-code-reviewSkill
- sky-code-styleSkill
- sky-colorSkill
- sky-cppSkill
- sky-criticSkill
- sky-cryptoSkill
- sky-css-modernSkill
- sky-dashboardSkill
- sky-data-analysisSkill
- sky-data-pipelinesSkill
- sky-dataSkill
- sky-datavizSkill
- sky-date-timeSkill
- sky-db-reviewerSkill
- sky-debuggerSkill
- sky-debugSkill
- sky-deploySkill
- sky-designerSkill
- sky-design-systemSkill
- The first 60 shown.
The file
Files
Sky · Erişilebilirlik
Altın kural
Önce doğru HTML öğesi: <button> tıklanır, <a href> gezinir, <label> alanı adlandırır,
<nav> <main> <header> <footer> bölgeleri belirler. ARIA yalnızca HTML yetmediğinde.
"ARIA yoksa, kötü ARIA'dan iyidir."
Kontrol listesi (WCAG 2.2 AA)
Yapı
- Sayfada tek
<h1>, başlık seviyeleri atlanmıyor <html lang="tr">(veya içerik dili)- Landmark'lar:
header,nav,main,footer; "İçeriğe atla" bağlantısı - Anlamlı
<title>her sayfada
Klavye
- Tüm etkileşimler Tab/Shift+Tab, Enter, Space, Esc, ok tuşlarıyla yapılabiliyor
- Odak sırası görsel sırayla uyumlu;
tabindex> 0 yok - Odak her zaman görünür (2.4.7) ve yapışkan header altında gizlenmiyor (2.4.11)
- Klavye tuzağı yok (modal hariç, o da Esc ile çıkılıyor)
Görsel
- Metin kontrastı ≥ 4.5:1, büyük metin ≥ 3:1, UI bileşenleri/odak halkası ≥ 3:1
- Bilgi yalnızca renkle iletilmiyor
- %200 yakınlaştırmada ve 320px genişlikte içerik kaybı yok
- Dokunma hedefleri ≥ 24×24px (2.5.8), tercihen 44×44
İçerik
- Anlamlı görsellerde
alt, dekoratif görsellerdealt="" - Yalnızca ikon olan butonlarda
aria-label - Bağlantı metni bağlamdan bağımsız anlamlı ("Devamını oku" değil "Fiyatlandırma hakkında devamını oku")
- Video için altyazı
Formlar
- Her alanın görünür
<label>ı var (placeholder etiket değildir) - Hata mesajı alanla
aria-describedbyile bağlı,aria-invalid="true" - Gönderimde hata varsa odak ilk hatalı alana veya hata özetine gider
autocompleteöznitelikleri (email,name,current-password,one-time-code)- Sürükle-bırak gerektiren işlemin alternatifi var (2.5.7)
Dinamik içerik
- Toast/durum mesajları
role="status"(kibar) veyarole="alert"(acil) - Yükleniyor durumu
aria-busyveya canlı bölgeyle duyuruluyor - Route değişiminde odak yeni sayfanın başlığına taşınıyor (SPA)
ARIA kalıpları (hazır kütüphane tercih et: Radix, React Aria, Headless UI)
| Bileşen | Gereken |
| Dialog | role="dialog" + aria-modal="true" + aria-labelledby; odak içeri, Esc kapatır, kapanınca odak tetikleyiciye döner; arka plan inert |
| Menü butonu | aria-haspopup="menu", aria-expanded; ok tuşlarıyla gezinme |
| Sekmeler | role="tablist/tab/tabpanel", aria-selected, ok tuşları, roving tabindex |
| Akordiyon | <button aria-expanded aria-controls>; veya native <details><summary> |
| Combobox | role="combobox", aria-expanded, aria-activedescendant, listbox |
| Toggle | <button aria-pressed> veya role="switch" aria-checked |
| Tooltip | Yalnızca ek bilgi; odakta da açılır; Esc ile kapanır |
Hareket
prefers-reduced-motion desteği zorunlu (bkz. sky-motion).
Test
- Otomatik:
@axe-core/playwrightile E2E'de,vitest-axe/jest-axeile bileşen testinde. Otomatik araçlar sorunların yalnızca bir kısmını yakalar; gerisi manuel. - Manuel: fareyi bırak, sayfayı yalnızca klavyeyle kullan. macOS VoiceOver (Cmd+F5) ile ana akışı dene.
- Lighthouse erişilebilirlik puanı ≥ 95 hedef (puan tek başına yeterlilik değildir).
import AxeBuilder from "@axe-core/playwright";
test("ana sayfa a11y", async ({ page }) => {
await page.goto("/");
const r = await new AxeBuilder({ page }).withTags(["wcag2a", "wcag2aa", "wcag22aa"]).analyze();
expect(r.violations).toEqual([]);
});Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

