Frontend Ui Engineering Skill Security Audit
What the author says it does (original text)
Builds production-quality, accessible, responsive user-facing UIs. Use when building or modifying interfaces and pages, creating components, implementing layouts, meeting WCAG accessibility requirements, managing state, or when the output needs to look and feel production-quality rather than AI-generated.
No obvious risks found in this check
- Files checked
- 1
- Risks found
- 0
Inside this skill
The Skill instructs an agent to build or modify frontend pages and components, emphasizing responsive design, state management, visual quality, and WCAG accessibility.
View source
---name: frontend-ui-engineeringdescription: Builds production-quality, accessible, responsive user-facing UIs. Use when building or modifying interfaces and pages, creating components, implementing layouts, meeting WCAG accessibility requirements, managing state, or when the output needs to look and feel production-quality rather than AI-generated.---It recommends separating data fetching from presentation and explicitly handling loading, error, and empty-data states.
View source
**Separate data fetching from presentation:**```tsx// Container: handles dataexport function TaskListContainer() { const { tasks, isLoading, error } = useTasks(); if (isLoading) return <TaskListSkeleton />; if (error) return <ErrorState message="Failed to load tasks" retry={refetch} />; if (tasks.length === 0) return <EmptyState message="No tasks yet" />; return <TaskList tasks={tasks} />;}It requires keyboard-accessible interactive elements and accessible labels for controls without visible text and for form inputs.
View source
### Keyboard Navigation```tsx// Every interactive element must be keyboard accessible<button onClick={handleClick}>Click me</button> // ✓ Focusable by default<div onClick={handleClick}>Click me</div> // ✗ Not focusable<div role="button" tabIndex={0} onClick={handleClick} // ✓ But prefer <button> onKeyDown={e => {### ARIA Labels```tsx// Label interactive elements that lack visible text<button aria-label="Close dialog"><XIcon /></button>// Label form inputs<label htmlFor="email">Email</label><input id="email" type="email" />// Or use aria-label when no visible label exists<input aria-label="Search tasks" type="search" />```After UI work, it calls for checking console errors, keyboard and screen-reader usability, several viewport sizes, data states, and accessibility warnings.
View source
## VerificationAfter building UI:- [ ] Component renders without console errors- [ ] All interactive elements are keyboard accessible (Tab through the page)- [ ] Screen reader can convey the page's content and structure- [ ] Responsive: works at 320px, 768px, 1024px, 1440px- [ ] Loading, error, and empty states all handled- [ ] Follows the project's design system (spacing, colors, typography)- [ ] No accessibility warnings in dev tools or axe-coreFiles and check records1 files
Coverage and gaps
Content covered in each file
These are the source ranges included in this check, not a guarantee that every issue has been resolved.
SKILL.mdFull text included
This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.
SKILL.mdInstructions
- Lines read
- 329
- File checksum (to compare versions)
- 530c7ff277cdaf3505a092d58264c62341b99b5cf7c3852d219bb97fe5209038