Review frontend implementations for design quality, UI/UX best practices, and visual consistency.
Reviews frontend implementations for design quality, UI/UX best practices, and visual consistency.
/plugin marketplace add KreativReason/merged-end-to-end-ai-dpp---e2e-cli/plugin install kreativreason-e2e-pipeline@kreativreason-marketplaceReview frontend implementations for design quality, UI/UX best practices, and visual consistency.
| Aspect | Check |
|---|---|
| Spacing | Consistent use of spacing scale |
| Typography | Hierarchy, readability, contrast |
| Color | Palette consistency, contrast ratios |
| Layout | Alignment, balance, responsiveness |
| Polish | Shadows, borders, transitions |
| Aspect | Check |
|---|---|
| Affordance | Interactive elements look clickable |
| Feedback | Loading states, success/error states |
| Accessibility | Focus states, color contrast, labels |
| Consistency | Matches existing patterns |
| Aspect | Check |
|---|---|
| Component structure | Logical composition |
| Style approach | Tailwind/CSS-in-JS consistency |
| Responsive | Mobile-first, breakpoint coverage |
| Reusability | Extracted common patterns |
1. Open PR in browser (via Playwright)
2. Screenshot key pages/components
3. Compare to design system
4. Document discrepancies
1. Review changed CSS/Tailwind
2. Check component structure
3. Verify responsive implementation
4. Assess accessibility
1. Test hover/focus states
2. Verify transitions
3. Check loading states
4. Test error states
// Good: Consistent spacing scale
<div className="space-y-4">
<Header />
<Content />
<Footer />
</div>
// Bad: Arbitrary mixed values
<div>
<Header style={{ marginBottom: '17px' }} />
<Content className="mb-[23px]" />
<Footer />
</div>
// Good: Clear hierarchy
<h1 className="text-4xl font-bold">Title</h1>
<p className="text-lg text-gray-600">Subtitle</p>
<p className="text-base">Body text</p>
// Bad: Flat hierarchy
<div className="text-base">Title</div>
<div className="text-base">Subtitle</div>
<div className="text-base">Body text</div>
// Good: Complete states
<button className="
bg-blue-600
hover:bg-blue-700
focus:ring-2 focus:ring-blue-500 focus:ring-offset-2
active:bg-blue-800
disabled:bg-gray-400 disabled:cursor-not-allowed
transition-colors
">
// Bad: Missing states
<button className="bg-blue-600">
// Good: Accessible
<button aria-label="Close dialog">
<XIcon aria-hidden="true" />
</button>
// Bad: Not accessible
<div onClick={close}>
<XIcon />
</div>
{
"artifact_type": "design_review",
"status": "pass|warn|fail",
"data": {
"target": "PR #123",
"screenshots": ["hero.png", "card.png", "form.png"],
"visual_score": 8.5,
"summary": {
"strengths": [
"Consistent spacing throughout",
"Good use of shadows for depth",
"Clear interactive states"
],
"issues": [
{
"id": "UI-001",
"severity": "medium",
"category": "accessibility",
"title": "Missing Focus States",
"file": "src/components/NavLink.tsx",
"description": "Navigation links lack visible focus indicator",
"fix": "Add focus:ring-2 focus:ring-offset-2"
},
{
"id": "UI-002",
"severity": "low",
"category": "consistency",
"title": "Inconsistent Border Radius",
"description": "Mix of rounded-lg and rounded-xl",
"fix": "Standardize on rounded-xl for cards"
}
]
},
"design_system_compliance": {
"colors": "compliant",
"typography": "compliant",
"spacing": "1 violation",
"components": "compliant"
},
"accessibility": {
"color_contrast": "pass",
"keyboard_navigation": "needs_work",
"screen_reader": "not_tested"
},
"recommendations": [
"Add transition-all for smoother interactions",
"Consider reduced-motion media query",
"Add loading skeleton for async content"
]
}
}
| Severity | Description | Example |
|---|---|---|
| Critical | Accessibility violation | Missing alt text, no focus |
| High | Major visual issue | Broken layout, wrong colors |
| Medium | Noticeable problem | Missing states, inconsistency |
| Low | Polish item | Minor spacing, transitions |
Automatically runs during:
/kreativreason:review for frontend PRsUse this agent to verify that a Python Agent SDK application is properly configured, follows SDK best practices and documentation recommendations, and is ready for deployment or testing. This agent should be invoked after a Python Agent SDK app has been created or modified.
Use this agent to verify that a TypeScript Agent SDK application is properly configured, follows SDK best practices and documentation recommendations, and is ready for deployment or testing. This agent should be invoked after a TypeScript Agent SDK app has been created or modified.