mk:frontend-design — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited mk:frontend-design (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Production-grade UI/UX design with anti-AI-slop enforcement. Covers aesthetics, accessibility, typography, color, motion, responsive, and design tokens.
Auto-activate on: Design tasks, UI component styling, "make it look good", "improve the design", "fix the UI", "design review", design system work, CSS/styling changes
Explicit: /mk:frontend-design [concern]
Do NOT invoke for: Vue patterns (use mk:vue), TypeScript (use mk:typescript), backend code, API integration
Operates in Phase 3 (Build GREEN) and Phase 4 (Review) for design quality checks. Output supports the developer agent (Phase 3) or reviewer agent (Phase 4).
references/design-rules.mdEvery design output MUST pass these checks:
| Category | Anti-Pattern (NEVER) | Do Instead |
|---|---|---|
| Typography | System font stack only, single weight | 2-3 weights, intentional font pairing (use mk:ui-design-system/assets/typography.csv) |
| Typography | All text same size/weight | Clear hierarchy: display → heading → body → caption |
| Typography | Inter as default font | Choose font from typography.csv matching project mood |
| Color | Pure black (#000) on pure white (#fff) | Softened: #111827 on #fafafa or similar |
| Color | Rainbow of unrelated colors | 1 primary + 1 accent + neutrals (use mk:ui-design-system/assets/colors.csv) |
| Color | Purple gradient as hero background | Use brand-appropriate gradient or solid color |
| Layout | Centered everything, card grid with equal spacing | Asymmetric layouts, intentional whitespace variation |
| Layout | Default padding/margin everywhere | Design tokens: consistent spacing scale (4px base) |
| Layout | 3-column equal card grid | Vary card sizes, use bento grid, or 2-column with feature highlight |
| Content | "Lorem ipsum" in final delivery | Real or realistic content |
| Content | "John Doe", "[email protected]" placeholders | Diverse, realistic names and data |
| Effects | Gratuitous shadows, gradients, blur | Subtle shadows (0 1px 3px), purposeful gradients |
| Effects | Parallax on every section | Reserve motion for hero or key CTA; respect prefers-reduced-motion |
| Components | Default browser inputs/buttons | Styled components with clear states (hover, focus, disabled) |
| Components | Unstyled select/checkbox/radio | Custom-styled form controls with accessibility preserved |
| Icons | Emoji as functional icons | SVG icons from consistent library (Lucide, Heroicons, Phosphor) |
| Images | Stock photo hero banners | Custom illustrations, product screenshots, or abstract art |
| Performance | Unoptimized images, layout shift | Next-gen formats (WebP/AVIF), explicit dimensions, skeleton loaders |
| Dark Mode | Just invert colors | Separate dark palette with reduced brightness, maintain contrast ratios |
## Design: {component or page}
**Type:** {new design | redesign | review | responsive fix}
**Framework:** {Vue | React | vanilla CSS}
### Design Decisions
{numbered list of design choices with reasoning}
### Anti-Slop Check
{✓/✗ per category from checklist}
### Accessibility
- Contrast ratio: {value} (min 4.5:1)
- Keyboard navigable: {yes/no}
- Screen reader labels: {present/missing}
### Files Modified
{list of CSS/component files}| Reference | When to load | Content |
|---|---|---|
| [design-rules.md](./references/design-rules.md) | Steps 2-3 | Typography, color, spacing, motion, responsive rules |
| [anti-slop-directives.md](./references/anti-slop-directives.md) | During UI implementation | 7 generic patterns to avoid + positive alternatives + identity test |
| Failure | Recovery |
|---|---|
| No design system in project | Apply sensible defaults (neutral palette, system fonts with fallbacks) |
| Contrast ratio below 4.5:1 | Adjust colors — never ship inaccessible UI |
| Anti-slop check fails | Fix failing items before delivery |
\text-${size}-bold\`) are not detected by Tailwind's content scanner and are stripped from the production CSS bundle; use complete class strings in source or add them to the safelist in tailwind.config.js`.--primary, --card, --muted etc. from its own token set; if the project's design system uses different variable names (e.g. --brand-primary), components render with the wrong colors silently; audit globals.css token names against shadcn's expected token list after every shadcn add command.Colors/Brand/Primary exports as colors-brand-primary in Style Dictionary but shadcn and Tailwind expect --primary; manually map or configure the transformer, never assume the export name matches the CSS var name.dark: variant class without defining the corresponding CSS variable in the .dark scope makes the element transparent (variable resolves to empty); always verify every token used in light mode has an explicit dark-mode override in the theme.md: 768px clashes with some design systems that use md: 960px; responsive layouts built from Figma specs at 960px will reflow at the wrong breakpoint; override breakpoints in tailwind.config.js to match the design system before implementing responsive styles.lucide-react icons in a Vue project (instead of lucide-vue-next) compiles without error but icons render as empty elements because the React component returns JSX that Vue ignores; always verify the framework-specific package is used.On completion → reviewer agent for Phase 4 design dimension check.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.