Source profileQuality 93/100Review permissions

notque/vexjoy-agent/skills/game/game-pipeline/SKILL.md

game-pipeline

Game lifecycle orchestrator: scaffold, assets, audio, QA, deploy.

Source repository stars
417
Declared platforms
0
Static risk flags
1
Last source update
2026-08-28
Source checked
2026-08-28

Decision brief

What it does: where it fits

Game lifecycle orchestrator: scaffold, assets, audio, QA, deploy.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/notque/vexjoy-agent --skill "skills/game/game-pipeline"
    Safe inspection promptEditorial

    Inspect the Agent Skill "game-pipeline" from https://github.com/notque/vexjoy-agent/blob/ad9e6558efff5859745698e5b909111c6db97594/skills/game/game-pipeline/SKILL.md at commit ad9e6558efff5859745698e5b909111c6db97594. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Instructions

      Before executing any phase, determine which phase applies:

      Take baseline: npx playwright screenshot --save-as baseline.pngMake changeDiff: python3 skills/game/game-pipeline/scripts/imgdiff.py baseline.png current.png
    2. 02

      Phase 1: SCAFFOLD

      Goal: Initialize the project and delegate engine-specific setup.

      Goal: Initialize the project and delegate engine-specific setup.Step 2: Initialize project structureassetsindex.json format:
    3. 03

      Phase 2: ASSETS

      Goal: Source or generate game assets and register them in the asset manifest.

      Goal: Source or generate game assets and register them in the asset manifest.Step 1: Audit what existsStep 2: Delegate to game-asset-generator
    4. 04

      Phase 3: DESIGN

      Goal: Add visual polish and "juice" — effects that make a game feel great.

      Goal: Add visual polish and "juice" — effects that make a game feel great.Load reference: Read references/game-designer.md for patterns.Key principle: Design polish wires to the EventBus, not to game logic. Effects can be added, removed, or swapped without touching gameplay code.
    5. 05

      Phase 4: AUDIO

      Goal: Add background music and sound effects using Web Audio API.

      Goal: Add background music and sound effects using Web Audio API.Load reference: Read references/game-audio.md for patterns.Key constraint: Create AudioContext only on first user interaction — browser autoplay policy silently blocks contexts created before a gesture.

    Permission review

    Static risk signals and limitations

    Runs scripts

    medium · line 194

    The documentation asks the agent to run terminal commands or scripts.

    python3 skills/game/game-pipeline/scripts/imgdiff.py baseline.png current.png

    Runs scripts

    medium · line 195

    The documentation asks the agent to run terminal commands or scripts.

    python3 skills/game/game-pipeline/scripts/with_server.py "npx playwright test"

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score93/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars417SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    notque/vexjoy-agent
    Skill path
    skills/game/game-pipeline/SKILL.md
    Commit
    ad9e6558efff5859745698e5b909111c6db97594
    License
    MIT
    Collected
    2026-08-28
    Default branch
    main
    View the original SKILL.md

    Game Pipeline Skill

    Overview

    This skill orchestrates the full game development lifecycle: SCAFFOLD → ASSETS → DESIGN → AUDIO → QA → DEPLOY. Each phase can be entered independently — you do not need to start from SCAFFOLD. The orchestrator never writes game code directly; it delegates each phase to the appropriate engine-specific skill or domain reference.

    Scope: Use for any browser-based game (Three.js, Phaser, or vanilla canvas), cross-cutting concerns that span engines (audio, QA, promo, deploy), and iOS export via Capacitor. Skip Unity/Godot/native engines, non-game web apps, and server-side logic.


    Reference Loading Table

    SignalLoad These FilesWhy
    references/game-audio.mdgame-audio.mdAUDIO
    references/game-qa.mdgame-qa.mdQA
    references/game-designer.mdgame-designer.mdDESIGN
    references/promo-video.mdpromo-video.mdDEPLOY
    references/deploy.mddeploy.mdDEPLOY
    references/capacitor-ios.mdcapacitor-ios.mdDEPLOY
    "3D model", GLB, mesh, rig, meshygame-asset-generator.md, meshyai.md3D model generation
    "environment", "gaussian splat", "world labs"game-asset-generator.md, worldlabs.mdEnvironment generation
    "sprite", "pixel art", "tile", "palette quantize"game-asset-generator.md, pixel-art-sprites.md2D sprite / pixel art
    "image", "texture", "concept art", fal.aigame-asset-generator.md, fal-ai-image.mdImage / texture generation
    "free asset", "find model", "sketchfab"game-asset-generator.md, asset-sources.mdExisting asset sources
    "mocap", "BVH", "motion data", "animation pipeline"motion-pipeline.mdMotion data import / processing
    "contact detection", "IK solve", "FABRIK"motion-pipeline.mdContact / IK solving
    "motion blend", "bone trajectory", "root extraction"motion-pipeline.mdMotion decomposition / blending

    Instructions

    Entry Point Detection

    Before executing any phase, determine which phase applies:

    User requestEntry phase
    "make a game", "start a game", "new game"SCAFFOLD
    "generate assets", "add sprites", "need art"ASSETS
    "add juice", "game feels flat", "particles", "screen shake"DESIGN
    "add audio", "background music", "sound effects"AUDIO
    "test my game", "visual regression", "playwright", "game qa"QA
    "deploy", "ship", "publish", "github pages", "promo video", "ios"DEPLOY

    If the entry phase is not SCAFFOLD, skip to that phase. Phases are independently re-enterable.


    Phase 1: SCAFFOLD

    Goal: Initialize the project and delegate engine-specific setup.

    Step 1: Detect engine

    SignalEngineDelegate to
    import * as THREE, three.js in package.jsonThree.jsthreejs-builder skill
    new Phaser.Game(), phaser in package.jsonPhaserphaser-gamedev skill
    No engine signalAsk user before proceeding

    Step 2: Initialize project structure

    game/
    ├── index.html
    ├── src/
    │   └── main.js
    ├── assets/
    │   └── assets_index.json   # Asset manifest (required for Capacitor iOS)
    └── dist/                   # Build output
    

    assets_index.json format:

    {
      "version": "1.0",
      "assets": {
        "player": "assets/player.png",
        "bgm": "assets/music.ogg"
      }
    }
    

    Step 3: Wire EventBus

    Every game needs an EventBus before any feature — it is the integration contract that lets audio, effects, and analytics attach without touching game logic:

    // src/EventBus.js
    export const EventBus = new EventTarget();
    export const emit = (name, detail = {}) =>
      EventBus.dispatchEvent(new CustomEvent(name, { detail }));
    export const on = (name, fn) =>
      EventBus.addEventListener(name, (e) => fn(e.detail));
    

    Pre-wire these event names so downstream phases attach immediately: ENEMY_HIT, PLAYER_DEATH, LEVEL_UP, GAME_OVER, SCORE_CHANGE, SPECTACLE_*

    Gate: Engine chosen, project structure created, EventBus wired.


    Phase 2: ASSETS

    Goal: Source or generate game assets and register them in the asset manifest.

    Step 1: Audit what exists

    ls assets/
    cat assets/assets_index.json
    

    Step 2: Delegate to game-asset-generator

    Dispatch a subagent with: asset list, art style, output format (PNG spritesheet for Phaser, GLB for Three.js), target path assets/.

    Step 3: Update asset manifest

    After generation, update assets/assets_index.json. This manifest is read by both the web game and the Capacitor iOS wrapper — use relative paths only.

    Gate: All assets generated, manifest updated, assets load in-game without errors.


    Phase 3: DESIGN

    Goal: Add visual polish and "juice" — effects that make a game feel great.

    Load reference: Read references/game-designer.md for patterns.

    Key principle: Design polish wires to the EventBus, not to game logic. Effects can be added, removed, or swapped without touching gameplay code.

    Core effects:

    EffectTrigger eventImpact
    Screen shakeENEMY_HIT, EXPLOSIONImpact weight
    Hit freeze frameENEMY_HIT (big)Dramatic pause
    Particle burstENEMY_HIT, GAME_OVERVisual feedback
    Floating score textSCORE_CHANGEProgress reward
    Combo textCOMBO_REACHEDAchievement surge

    Opening moment rule: The first 3 seconds must hook the player — immediate visual spectacle, never a loading screen or empty scene.

    Gate: At least 3 juice effects wired to EventBus events. Opening moment is compelling. No effects hardcoded into gameplay logic.


    Phase 4: AUDIO

    Goal: Add background music and sound effects using Web Audio API.

    Load reference: Read references/game-audio.md for patterns.

    Key constraint: Create AudioContext only on first user interaction — browser autoplay policy silently blocks contexts created before a gesture.

    AudioManager pattern:

    // src/AudioManager.js
    let ctx = null;
    export function getCtx() {
      if (!ctx) ctx = new AudioContext();
      return ctx;
    }
    

    AudioBridge — wire to EventBus:

    import { on } from './EventBus.js';
    import { getCtx } from './AudioManager.js';
    
    on('ENEMY_HIT', () => playSFX('hit'));
    on('LEVEL_UP',  () => { stopBGM(); startBGM('level2'); });
    on('GAME_OVER', () => playSFX('gameover'));
    

    Volume hierarchy: master gain → category gains (music, sfx, ambient) → individual sources. Never set volume directly on sources.

    Gate: AudioContext created on user interaction only. BGM plays. At least 2 SFX events wired. Volume controls work.


    Phase 5: QA

    Goal: Automated testing via Playwright with visual regression and canvas test seams.

    Load reference: Read references/game-qa.md for patterns.

    Scripts (run from project root):

    python3 skills/game/game-pipeline/scripts/imgdiff.py baseline.png current.png
    python3 skills/game/game-pipeline/scripts/with_server.py "npx playwright test"
    

    Test seam — inject into game bootstrap:

    const TEST_MODE = new URLSearchParams(location.search).get('test') === '1';
    const SEED = parseInt(new URLSearchParams(location.search).get('seed') || '0');
    if (TEST_MODE) window.__TEST__ = { seed: SEED, state: null };
    

    Visual regression workflow:

    1. Take baseline: npx playwright screenshot --save-as baseline.png
    2. Make change
    3. Diff: python3 skills/game/game-pipeline/scripts/imgdiff.py baseline.png current.png
    4. RMS > 5.0 means investigate the diff image

    Gate: At least 1 Playwright test passes. Visual baseline captured. Canvas test seam exists.


    Phase 6: DEPLOY

    Goal: Ship the game to a live URL.

    Load reference: Read references/deploy.md. Load references/capacitor-ios.md if iOS export needed. Load references/promo-video.md if recording gameplay for social.

    Pre-deploy checklist (mandatory before any deploy):

    npm run build
    ls dist/
    grep -r "localhost" dist/ && echo "FAIL: localhost refs" || echo "OK"
    grep -r 'src="/' dist/ && echo "WARN: absolute paths" || echo "OK"
    

    Deploy targets:

    TargetCommandNotes
    GitHub Pagesnpx gh-pages -d distPublic repo or GitHub Pro
    Vercelvercel --prodBest for preview URLs
    Static hostUpload dist/Works anywhere
    iOS (Capacitor)See capacitor-ios.mdRequires Xcode

    Gate: Build succeeds. Deploy URL live. Game loads. No console errors.


    Error Handling

    Error: AudioContext Blocked

    Cause: AudioContext created outside a user gesture handler Fix: Use the getCtx() lazy-init pattern from game-audio.md. First call must happen inside click/keydown handler.

    Error: Playwright Can't Interact With Canvas

    Cause: No test seams, non-deterministic state, or missing readiness signal Fix: Add window.__TEST__ with ?test=1&seed=42. Wait for game.events.once('ready') before asserting. Use render_game_to_text() to expose state as text.

    Error: imgdiff.py FAIL With Unexpected Diff

    Cause: Font rendering or anti-aliasing differences between platforms Fix: python3 skills/game/game-pipeline/scripts/imgdiff.py a.png b.png --tolerance 10.0. If still failing, retake baseline on the same platform.

    Error: Capacitor iOS Build Fails

    Cause: Absolute paths in dist/, missing webDir config, or CocoaPods conflict Fix: All asset paths must be relative. Check capacitor.config.ts has webDir: 'dist'. Capacitor 5+ uses SPM — run npx cap sync, not pod install. See capacitor-ios.md.

    Error: Assets Missing After Deploy

    Cause: Absolute asset paths (/assets/player.png instead of assets/player.png) Fix: grep -r '"/assets/' dist/. Fix paths in build config or source — use relative paths everywhere.

    Error: Promo Video Looks Choppy

    Cause: Screenshot rate too slow or FFmpeg framerate mismatch Fix: Use CDP screencast instead of screenshot loop. Set game speed to 0.5 before recording, encode with -r 50 in FFmpeg. See promo-video.md.


    References

    ReferencePhaseContent
    references/game-audio.mdAUDIOWeb Audio API: AudioManager, BGM sequencer, SFX pool, AudioBridge, volume hierarchy
    references/game-qa.mdQAPlaywright: visual regression, canvas seams, deterministic mode, imgdiff patterns
    references/game-designer.mdDESIGNJuice: particles, screen shake, hit freeze, combo text, spectacle events
    references/promo-video.mdDEPLOYSlow-mo trick, Playwright recording, FFmpeg assembly, mobile portrait format
    references/deploy.mdDEPLOYGitHub Pages, Vercel, static hosting, pre-deploy checklist
    references/capacitor-ios.mdDEPLOYCapacitor 5+ iOS: SPM setup, asset contracts, touch controls, debugging
    references/game-asset-generator.mdASSETSGame asset generation: 3D models, environments, sprites, textures, free sources
    references/meshyai.mdASSETSMeshy API: text-to-3D, image-to-3D, rig, animate, optimize-glb
    references/worldlabs.mdASSETSWorld Labs Marble API: SPZ generation, SplatMesh renderer, Y-flip
    references/fal-ai-image.mdASSETSfal.ai: model endpoints, queue API, cost tracking, chroma-key
    references/asset-sources.mdASSETSSketchfab, Poly Haven, Poly.pizza search and download
    references/pixel-art-sprites.mdASSETSCanvas sprite matrices, palette system, animation frames
    references/motion-pipeline.mdASSETSCPU-only motion pipeline: BVH import, contacts, decompose, blend, IK

    Frequently asked questions

    What to verify before installation and use

    What does the game-pipeline source document cover?

    Game lifecycle orchestrator: scaffold, assets, audio, QA, deploy.

    How do I install game-pipeline?

    The source record exposes this install command: npx skills add https://github.com/notque/vexjoy-agent --skill "skills/game/game-pipeline". Inspect the command and pinned source before running it.

    Which permission-related actions were detected?

    Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.

    Alternatives

    Compare before choosing

    Computed 9982

    vasilyu1983/AI-Agents-public

    qa-testing-ios

    Guides iOS testing with XCTest, XCUITest, Swift Testing, simctl, and xcresult. Use when choosing destinations, controlling flakes, or parsing test artifacts for native apps.

    Computed 97198

    microsoft/Sico

    android-tester

    Execute Android UI workflows on a sandbox device, review results, and produce a structured execution report.

    Computed 9645

    objectstack-ai/objectstack

    objectstack-platform

    Bootstrap, configure, extend, and operate ObjectStack runtimes. Covers project setup (`defineStack`, drivers, adapters, scaffolding), plugin and service development (PluginContext, DI, kernel hooks like `kernel:ready`), and operations (CLI commands, migrations, deployment, test harnesses via LiteKernel). Use when the user is writing `objectstack.config.ts`, building a plugin or driver, wiring a framework adapter, running `os` CLI commands, or planning deployment. Do not use for data schema desig

    Computed 9414

    OpenDigitalProductFactory/opendigitalproductfactory

    dev-portal-start

    Use when a DPF contributor needs to verify worktree edits on the **Contributor preview** runtime (port 3001) without rebuilding the Live portal image. Triggers — making any edit under apps/web/ that needs visual or HTTP-level confirmation; iterating on /build, /platform, /admin, or any other server-rendered route; debugging a UX change against real workspace data; reproducing a customer-visible bug in a worktree before opening a PR. This is a CONTRIBUTOR-ONLY workflow; customer installs do not s