ui-delivery
UI Delivery Protocol
Tooling Note: Commands use
playwright-cli, an internal wrapper around Playwright. If unavailable, use standard Playwright:npx playwright <command>
🎨 MANDATORY FOR ALL UI WORK
Before marking ANY UI task complete, you MUST:
1. Visual Verification (Screenshots)
# Open the page
playwright-cli open <url-or-file-path>
# Screenshot at mobile breakpoint
playwright-cli run-code "window.resizeTo(375, 812)"
playwright-cli screenshot --full-page ./qa-screenshots/mobile.png
# Screenshot at tablet breakpoint
playwright-cli run-code "window.resizeTo(768, 1024)"
playwright-cli screenshot --full-page ./qa-screenshots/tablet.png
# Screenshot at desktop breakpoint
playwright-cli run-code "window.resizeTo(1440, 900)"
playwright-cli screenshot --full-page ./qa-screenshots/desktop.png
2. Console Error Check
playwright-cli console error
Zero console errors from application code.
What counts as an error:
console.error()calls from your code- Uncaught exceptions
- Failed network requests (4xx/5xx)
What may be noted but doesn't block:
- Warnings from third-party libraries (document with link to issue)
- Deprecation warnings
Exception Process: If a known library produces unavoidable errors, add to /docs/known-console-errors.md with ticket link.
3. Build Verification
# For React/Vite projects
npm run build
# Must complete with no errors
4. Accessibility Check (Mandatory)
# Run automated accessibility scan
node scripts/run-axe.mjs <path>
Zero critical or serious violations.
Checks include:
- Color contrast (WCAG AA)
- ARIA labels on interactive elements
- Keyboard navigation
- Focus indicators
If violations exist:
- Fix critical/serious issues
- Document minor issues with remediation plan
6. QA Gate (Mandatory)
node scripts/qa-gate.mjs <path> ui
Must exit with code 0 (PASS) before delivery.
Exit codes:
- 0 = ✅ PASS — Ready to ship
- 1 = 🟡 REVISE — Fixable issues, re-run
- 2 = 🔴 REJECT — Fundamental problems, rebuild
7. Adversarial Review (Mandatory)
node scripts/adversarial-review.mjs <deliverable> ui
Must get PASS or REVISE (not REJECT).
Scoring:
- 80-100 = ✅ PASS — Ship it
- 70-79 = 🟡 REVISE — Address issues, re-review
- 0-69 = 🔴 REJECT — Rebuild from scratch
5. Adversarial Review
node scripts/adversarial-review.mjs <deliverable> ui
Must get PASS or REVISE (not REJECT).
✅ DELIVERY CHECKLIST
Every UI deliverable must include:
- Mobile screenshot (375px) — saved as
[ticket]-mobile.png - Tablet screenshot (768px) — saved as
[ticket]-tablet.png - Desktop screenshot (1440px) — saved as
[ticket]-desktop.png - Console errors: 0 from app code
- Accessibility: 0 critical/serious violations
- Build: PASS
- QA gate: PASS (exit 0)
- Adversarial review: PASS (80-100) or REVISE (70-79)
Screenshot Naming: ./qa-screenshots/[date]/[ticket-id]-[breakpoint].png
Artifact Storage: Attach screenshots to PR or upload to shared storage.
📤 COMPLETION MESSAGE TEMPLATE
✅ [Task Name] Complete
**Screenshots:**
📱 Mobile: ./qa-screenshots/2026-02-15/ABC-123-mobile.png
📱 Tablet: ./qa-screenshots/2026-02-15/ABC-123-tablet.png
🖥️ Desktop: ./qa-screenshots/2026-02-15/ABC-123-desktop.png
**Quality Checks:**
✅ Build: PASS (no errors)
✅ Console: 0 app errors (3 third-party warnings noted)
✅ Accessibility: 0 critical/serious violations
✅ QA Gate: PASS (exit 0)
✅ Adversarial: PASS (82/100)
**Deliverables:**
- /path/to/file1
- /path/to/file2
**Logs:**
- QA Gate: ./logs/qa-gate.log
- Adversarial: ./reports/adversarial-review.md
**Notes:** [any important info]
🚫 DO NOT DELIVER IF:
- Screenshots are missing
- Console has errors
- Build fails
- QA gate blocks
- Adversarial review rejects
🆘 STUCK?
If you can't get a clean screenshot or build:
- Try to fix it yourself (30 min max)
- If still stuck → notify Maria with specific error
./notify-maria.sh "UI issue: [specific problem]. Error: [message]. Help needed."
📚 EXAMPLE: Complete UI Workflow
# 1. Build the project
cd /projects/my-dashboard
npm run build
# 2. Open in browser
playwright-cli open ./dist/index.html
# 3. Take screenshots
mkdir -p ./qa-screenshots
playwright-cli run-code "window.resizeTo(375, 812)"
playwright-cli screenshot --full-page ./qa-screenshots/mobile.png
playwright-cli run-code "window.resizeTo(768, 1024)"
playwright-cli screenshot --full-page ./qa-screenshots/tablet.png
playwright-cli run-code "window.resizeTo(1440, 900)"
playwright-cli screenshot --full-page ./qa-screenshots/desktop.png
# 4. Check console
playwright-cli console error
# 5. Run QA gate
node scripts/qa-gate.mjs ./dist/index.html ui
# 6. Deliver with screenshots attached
Last Updated: Feb 15, 2026
Enforced By: qa-gate.mjs, adversarial-review.mjs
More from mmcmedia/openclaw-agents
etsy-keyword-research
Deep Etsy keyword research for digital products. Use when researching keywords for Etsy listings, finding profitable niches, analyzing search volume and competition, or optimizing listing tags. Produces actionable keyword lists with search volume estimates, competition scores, and strategic recommendations.
86etsy-expert
Etsy shop optimization expert (Bailey from Bailey Design Co style) specializing in digital products, listing optimization, mockups, pricing strategy, and ROAS tracking for creative entrepreneurs.
76etsy-listing-analyzer
Analyze Etsy competitor listings to understand success factors. Use when reverse-engineering top sellers, understanding what images/descriptions work, analyzing pricing strategies, or finding gaps in competitor listings. Uses visual analysis of listing images and detailed review of copy/structure.
68shorts-creator
Create vertical 9:16 video clips from full music videos for Instagram Reels, TikTok, and YouTube Shorts. Takes full-length music video and extracts key moments, re-frames for mobile, and optimizes for social platforms. Use when creating short-form social content from PsalMix music videos or any video content.
64chief-of-ai
Chief of AI who researches new AI/tech developments, recommends tools, automation opportunities, and strategies to stay on the cutting edge. Monitors AI news, evaluates new tools, and identifies leverage points.
51etsy-listing-generator
Generate Etsy listing images from HTML templates using Playwright. Supports single and batch rendering with customizable title, subtitle, badge text, and product images. Use when creating Etsy product listing images, mockups, or running batch generation for multiple products (e.g., puppet printables, digital downloads). Works with any HTML template that uses PRODUCT_IMAGE_URL, TITLE_TEXT, SUBTITLE_TEXT, BADGE_LEFT_TEXT placeholders.
45