重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
npx skills add https://github.com/autumnsgrove/groveengine --skill deer-sense鹿在森林中穿行,带着高度警觉。它能听到他人忽略的声音——脚下树枝的断裂声,鸟类的警示鸣叫。它能注意到阻挡道路的障碍。鹿引导鹿群绕过危险,确保每个成员都能安全通行。在数字森林中,鹿能感知到阻碍某些漫游者找到路径的屏障。
/deer-sense或提及鹿/无障碍性配对使用: chameleon-adapt 用于无障碍UI实现
LISTEN --> SCAN --> TEST --> GUIDE --> PROTECT
| | | | |
聆听 扫描 测试 引导 防护
需求 障碍 路径 问题 回归
鹿的耳朵微微抽动,在危险来临前听到他人忽略的声音...
理解我们为谁构建以及他们面临哪些障碍。将残疾类型映射到辅助技术。为此项目建立WCAG级别目标。
加载以获取完整的残疾/辅助技术表和WCAG级别指南,以及以获取Grove特定障碍模式
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
references/automated-scanning.mdreferences/grove-a11y-patterns.md鹿的眼睛扫视森林地面,在迈步前发现阻挡道路的障碍...
运行自动化扫描以快速发现机械性违规。自动化工具大约能捕获30%的实际问题——在手动测试开始前使用它们来清除明显问题。
npx axe https://localhost:5173 --tags wcag2aadiv)使用Glimpse进行视觉扫描:
捕获页面以查看实际渲染结果。控制台日志通常能揭示隐藏的a11y问题:
# 前提条件:如果尚未完成,则播种数据库
uv run --project tools/glimpse glimpse seed --yes
# 捕获控制台日志——错误通常揭示缺失的ARIA、损坏的引用
# 本地路由使用?subdomain=进行租户隔离;--auto启动开发服务器
uv run --project tools/glimpse glimpse capture \
"http://localhost:5173/[page]?subdomain=midnight-bloom" \
--season autumn --theme dark --logs --auto
# 检查深色模式对比度——并排捕获两种主题
uv run --project tools/glimpse glimpse matrix \
"http://localhost:5173/[page]?subdomain=midnight-bloom" \
--themes light,dark --logs --auto
# 交互式浏览——Tab键顺序在视觉上合理吗?
uv run --project tools/glimpse glimpse browse \
"http://localhost:5173/[page]?subdomain=midnight-bloom" \
--do "click first interactive element, press Tab, press Tab, press Tab" \
--screenshot-each --auto
审查截图:焦点指示器可见吗?玻璃表面是否保持对比度?触摸目标在视觉上是否足够大?
参考: 加载references/automated-scanning.md以获取axe-core命令、Lighthouse CI设置、ESLint插件配置、CI集成YAML和完整问题清单
鹿亲自测试每条路径,因为了解地图与亲自行走小径是不同的...
手动测试能捕获自动化遗漏的问题。测试键盘导航、屏幕阅读器输出、减少运动和缩放。完成与此界面相关的测试场景。
prefers-reduced-motion条件触发参考: 加载references/keyboard-testing.md以获取键盘检查清单、焦点陷阱模式、模态测试、触摸目标要求和条件字段测试场景。加载references/screen-reader-testing.md以获取屏幕阅读器工具、ARIA模式、语义HTML修复和ARIA检查清单。
鹿引导鹿群绕过倒下的树木,通过轻轻转头展示清晰的道路...
通过适当的实现修复无障碍性问题。在可能的情况下,优先使用语义HTML而非ARIA。每个修复都应使界面对每个人都更清晰。
article、button、nav、main)openModal()聚焦第一个元素,closeModal()将焦点返回到触发器for/id配对、错误信息的aria-describedby、错误消息上的role="alert"参考: 加载references/screen-reader-testing.md以获取ARIA标签模式、语义HTML修复和表单可访问性代码。加载references/grove-a11y-patterns.md以获取触摸目标模式、玻璃卡片焦点样式、GroveTerm要求和减少运动存储使用。
鹿保持警戒,确保在这次审计完成后很久,道路依然畅通...
防止未来的无障碍性回归。将自动化检查添加到CI中并维护文档,使森林对每个漫游者都保持可通行。
参考: 加载references/automated-scanning.md以获取CI YAML、ESLint插件设置、vitest中的axe-core和文档模板。加载references/screen-reader-testing.md以获取最终审计报告模板。
| 阶段 | 参考 | 加载时机 |
|---|---|---|
| 聆听 | references/automated-scanning.md | 始终(残疾类型、WCAG级别) |
| 聆听(Grove) | references/grove-a11y-patterns.md | 任何Grove组件审计 |
| 扫描 | references/automated-scanning.md | 始终(axe-core、Lighthouse、检查清单) |
| 测试(键盘) | references/keyboard-testing.md | 手动键盘和缩放测试 |
| 测试(屏幕阅读器) | references/screen-reader-testing.md | 屏幕阅读器测试场景 |
| 引导 | references/screen-reader-testing.md + references/grove-a11y-patterns.md | 修复问题 |
| 防护 | references/automated-scanning.md + references/screen-reader-testing.md | CI设置、最终报告 |
注意他人忽略之处。无障碍性障碍隐藏在细节中——技术上存在但在玻璃表面上不可见的焦点环,42px而非44px的触摸目标。
为每个人设计。森林属于所有漫游者。无障碍性使每个人受益:键盘快捷键帮助高级用户,字幕帮助嘈杂环境中的人,清晰的错误信息帮助每个人。
无障碍性是持续性的,而非一次性。每个新组件都是从开始就做对的机会,每个没有a11y检查的PR都是让障碍重新进入的机会。
使用感官隐喻:
鹿不会:
用户: "审计新仪表板的无障碍性"
鹿流程:
聆听 — "仪表板包含复杂数据、图表、表格。用户:屏幕阅读器、键盘、运动障碍。WCAG AA目标。需要自定义焦点的Grove玻璃卡片。"
扫描 — "axe-core:5处违规。图表缺失alt、指标对比度低、表格无表头。Svelte警告:2处带onclick的div。"
测试 — "键盘:无法到达筛选下拉菜单(日期选择器中的陷阱)。屏幕阅读器:表格不可导航(无scope)。缩放:侧边栏在200%时与主要内容重叠。"
引导 — "为图表添加aria标签,使用Grove令牌将指标对比度提高到4.5:1,添加带有<th scope>的适当表格标记,使侧边栏响应式,用键盘可访问版本替换日期选择器。"
防护 — "将axe-core添加到CI,启用eslint-plugin-svelte-a11y,编写审计报告,在组件文档中添加无障碍性部分。"
| 情况 | 操作 |
|---|---|
| 新组件 | 优先使用语义HTML,在发布前测试键盘/屏幕阅读器 |
| 颜色选择 | 检查对比度比率(最低4.5:1——使用Grove调色板令牌) |
| 交互元素 | 键盘可访问,需要可见的focus-visible样式 |
| 图像 | 描述性替代文本(如果纯装饰性则使用alt="") |
| 表单 | 关联标签,使用aria-describedby关联错误信息,必要指示器 |
| 动画 | 基于$reducedMotion存储条件触发——无例外 |
| GroveTerm/GroveText | 加载references/grove-a11y-patterns.md以获取必需的ARIA属性 |
| 触摸目标 | 最小44px——如果视觉尺寸必须保持较小,则使用内边距 |
感知之前:
chameleon-adapt — 如果构建新UI,从一开始就考虑无障碍性设计感知之后:
chameleon-adapt — 用于修复的无障碍UI实现beaver-build — 修复问题后添加无障碍性回归测试owl-archive — 记录项目的无障碍性标准森林欢迎所有寻求它的人。移除障碍。
每周安装数
49
仓库
GitHub星标数
2
首次出现
2026年2月5日
安全审计
安装于
codex49
gemini-cli49
opencode49
cline48
github-copilot48
kimi-cli48
The deer moves through the forest with heightened awareness. It hears what others miss—a twig snapping underfoot, a bird's warning call. It notices what blocks the path. The deer guides the herd around danger, ensuring everyone can travel safely. In the digital forest, the deer senses barriers that stop some wanderers from finding their way.
/deer-sense or mentions deer/accessibilityPair with: chameleon-adapt for accessible UI implementation
LISTEN --> SCAN --> TEST --> GUIDE --> PROTECT
| | | | |
Hear Look for Validate Fix Prevent
Needs Barriers Paths Issues Regression
The deer's ears twitch, hearing what others miss before the danger arrives...
Understand who we're building for and what barriers they face. Map disability types to assistive technologies. Establish WCAG level targets for this project.
Reference: Load references/automated-scanning.md for the full disability/assistive technology table and WCAG level guide, and references/grove-a11y-patterns.md for Grove-specific barrier patterns
The deer's eyes scan the forest floor, spotting what blocks the path before setting a hoof forward...
Run automated scanning to surface mechanical violations quickly. Automated tools catch approximately 30% of real issues — use them to clear obvious problems before manual testing begins.
npx axe https://localhost:5173 --tags wcag2aadiv with click)Visual scan with Glimpse:
Capture the page to see what the rendered result actually looks like. Console logs often reveal hidden a11y issues:
# Prerequisite: seed the database if not already done
uv run --project tools/glimpse glimpse seed --yes
# Capture with console logs — errors often reveal missing ARIA, broken refs
# Local routing uses ?subdomain= for tenant isolation; --auto starts the dev server
uv run --project tools/glimpse glimpse capture \
"http://localhost:5173/[page]?subdomain=midnight-bloom" \
--season autumn --theme dark --logs --auto
# Check dark mode contrast — capture both themes side by side
uv run --project tools/glimpse glimpse matrix \
"http://localhost:5173/[page]?subdomain=midnight-bloom" \
--themes light,dark --logs --auto
# Browse interactively — does tab order make visual sense?
uv run --project tools/glimpse glimpse browse \
"http://localhost:5173/[page]?subdomain=midnight-bloom" \
--do "click first interactive element, press Tab, press Tab, press Tab" \
--screenshot-each --auto
Review the screenshots: Are focus indicators visible? Do glass surfaces maintain contrast? Are touch targets visually large enough?
Reference: Load references/automated-scanning.md for axe-core commands, Lighthouse CI setup, ESLint plugin config, CI integration YAML, and the full issues checklist
The deer tests each path personally, because knowing the map is not the same as walking the trail...
Manual testing catches what automation misses. Test keyboard navigation, screen reader output, reduced motion, and zoom. Work through the test scenarios relevant to this interface.
prefers-reduced-motionReference: Load references/keyboard-testing.md for the keyboard checklist, focus trap patterns, modal testing, touch target requirements, and conditional field test scenarios. Load references/screen-reader-testing.md for screen reader tools, ARIA patterns, semantic HTML fixes, and the ARIA checklist.
The deer guides the herd around the fallen tree, showing the clear path with a gentle turn of its head...
Fix accessibility issues with proper implementations. Prefer semantic HTML over ARIA when possible. Every fix should leave the interface clearer for everyone.
article, button, nav, main)openModal() focuses first element, closeModal() returns focus to triggerfor/id pairs, aria-describedby for errors, role="alert" on error messagesReference: Load references/screen-reader-testing.md for ARIA label patterns, semantic HTML fixes, and form accessibility code. Load references/grove-a11y-patterns.md for touch target patterns, glass card focus styles, GroveTerm requirements, and reduced motion store usage.
The deer stands watch, ensuring the path stays clear long after this audit is done...
Prevent future accessibility regressions. Add automated checks to CI and maintain documentation so the forest stays walkable for every wanderer.
Reference: Load references/automated-scanning.md for the CI YAML, ESLint plugin setup, axe-core in vitest, and the documentation template. Load references/screen-reader-testing.md for the final audit report template.
| Phase | Reference | Load When |
|---|---|---|
| LISTEN | references/automated-scanning.md | Always (disability types, WCAG levels) |
| LISTEN (Grove) | references/grove-a11y-patterns.md | Any Grove component audit |
| SCAN | references/automated-scanning.md | Always (axe-core, Lighthouse, checklist) |
| TEST (keyboard) | references/keyboard-testing.md | Manual keyboard and zoom testing |
| TEST (screen reader) | references/screen-reader-testing.md |
Notice what others miss. Accessibility barriers hide in details — the focus ring that's technically present but invisible over a glass surface, the touch target that's 42px instead of 44.
Design for everyone. The forest is for all wanderers. Accessibility benefits everyone: keyboard shortcuts help power users, captions help people in noisy environments, clear error messages help everyone.
Accessibility is ongoing, not one-time. Every new component is an opportunity to get it right from the start, and every PR without a11y checks is a chance to let a barrier back in.
Use sensory metaphors:
The deer does NOT:
User: "Audit the new dashboard for accessibility"
Deer flow:
LISTEN — "Dashboard has complex data, charts, tables. Users: screen reader, keyboard, motor. WCAG AA target. Grove glass cards with custom focus needed."
SCAN — "axe-core: 5 violations. Missing alt on charts, low contrast on metrics, no table headers. Svelte warns: 2 div with onclick."
TEST — "Keyboard: Can't reach filter dropdowns (trap in date picker). Screen reader: Tables not navigable (no scope). Zoom: Sidebar overlaps main content at 200%."
GUIDE — "Add aria-labels to charts, increase metric contrast to 4.5:1 using Grove tokens, add proper table markup with <th scope>, make sidebar responsive, replace date picker with keyboard-accessible version."
PROTECT — "axe-core added to CI, eslint-plugin-svelte-a11y enabled, audit report written, accessibility section added to component docs."
| Situation | Action |
|---|---|
| New component | Semantic HTML first, test keyboard/screen reader before shipping |
| Color choice | Check contrast ratio (4.5:1 minimum — use Grove palette tokens) |
| Interactive element | Keyboard accessible, visible focus-visible style required |
| Image | Descriptive alt text (or alt="" if purely decorative) |
| Form | Associate labels, error messages with aria-describedby, required indicators |
| Animation | Conditional on $reducedMotion store — no exceptions |
| GroveTerm/GroveText | Load references/grove-a11y-patterns.md for required ARIA attributes |
Before Sensing:
chameleon-adapt — If building new UI, design with accessibility in mind from the startAfter Sensing:
chameleon-adapt — For accessible UI implementation of fixesbeaver-build — Add accessibility regression tests after fixing issuesowl-archive — Document accessibility standards for the projectThe forest welcomes all who seek it. Remove the barriers.
Weekly Installs
49
Repository
GitHub Stars
2
First Seen
Feb 5, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex49
gemini-cli49
opencode49
cline48
github-copilot48
kimi-cli48
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
123,700 周安装
| Screen reader testing scenarios |
| GUIDE | references/screen-reader-testing.md + references/grove-a11y-patterns.md | Fixing issues |
| PROTECT | references/automated-scanning.md + references/screen-reader-testing.md | CI setup, final report |
| Touch target | 44px minimum — use padding if visual size must stay smaller |