
Bencium Impact Designer
Apply WCAG 2.1 AA accessibility essentials while designing or reviewing UI so keyboard, contrast, and ARIA do not become launch blockers.
Overview
bencium-impact-designer is an agent skill most often used in Ship (also Build, Grow) that applies WCAG 2.1 AA accessibility patterns for contrast, keyboard use, and ARIA in UI work.
Install
npx skills add https://github.com/bencium/bencium-marketplace --skill bencium-impact-designerWhat is this skill?
- WCAG 2.1 AA alignment framed around POUR principles
- Documented contrast minimums: 4.5:1 normal text, 3:1 large text and UI components
- Keyboard navigation and visible focus patterns with TSX examples
- Essential ARIA patterns for buttons, expandable menus, and live regions
- WCAG 2.1 AA compliance target
- 4.5:1 minimum contrast for normal text
- 3:1 minimum for large text (18pt+) and UI components
Adoption & trust: 1.2k installs on skills.sh; 273 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your UI looks fine visually but may fail contrast, keyboard access, or screen-reader expectations before customers hit it.
Who is it for?
Indie SaaS or marketing sites where you are both designer and developer and need a fast AA checklist.
Skip if: Formal VPAT or legal compliance projects that require certified auditors and full WCAG 2.2 AAA scope without human sign-off.
When should I use this skill?
When designing or reviewing UI for accessibility, keyboard navigation, contrast, or essential ARIA before or after implementation.
What do I get? / Deliverables
You leave review with actionable WCAG-oriented fixes—focus states, labels, live regions, and contrast checks—ready to merge.
- Contrast and keyboard compliance notes
- TSX-ready accessibility patches
- ARIA attribute recommendations
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Accessibility review is the gate before you ship customer-facing UI to real users and compliance scrutiny. Review is where contrast, keyboard paths, and ARIA are verified against WCAG before release.
Where it fits
Add focus rings and aria-labels while implementing a modal and icon-only buttons.
Tab through the full checkout flow and verify contrast on primary CTAs before release.
Remediate reported keyboard traps in the settings panel after user tickets.
How it compares
Use as a structured a11y checklist during agent-assisted UI work instead of guessing contrast and ARIA from memory.
Common Questions / FAQ
Who is bencium-impact-designer for?
Solo builders and small teams shipping web or React UI who want WCAG 2.1 AA essentials embedded in their agent workflow.
When should I use bencium-impact-designer?
While building frontend components, before ship when reviewing pages for launch, and during grow when fixing support issues tied to inaccessible controls.
Is bencium-impact-designer safe to install?
Check the Security Audits panel on this Prism page and review the marketplace package source before installing in your agent environment.
SKILL.md
READMESKILL.md - Bencium Impact Designer
# Accessibility Essentials Accessibility enables creativity - it's a foundation, not a limitation. WCAG 2.1 AA compliance. ## Core Principles (POUR) - **Perceivable**: Content must be perceivable (alt text, contrast, captions) - **Operable**: UI must be keyboard/touch accessible - **Understandable**: Clear, predictable behavior - **Robust**: Works with assistive technologies ## Contrast Requirements | Element | Minimum Ratio | |---------|---------------| | Normal text | 4.5:1 | | Large text (18pt+) | 3:1 | | UI components | 3:1 | **Tools**: Chrome DevTools Accessibility tab, WebAIM Contrast Checker ## Keyboard Navigation ```tsx // All interactive elements need focus states <button className="focus:ring-4 focus:ring-blue-500 focus:outline-none"> Accessible </button> // Custom elements need tabindex and key handlers <div role="button" tabIndex={0} onKeyDown={(e) => (e.key === 'Enter' || e.key === ' ') && handleClick()} > Custom Button </div> ``` **Essentials:** - Tab through entire interface - Enter/Space activates elements - Escape closes modals - Visible focus indicators always ## Essential ARIA ```tsx // Buttons without text <button aria-label="Close dialog"><X /></button> // Expandable elements <button aria-expanded={isOpen} aria-controls="menu">Menu</button> // Live regions for dynamic content <div role="status" aria-live="polite">{statusMessage}</div> <div role="alert" aria-live="assertive">{errorMessage}</div> // Form errors <input aria-invalid={hasError} aria-describedby="error-msg" /> {hasError && <p id="error-msg" role="alert">Error text</p>} ``` ## Semantic HTML ```tsx // Use semantic elements, not divs <header><nav>...</nav></header> <main><article><h1>...</h1></article></main> <footer>...</footer> // Heading hierarchy (never skip levels) <h1>Page Title</h1> <h2>Section</h2> <h3>Subsection</h3> ``` ## Touch Targets - Minimum **44x44px** for all interactive elements - Adequate spacing between targets - `touch-manipulation` CSS for responsive touch ## Screen Reader Content ```tsx // Hidden but announced <span className="sr-only">Additional context</span> // Skip link <a href="#main" className="sr-only focus:not-sr-only"> Skip to main content </a> ``` ## Quick Checklist - [ ] Keyboard: Can tab through everything - [ ] Focus: Visible focus indicators - [ ] Contrast: 4.5:1 for text - [ ] Alt text: All images have appropriate alt - [ ] Headings: Logical h1-h6 hierarchy - [ ] Forms: Labels associated with inputs - [ ] Errors: Announced to screen readers - [ ] Touch: 44px minimum targets ## Resources - [WCAG 2.1 Quick Reference](https://www.w3.org/WAI/WCAG21/quickref/) - [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) - [ARIA Authoring Practices](https://www.w3.org/WAI/ARIA/apg/) # Motion Specification Motion should surprise and delight while serving function. Animation is a creative tool. ## Easing Curves | Easing | CSS | Use For | |--------|-----|---------| | **Ease-out** | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Entrances, appearing | | **Ease-in** | `cubic-bezier(0.4, 0.0, 1, 1)` | Exits, disappearing | | **Ease-in-out** | `cubic-bezier(0.4, 0.0, 0.2, 1)` | State changes, transforms | | **Spring** | `cubic-bezier(0.68, -0.55, 0.265, 1.55)` | Playful, attention-grabbing | | **Linear** | `linear` | Spinners, continuous loops | ## Duration by Element Weight | Weight | Duration | Examples | |--------|----------|----------| | **Lightweight** | 150ms | Icons, badges, chips | | **Standard** | 300ms | Cards, panels, list items | | **Weighty** | 500ms | Modals, page transitions | ## Duration by Interaction | Interaction | Duration | |-------------|----------| | Button press | 100ms | | Hover state | 150ms | | Tooltip appear | 200ms | | Tab switch | 250ms | | Modal open | 300ms | | Page transition | 400ms | ## Common Patterns ```tsx // Hover transition (CSS) <button className="transition-colors duration-150 ease-out hover:bg-blue-700"> // Fade + slide (Fr