Basic Cohub abilities. Most agents already have these mounted; listed here for reference.
Platform Published by the Neta team.
Official Made by the Neta team.
Verified Reviewed by the Neta team.
Community Shared by a Cohub user. Not reviewed — read SKILL.md before you use it.
game-visual-qa
Platformneta-skills/game-visual-qa
Use it in Cohub
Paste this into your agent's chat — it fetches the skill and follows it.
Use the skill: game-visual-qa. Run `npx -y @neta-art/neta-search-cli@latest skills use neta-skills/game-visual-qa --via site` and follow what it prints. Read its complete output, redirecting it to a temporary file first if necessary, and resolve relative paths from the skill directory it prints.
Install from a terminal
npx -y @neta-art/neta-search-cli@latest skills use neta-skills/game-visual-qa
Summary
Check your game and art for broken images, layout collisions, and basic visual bugs before you publish.
Catches cut-off characters, white boxes around sprites, missing transparency, and damaged generated images.
Tests your game page in a browser: finds overlapping buttons, hidden controls, scrollbars, and sizing problems.
Creates a labeled grid of all your assets so you can see everything at once and spot problems fast.
Works best when you have a playable game page or a folder of generated character art, backgrounds, or sprite sheets.
Gives you a report with screenshots, a checklist of what passed or failed, and exactly what needs fixing.
SKILL.md
# Game Visual QA
Use this skill to perform **first-pass visual sanity QA** for game projects. It covers two core scenarios:
1. **Asset visual QA** — generated assets are not broken, cut badly, missing transparency, white-boxed, empty, malformed, or obviously unusable in runtime.
2. **Page visual QA** — the playable/static page has no basic visual bugs such as component overlap, occlusion, display cutoff, overflow, scrollbars, wrong sizing, broken responsive layout, or missing resources.
This skill checks **visual usability defects**, not subjective art quality. It may flag obvious generation failures and semantic mismatches, but it does not decide whether an art direction is beautiful unless the project supplies a specific rubric.
For Game Maker production QA, this skill is the QA rule owner for visual, page, browser, asset, and publish-readiness checks. The project protocol supplies the current-game rubric. In that mode, visual QA must include semantic acceptance evidence: screenshot-by-screenshot observed-scene descriptions, source-theme residue checks for reference/remix work, per-asset observed identity checks, and blocker classification. Game Maker semantic acceptance is stricter than basic visual sanity QA.
## Required reading by task type
- For every task: read `docs/STEPS.md` and `docs/REPORT_FORMAT.md`.
- For asset QA: read `docs/ASSET_QA.md`.
- For page/layout QA: read `docs/PAGE_QA.md`, `docs/BROWSER_QA.md`, and `docs/DELIVERY_QA.md`.
- When creating or editing a project QA profile: read `docs/PROFILE_SCHEMA.md`.
- When browser automation is needed, also read the sibling browser-use skill at `../agent-browser/SKILL.md` if present, then follow its live CLI guide (`agent-browser skills get core`) when the CLI is available.
Bundled first-version scripts:
```text
engine/asset_metrics.py # deterministic image checks + JSON/Markdown report
engine/make_contact_sheet.py # labeled checkerboard asset contact sheet + label map
engine/report_writer.py # combine asset/page evidence into a final report skeleton
```
Optional presets:
```text
presets/basic-game.json
presets/city-builder.json
presets/static-page.json
presets/sprite-sheet.json
```
## Game Maker QA responsibilities
When this skill is loaded by `game-maker`, it owns the concrete QA requirements that should not be duplicated in the Game Maker controller document, including delivery-environment QA, final-URL readiness, LLM/backend verification boundaries, and confirmed visual-contract checks.
Before completion or publish-readiness claims for a playable browser game or game page, run the strongest feasible validation path for the work:
- typecheck, if applicable;
- lint, if applicable;
- build, if applicable;
- tests, if present;
- browser smoke test for playable pages;
- browser interaction QA when player input, state, progression, restart, win/lose, or route changes are in scope;
- page visual QA for layout, viewport, resource loading, screenshots, responsive presentation, and final delivery URL/environment checks;
- asset visual QA for generated or runtime visual assets;
- asset geometry checks for sheets, sprites, maps, or grids;
- manual inspection of screenshots, contact sheets, or previews when visual output matters;
- mobile share playability checks for playable browser games unless the project is explicitly desktop-only.
For playable browser games and game pages, this skill is mandatory before claiming completion, publish readiness, or final quality acceptance. If it cannot be run, mark publish readiness as `blocked` or `not ready` unless the user explicitly waives the requirement.
Do not claim QA passed if a required tool was unavailable. Mark unavailable checks as `blocked`, `skipped`, or `not applicable`. Mark `skipped` only when the check is out of scope, not applicable, or explicitly waived by the user.
Do not publish or deliver a final result with known blockers. If a blocker is found, repair it when feasible, rerun the failed check, update evidence, and only then report readiness.
## Dependency recovery
If a required QA dependency is missing, do not immediately skip the check. First attempt safe installation or initialization in the current workspace/sandbox, then rerun the dependency check and continue.
Common recoveries:
```bash
python3 -m pip install --user --break-system-packages pillow
npm install playwright puppeteer sharp --save-dev
npx playwright install chromium
npm install -g agent-browser || true
```
Use the least invasive method that fits the environment. If installation is blocked, unsafe, or still fails, mark the affected check as `blocked`; do not call it passed. Mark `skipped` only when the check is out of scope, not applicable, or explicitly waived by the user.
## Core boundaries
### This skill should catch
- missing / empty / undecodable images;
- wrong dimensions or suspiciously tiny/huge files;
- fully transparent or mostly empty sprite images;
- unexpected fully opaque sprite/object images;
- alpha bbox touching edges, indicating bad crop or cut-off subject;
- very small / oversized / off-center visible content;
- accidental white backgrounds / white boxes / halos;
- sheet crops with missing slots, cross-cell damage, or label/order mismatch;
- obvious asset generation failures, watermarks, text, logo remnants, stale theme assets;
- page load failures, 404 resources, console blocker errors;
- page/component overlap, clipping, overflow, scrollbars, hidden critical controls;
- game area/canvas/root not visible or wrong size;
- screenshots showing basic visual bugs at required viewports.
### This skill should not overclaim
Never collapse all checks into a vague `QA passed`. Always report separate statuses:
```text
Typecheck: passed/failed/skipped/not applicable
Lint: passed/failed/skipped/not applicable
Build: passed/failed/skipped/not applicable
Tests: passed/failed/skipped/not applicable
Browser smoke test: passed/failed/blocked/skipped
Browser interaction QA: passed/failed/blocked/skipped/not applicable
Asset technical QA: passed/failed/skipped/not applicable
Asset visual inspection: passed/failed/skipped/not applicable
Page browser QA: passed/failed/blocked/skipped
Page visual inspection: passed/failed/blocked/skipped
Semantic visual review: passed/failed/blocked/missing/not applicable
Source-theme residue gate: passed/failed/blocked/missing/not applicable
Gameplay loop QA: passed/failed/blocked/skipped/not applicable
Mobile core loop QA: passed/failed/blocked/skipped/not applicable
Delivery environment QA: passed/failed/blocked/skipped/not applicable
Publish readiness: ready/not ready/blocked
```
If browser automation or screenshots are unavailable after a safe install/recovery attempt, report page/browser QA as `blocked`, not passed. For page QA and publish-readiness checks, `agent-browser` is the preferred browser automation engine when installed; Playwright/Puppeteer may be used as a fallback when available.
## Standard workflow
1. **Determine QA mode**
- `asset`, `page`, or `both`.
- Default to `both` when the user asks generally for visual QA on a playable project.
2. **Discover or create QA profile**
- Prefer a project-local `visual-qa.profile.json` if present.
- Otherwise infer a basic profile from the project structure and user request.
- Include claimed delivery mode(s), exact target URL(s), LLM/backend scope, and any confirmed visual/UI contract when known.
- Use presets only as defaults; project/user requirements override presets.
3. **Run asset technical QA if in scope**
- Use `engine/asset_metrics.py` or equivalent project-specific script.
- Generate `qa/assets/asset-metrics.json` and `qa/assets/asset-findings.md`.
- Generate a labeled contact sheet with `engine/make_contact_sheet.py`.
- Inspect the contact sheet manually; automated metrics are signals, not final visual QA.
4. **Run page/browser QA if in scope**
- Use the sibling `agent-browser` skill as the preferred browser automation capability.
- Read `../agent-browser/SKILL.md` if present, then run `agent-browser skills get core` for exact current commands when the CLI is installed.
- Start a local static server or use the provided URL.
- Check at least desktop/large viewports; include tablet/mobile unless the project is explicitly desktop-only.
- For publish-readiness or completion claims, open the exact final Studio/public/review URL being claimed; local screenshots cannot prove public readiness.
- Capture screenshots and collect console/network/layout findings with `agent-browser` when available.
- If `agent-browser` or equivalent browser automation is unavailable, first attempt safe installation or initialization, then rerun the browser tooling check.
- If browser automation remains unavailable after recovery, mark page/browser QA as `blocked`; do not call it passed.
- Inspect screenshots manually.
- Apply `docs/DELIVERY_QA.md` for delivery-environment readiness, LLM/backend feature scope, final-URL evidence, public-static degradation labels, and confirmed visual-contract checks.
- For Game Maker protocol QA, write screenshot-by-screenshot semantic observations into `protocol/semantic-visual-review.json` and record source-theme residue findings when applicable.
5. **Classify issues**
- `blocker`: prevents publish/review.
- `major`: should fix before publish.
- `minor`: acceptable but record.
- `note`: limitation, fallback, skipped optional check, or non-blocking context.
6. **Write evidence and final report**
- Store evidence under `qa/` in the project unless the user specifies another path.
- Include contact sheet paths, label map, screenshots, JSON reports, issue list, and final readiness.
- For Game Maker protocol QA, also update the relevant protocol evidence files such as `protocol/visual-qa-evidence.json`, `protocol/semantic-visual-review.json`, `protocol/source-theme-risk-gate.json`, `protocol/gameplay-loop-qa.json`, and `protocol/mobile-core-loop-qa.json` when those checks are in scope.
- Do not publish or call a build QA-complete if blocker issues remain.
## Recommended commands
Asset metrics:
```bash
python3 <skills-root>/game-visual-qa/engine/asset_metrics.py \
--root <project-root> \
--asset-dirs <asset-dir-1> <asset-dir-2> \
--out-json qa/assets/asset-metrics.json \
--out-md qa/assets/asset-findings.md
```
Contact sheet:
```bash
python3 <skills-root>/game-visual-qa/engine/make_contact_sheet.py \
--root <project-root> \
--asset-dirs <asset-dir-1> <asset-dir-2> \
--out qa/assets/contact-sheet.html \
--labels --checkerboard --show-size
```
Final report skeleton:
```bash
python3 <skills-root>/game-visual-qa/engine/report_writer.py \
--root <project-root> \
--out qa/visual-qa-report.md \
--asset-report qa/assets/asset-metrics.json
```
## Game Maker protocol evidence
When used inside a Game Maker work, write QA outcomes into the project protocol instead of leaving them only in a chat summary or standalone report.
Required evidence targets, when in scope:
- `protocol/visual-qa-evidence.json` records screenshots, contact sheets, reviewed status, and visual check summaries.
- `protocol/semantic-visual-review.json` records expected theme, observed scene, unexpected source-theme residue, layout blockers, and semantic verdict for each screenshot.
- `protocol/source-theme-risk-gate.json` records source-theme residue risks and scan results for reference/remix work.
- `protocol/gameplay-loop-qa.json` records core loop action/assertion/evidence steps; a page that only loads is not a gameplay pass.
- `protocol/mobile-core-loop-qa.json` records mobile access to target/objective, primary action source, core play area, and at least one completed core loop unless desktop-only is explicit.
- `protocol/current-project-asset-inventory.json` and `protocol/asset-fit-review.json` must connect runtime assets to observed identity, gameplay role, source, runtime use, visual evidence, and `approved-for-current-game` fit status when asset checks are in scope.
## Manual inspection is mandatory
For assets, open the contact sheet and check:
- no broken/cut-off subjects;
- no accidental white boxes or alpha damage;
- labels/IDs match visible content;
- each runtime asset's expected identity matches its observed identity;
- grouped approvals are replaced with per-asset observations;
- characters are complete when complete characters are required;
- buildings/props are complete and not cropped;
- no watermarks, text, logos, stale-theme remnants, source-theme residue, or obvious generation failures.
For pages, open the screenshot set and check:
- the visible scene matches the target theme and gameplay context;
- reference/remix source-theme residue is absent unless explicitly allowed;
- no component conflict, occlusion, or layout collision;
- no display cutoff or hidden critical controls;
- no unwanted browser scrollbar;
- game area is visible and properly sized;
- images/canvas/UI are not stretched, clipped, or misplaced.
## Relationship with specialized skills
When a specialized skill has stricter QA rules, use both:
- City builder: use its 4x4 sheet and road/runtime QA rules in addition to this skill.
- Hatch pet / animation: use atlas/animation-specific QA in addition to this skill.
- Room-care / crew-home: use calibration/runtime interaction QA in addition to this skill.
This skill is the common baseline; specialized skills may add stricter gates.