Skip to content
Back to skills

Design Qc

ASecurity

Visual QC of a running UI — captures screenshots via `openwolf designqc`, then reviews them against modern UI standards (DevSkyy dashboard) or SkyyRose brand canon (WP theme). Use when the user asks to check, evaluate, or improve the design/UI of the DevSkyy app or the SkyyRose theme. Do NOT use for choosing or migrating a component framework (that is `reframe`) or for building net-new UI from scratch (that is `frontend-design` / `fashion-theme-architect`).

  • 3 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 11, 2026
designgobashreactnodefrontend

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned September 11, 2026

npx -y skills add SkyyRoseLLC/DevSkyy --skill design-qc --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Design Qc?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Design Qc
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/skyyrosellc-design-qc/badge)](https://www.skillsdirectory.com/skills/skyyrosellc-design-qc)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: design-qc
description: Visual QC of a running UI — captures screenshots via `openwolf designqc`, then reviews them against modern UI standards (DevSkyy dashboard) or SkyyRose brand canon (WP theme). Use when the user asks to check, evaluate, or improve the design/UI of the DevSkyy app or the SkyyRose theme. Do NOT use for choosing or migrating a component framework (that is `reframe`) or for building net-new UI from scratch (that is `frontend-design` / `fashion-theme-architect`).
---

## When to use

- The user asks to check, evaluate, or improve the design/UI of a running surface — the DevSkyy
  dashboard (`frontend/`, localhost:3000) or SkyyRose theme pages.
- After a batch of UI edits, when a before/after visual pass is wanted prior to deploy.
- `.wolf/OPENWOLF.md` routes "Design QC" requests here (auto-trigger on matching requests).

**When NOT to use:**

- Component-framework selection or migration → `reframe` skill.
- Designing/building net-new UI → `frontend-design` / `fashion-theme-architect`.
- Post-deploy production verification → `node scripts/verify-live-playwright.mjs` spec gate or the
  deploy-and-verify agent. This skill reviews captured pixels; any severity claim about production
  requires its own `[live]` probe (bug-287).

## Inputs

Required before starting. **Absent input = STOP** — never fabricate a review (fail-open is bug-230, ×6):

1. **Capture CLI** — `command -v openwolf` returns a path. Observed 2026-07-29: the global install at
   `/Users/theceo/.npm-global/bin/openwolf` was a *broken symlink* (package removed) — treat that as
   absent. When absent: say so, and do NOT review from memory or from the historical
   `.wolf/designqc-archive/` shots. Fallback capture only if a real target is reachable: the
   Playwright MCP screenshot tool (`browser_take_screenshot` / `playwright_screenshot`).
2. **A running, reachable target** — the command auto-detects a dev server (or starts one from
   package.json); pass `--url <url>` only if auto-detection fails. No reachable target → nothing to
   capture → STOP.
3. **For SkyyRose theme QA: canon inputs** — `docs/design/visual-pattern-shortlist.md` (the screened
   motion-pattern list) and the brand tokens `#B76E79` / `#0A0A0A` / `#C0C0C0` / `#DC143C` /
   `#D4AF37`. Shortlist missing → do not improvise the pattern screen; stop and name the gap.

## Procedure

1. Preflight the capture tool (`command -v openwolf`) — absent → STOP per Inputs.
2. Run `openwolf designqc` via Bash. It saves compressed JPEG screenshots to
   `.wolf/designqc-captures/`; full pages are captured as sectioned viewport-height images
   (`<route>__<viewport>_top.jpg`, `_section2`, …, `_bottom`).
3. Read the captured screenshots from `.wolf/designqc-captures/` with the Read tool.
   **Token awareness:** each screenshot costs ~2500 tokens (JPEG quality 70, max width 1200px).
   For large apps, limit captures with `--routes / /specific-page`.
4. Evaluate against the criteria for the surface:
   - **DevSkyy dashboard** (Shadcn UI, Tailwind, clean React patterns): spacing and whitespace
     consistency · typography hierarchy and readability · color contrast and accessibility (WCAG) ·
     visual hierarchy and focal points · component consistency · whether the design reads "dull" or
     "white-coded" (generic, no personality).
   - **SkyyRose WordPress theme** — the generic list does NOT apply; this is a brand-locked
     luxury-streetwear storefront, not a dashboard. Replace it with:
     - Cross-reference every animated/motion element against `docs/design/visual-pattern-shortlist.md`
       — is it one of the 176 screened patterns, or an unscreened improvisation? Flag anything that
       reads generic-SaaS (glassmorphism dashboards, gradient-blob-on-white heroes,
       Inter/Space-Grotesk-as-safe-default) — the shortlist exists to keep this theme out of that
       territory.
     - Grep new CSS/JS for cut fonts (`Cormorant Garamond`, `Playfair Display`, `Bebas Neue`,
       `Yellowtail`) in **live `font-family` declarations** — hard fail regardless of how the design
       looks. (A name-only grep false-positives on migration comments — see Failure modes.)
     - Every motion/animation carries a `prefers-reduced-motion: reduce` fallback — not optional here.
     - Hex values trace to the real tokens listed in Inputs, not placeholder colors left over from a
       sourced pattern spec.
     - "Dull or white-coded" becomes: does it read as Kith / Oaklandish / Culture Kings / Fear of God
       / Palm Angels, or does it drift toward European-luxury-serif or generic streetwear-template
       territory?
5. Deliver specific, actionable findings — each anchored to a `file:line` or a named screenshot, with
   an evidence-scope tag (`[repo]` for source reads, `[repro]` for checks run this session). No
   `[live]` probe → no production-severity wording.
6. If the user approves, implement the fixes. Theme CSS/JS edits require a `.min` rebuild
   (`cd wordpress-theme && npm run build`) — production serves `.min`, so a source-only edit ships
   nothing.
7. Re-run the capture and compare before/after screenshots for the changed routes.

## Verification

Run these before reporting; each can return "no".

1. Cut-font gate — live declarations only, not mentions:

```bash
grep -rnE "font-family[^;}]*(Cormorant Garamond|Playfair Display|Bebas Neue|Yellowtail)" \
  wordpress-theme/skyyrose-flagship/assets/css/ --include='*.css'
```

**PASS:** exits 1 (zero matches). Observed passing 2026-07-29. `[repro]`

2. Reduced-motion coverage heuristic — animation files with no in-file fallback:

```bash
grep -rlE '@keyframes|animation:' wordpress-theme/skyyrose-flagship/assets/css/ --include='*.css' \
  | grep -v '.min.css' | xargs grep -L 'prefers-reduced-motion'
```

**PASS:** empty output. Any file listed is a flag at `[repo]` scope — a global reduce block in
another enqueued file can still cover it, so trace coverage before asserting a defect.

3. After implementing theme fixes, rebuild and run the theme gate:

```bash
cd wordpress-theme && npm run build && npm run verify:theme
```

**PASS:** both exit 0. `[test]` A gate that errors or times out has NOT passed — its zero-findings
output is an artifact; re-verify by hand (bug-230).

4. Capture freshness: at least one `.jpg` in `.wolf/designqc-captures/` with an mtime after this
   run started — reviewing archive shots is a stale-state verdict, not QC.

## Worked example

Real run, this worktree, 2026-07-29. Check 2 (reduced-motion heuristic):

```bash
$ grep -rlE '@keyframes|animation:' wordpress-theme/skyyrose-flagship/assets/css/ --include='*.css' \
    | grep -v '.min.css' | xargs grep -L 'prefers-reduced-motion'
wordpress-theme/skyyrose-flagship/assets/css/main.css
wordpress-theme/skyyrose-flagship/assets/css/agency-tier-visuals.css
```

Two real files carry animation with no in-file reduce fallback — flagged `[repo]`, handed to the
theme owner to either add the fallback or point at the covering global reduce block. Severity stays
"flag": no `[live]` probe was run.

Same session, check 1: a *name-only* grep for the cut fonts matched
`assets/css/fonts.css:14` — a comment documenting the 2026-07-10 migration ("Bebas→Anton,
Yellowtail→Pacifico (BR)"), not a live declaration. The `font-family`-scoped grep above exited 1.
Diff the match *contents*, not just the match count, before calling a violation.

A prior capture set exists at `.wolf/designqc-archive/` (e.g. `about__desktop_top.jpg`, 50.6K) —
useful as a naming reference for the sectioned-capture format, never as review input.

## Failure modes

- **Capture CLI silently absent** — `openwolf` resolved to a broken symlink on 2026-07-29 `[repro]`.
  Proceeding to "review" without fresh pixels is the fail-open pattern (bug-230): absent input =
  STOP, not a default.
- **Reviewing `.wolf/designqc-archive/` instead of fresh `.wolf/designqc-captures/`** — archive
  shots are frozen history; verdicts drawn from them describe a past deploy, not the tree under
  review.
- **Name-grep for cut fonts flags a doc comment** — real instance at `fonts.css:14`. Scope the grep
  to `font-family` declarations, and read the matched line before reporting.
- **Reduced-motion heuristic over-claims** — it is per-file; a global reduce block elsewhere can
  cover a listed file. Report at `[repo]` scope and trace before escalating.
- **Severity scope-jump** — screenshots of a dev server say nothing about production. "Production
  bug" wording requires a `[live]` probe (bug-287).
- **Theme fix without `.min` rebuild** — production serves `.min`; editing only the source ships
  nothing. Always `cd wordpress-theme && npm run build` and re-verify both files.
- **Token blowout on large apps** — every screenshot is ~2500 tokens; use `--routes` to cap the set
  instead of skipping the read (an unread capture is an unreviewed capture, not a pass).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.