Agent skill

Harness Phaser

by autonomous-ai in autonomous-ai/openharness

Use this skill first in a Harness Phaser workspace. An agent skill from autonomous-ai/openharness.

MITAuto-check passedMedia & Creative

Install Harness Phaser

skills CLI
$ npx skills add autonomous-ai/openharness --skill harness-phaser -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install autonomous-ai/openharness harness-phaser --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/store/agents/phaser/skills/harness-phaser .claude/skills/harness-phaser && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
harness-phaser
GitHub stars
1.1k
Token cost
~1.9k tokens
SKILL.md length
700 words
Files
1
Skills in repo
100
Repo updated
First seen
Licence
MIT

At a glance

Use this skill first in a Harness Phaser workspace. An agent skill from autonomous-ai/openharness.

  • Workspace layout
  • SKILL.md covers The workspace, The pane is a Vite dev server, Keyboard focus: the rule that… and Art without asset files, plus 1 more section
  • Calls python3, npm and python
  • Tasks that involve Generative and creative coding

What it does

Harness Phaser is an agent skill from autonomous-ai/openharness. Use this skill first in a Harness Phaser workspace. The project layout, the Vite dev-server pane and its live reload, the webview keyboard-focus rule (click-to-play gate and on-screen touch buttons), procedural art with no asset files, and .harness/verdict.json. Triggers on: Harness, the pane, dev server, keyboard focus, click to play, touch buttons, verdict, workspace layout, new game.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Media & Creative, covering Generative and creative coding. It works with Vite. The repository describes itself as: The ultimate harness for coding agents and beyond. All your agents. All your machines. One command center. Start with code, then follow your curiosity and build across… The licence is MIT.

When your agent uses it

  • Workspace layout
  • Tasks that involve Generative and creative coding

Example prompts

  • “/harness-phaser”

Requirements

  • Python 3
  • Node.js

What it can do on your machine

Read from SKILL.md and the folder at commit 50da5db. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3
    • npm
    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Harness Phaser loads about 1.9k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 700 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~101
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from autonomous-ai/openharness at commit 50da5db, republished under its MIT licence (© autonomous-ai). 700 words, ~1,938 tokens.

Download SKILL.mdSave it as .claude/skills/harness-phaser/SKILL.md (or your agent's skills folder).
name
harness-phaser
description
Use this skill first in a Harness Phaser workspace. The project layout, the Vite dev-server pane and its live reload, the webview keyboard-focus rule (click-to-play gate and on-screen touch buttons), procedural art with no asset files, and .harness/verdict.json. Triggers on: Harness, the pane, dev server, keyboard focus, click to play, touch buttons, verdict, workspace layout, new game.

harness-phaser

How a Phaser game is built inside a Harness workspace: where the files go, what the pane is, why the first scene must wait for a click, and what the verdict checks.

Related skills: ../game-setup-and-config/SKILL.md, ../scenes/SKILL.md, ../input-keyboard-mouse-touch/SKILL.md, ../graphics-and-shapes/SKILL.md, ../scale-and-responsive/SKILL.md

The workspace

index.html          loaded by the pane; script tag → /src/main.js
vite.config.mjs     960×540 FIT, base './', build.outDir 'out/dist', cacheDir '.vite'
src/main.js         new Phaser.Game({...}) — config and the scene list. The entry; keep the name.
src/scenes/*.js     one class per file, `export default class X extends Phaser.Scene`
src/touch.js        touchPad(scene, labels) → on-screen controls
public/             served at the root: /style.css, and any real asset files
out/dist/           the production build, written by the verdict. Generated; never edit.
node_modules        a SYMLINK to the Harness package's shared install. Never npm install here.
.harness/verdict.json   the pane header. Written by the verdict script only.

Phaser is 4.2.1, loaded as a module: import Phaser from 'phaser'; at the top of every file that names it. There is no global Phaser and no <script src>.

The pane is a Vite dev server

Harness runs Vite's dev server on the workspace (with this vite.config.mjs, on its own port) and shows the game beside the terminal, in a frame with screen sizes, pause, restart, a physics-debug toggle and full screen. That means:

  • Saving a file reloads the game. No build step, no refresh, no URL to print. A module with export default class ... extends Phaser.Scene reloads through a full page reload. The pane then takes the player back to the scene they were in, once the scene before it (the title, the preloader) is running again — so a scene must work when started directly with scene.start(key) and its own init data; if it crashes that way, the pane falls back to the first scene.
  • Errors are shown, not hidden. A syntax error, an unresolved import or an exception in create() appears in the pane as a card with the file, the line and the code around it, and clears on the next good save. The verdict still reports build errors for the header.
  • The controls hint under the pane is read from the keys the running scene registers (createCursorKeys, addKeys, keyboard.on('keydown-X')) and whether it listens for the pointer. To say it in words instead, put <meta name="harness:controls" content="←→ move · SPACE jump"> in index.html.
  • Never start a second server (npm run dev, vite preview, python -m http.server). The port is taken and the pane is already pointed at it.
  • An error card in the pane is a JavaScript error, not a Phaser problem. Run the verdict: the Vite build reports the same error with a file and a line.

Keyboard focus: the rule that makes or breaks the game

The pane is a WKWebView. It does not receive key events until the player clicks inside it. A game that starts straight into update() reading cursors.left.isDown looks broken — it draws, it just never moves.

Every game therefore opens on a gate:

js
export default class Title extends Phaser.Scene {
    constructor() { super('Title'); }

    create() {
        const { width, height } = this.scale;
        this.add.text(width / 2, height / 2 - 40, 'SPACE RUNNER', {
            fontFamily: 'ui-sans-serif, sans-serif', fontSize: '64px', color: '#e9ecf5'
        }).setOrigin(0.5);
        const hint = this.add.text(width / 2, height / 2 + 50, 'Click to play', {
            fontFamily: 'ui-sans-serif, sans-serif', fontSize: '30px', color: '#06d6a0'
        }).setOrigin(0.5);
        this.tweens.add({ targets: hint, alpha: 0.2, duration: 700, yoyo: true, repeat: -1 });
        this.add.text(width / 2, height - 56, '←  →   move    ·    SPACE   jump', {
            fontFamily: 'ui-monospace, monospace', fontSize: '16px', color: '#6b7794'
        }).setOrigin(0.5);

        // The click starts the game AND gives the webview its keyboard focus.
        this.input.once('pointerdown', () => this.scene.start('Play'));
    }
}

The prompt must say click, not "press any key" — a key press cannot arrive yet. Put the controls on the title screen too: the pane is where the user reads them.

Show full SKILL.md (276 more words)Show less
On-screen controls, always worth adding

Pointer input needs no focus at all, so a pad makes the game playable before the click and on a phone. src/touch.js in the template:

js
import { touchPad } from '../touch.js';

create() {
    this.cursors = this.input.keyboard.createCursorKeys();
    this.keys = this.input.keyboard.addKeys('A,D,SPACE');
    this.pad = touchPad(this, { space: 'JUMP' });   // { space: null } for no action button
}

update() {
    const left  = this.cursors.left.isDown  || this.keys.A.isDown || this.pad.left;
    const right = this.cursors.right.isDown || this.keys.D.isDown || this.pad.right;
    const jump  = this.cursors.space.isDown || this.keys.SPACE.isDown || this.pad.space;
}

Each button is a Rectangle with setInteractive() and pointerdown/pointerup/pointerout handlers flipping a boolean, at setScrollFactor(0).setDepth(1000) so a moving camera leaves it alone. Write your own variant when the game needs a different set (a d-pad, two action buttons).

Also avoid keys the browser keeps: Cmd/Ctrl combinations, F-keys, Tab. Arrows, WASD, space, Z/X and Enter are all free.

Art without asset files

A fresh workspace has no images and needs none. Draw once, bake to a texture, use it like any other:

js
preload() {
    const g = this.add.graphics();
    g.fillStyle(0xffd166, 1).fillRoundedRect(0, 0, 48, 48, 8);
    g.fillStyle(0x0b0d12, 1).fillCircle(16, 18, 4).fillCircle(32, 18, 4);
    g.generateTexture('player', 48, 48);
    g.destroy();                      // one Graphics object, cleared and reused, then dropped
}

create() {
    this.player = this.physics.add.image(120, 300, 'player');
}

generateTexture goes through the Canvas API, so gradients (fillGradientStyle) do not survive it — use flat fills, or a Gradient game object instead. Shapes (this.add.rectangle, .circle, .triangle, .star) are fine for HUD and background, but a physics body is happier on an image. Real assets, when the user supplies them, go in public/ and load as /name.png.

The verdict

sh
python3 "$PHASER_TOOLCHAIN/verdict.py"             # after every change
python3 "$PHASER_TOOLCHAIN/verdict.py" --no-build  # a fast pass; leaves Build unverified

It writes .harness/verdict.json and prints the same thing. Three phases:

PhaseWhat it means
Writesrc/main.js exists and a file declares a scene
Buildvite build --outDir out/dist succeeded — the compile check; a syntax error, a bad import or an unresolved module becomes a finding with its file and line
Playa scene has a create() and the game handles input; a missing click-to-play gate is an info, not a failure

ready is true when it builds and something would respond to the player. Run it after every pass, not at the end: the header is how the user sees progress. Never write the file by hand.

© autonomous-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in store/agents/phaser/skills/harness-phaser of autonomous-ai/openharness.

Open the folder on GitHubat commit 50da5db

Compare with similar skills

Harness Phaser next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Harness Phaser compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Harness Phaser this skillautonomous-ai/openharness1.1k—~1.9kAutomated safety check: PassMIT
Shadcn Tailwind UILiarMTTT/TavernWeave150—~1.7kAutomated safety check: PassCustom licence
Algorithmic Art with p5.jsanthropics/skills180k38 repos~4.9kAutomated safety check: PassApache-2.0
Canvas Designanthropics/skills180k52 repos~3kAutomated safety check: PassApache-2.0
Photo Abstract EditorialZzzLc0405/photo-abstract-editorial5.9k—~815Automated safety check: PassProprietary
Mono Coloryanliudesign/mono-color-skill3.4k—~8.5kAutomated safety check: PassMIT

Similar skills

  • Shadcn Tailwind UI

    LiarMTTT/TavernWeave

    Build, restyle, or review accessible React interfaces that use shadcn/ui, Radix UI primitives, and Tailwind CSS.

    150 GitHub stars~1.7k tokensUpdated 4 days ago
    Frontend & DesignAuto-check passed
  • Official

    Creates original generative art in two steps: a written algorithmic philosophy, then a p5.js sketch with seeded randomness and an interactive viewer for exploring parameters.

    180k GitHub starsUsed in 38 repos~4.9k tokens
    Media & CreativeAuto-check passed
  • Canvas Design

    anthropics/skills

    Official

    Creates original posters and static art as PNG or PDF by first writing a short design philosophy, then expressing it visually on a canvas.

    180k GitHub starsUsed in 52 repos~3k tokens
    Media & CreativeAuto-check passed
  • Photo Abstract Editorial

    ZzzLc0405/photo-abstract-editorial

    Creates one vertical editorial image from an uploaded photo, keeping the photo untouched and adding an abstract panel and short English title derived from it.

    5.9k GitHub stars~815 tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed
  • Mono Color

    yanliudesign/mono-color-skill

    Generate original one-ink or controlled two-ink editorial images from any theme, sentence, article idea, object, or reference photo.

    3.4k GitHub stars~8.5k tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed
  • Gathered Scenes Zine Poster

    Zeejay0/gathered-scenes-zine-skill

    Turns a photo into a tactile collage poster where part stays an untouched photographic anchor and the rest becomes a simplified, color-fading illustration of the hidden scene.

    5.3k GitHub stars~3.8k tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed

More from autonomous-ai/openharness

All 100 skills in this repo
  • G-code Slicer Tool

    autonomous-ai/openharness

    Slices 3D mesh files into printer-profiled plain G-code through real slicer CLIs, with backend discovery, input inspection, dry runs and static validation.

    1.1k GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Home Assistant Automation Builder

    autonomous-ai/openharness

    Turns a home-automation request into standard, testable automations.yaml, run against Home Assistant Core's real triggers and verified with its own trace tool.

    1.1k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Score Music Composer

    autonomous-ai/openharness

    Turns a musical brief into LilyPond concert-pitch music, checked parts for each instrument and a playable practice pack.

    1.1k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • OrcaSlicer 3MF and G-code Workflow

    autonomous-ai/openharness

    Turns an STL and explicit printer and material requirements into compared OrcaSlicer plans, an editable 3MF project, checked G-code and a portable handoff.

    1.1k GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Sheets and Docs Report Builder

    autonomous-ai/openharness

    Builds an editable DOCX report, a formula-driven XLSX workbook and a fresh LibreOffice PDF preview from one structured source file, then checks them together.

    1.1k GitHub stars~708 tokensUpdated today
    Auto-check passed
  • Bambu Labs

    autonomous-ai/openharness

    Dry-run, upload, and cautiously initiate local Bambu Lab print jobs from validated plain .gcode, using Bambu LAN FTPS/MQTT handoffs.

    1.1k GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check: warnings

Works with

Questions about Harness Phaser

What does Harness Phaser do?

Use this skill first in a Harness Phaser workspace. An agent skill from autonomous-ai/openharness. Harness Phaser is an agent skill from autonomous-ai/openharness. Use this skill first in a Harness Phaser workspace.

When should I use Harness Phaser?

Harness Phaser fits situations like: workspace layout; tasks that involve Generative and creative coding.

How do I install Harness Phaser in Claude Code?

Run `npx skills add autonomous-ai/openharness --skill harness-phaser -a claude-code`. Or copy the skill folder (store/agents/phaser/skills/harness-phaser in autonomous-ai/openharness) into .claude/skills/harness-phaser in your project. Claude Code loads it when a task matches its description.

How do I install Harness Phaser in Codex?

Run `npx skills add autonomous-ai/openharness --skill harness-phaser -a codex`. Or copy the skill folder (store/agents/phaser/skills/harness-phaser in autonomous-ai/openharness) into .agents/skills/harness-phaser in your project. Codex loads it when a task matches its description.

Can I use Harness Phaser in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add autonomous-ai/openharness --skill harness-phaser -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/harness-phaser, .gemini/skills/harness-phaser, .github/skills/harness-phaser and .opencode/skills/harness-phaser in your project.

What does Harness Phaser need to run?

Going by SKILL.md and its folder, Harness Phaser needs the command-line tools its instructions call (python3, npm and python). Our summary lists: Python 3; Node.js.

Does Harness Phaser access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Harness Phaser safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Harness Phaser use?

Harness Phaser is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Harness Phaser use?

About 1.9k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Harness Phaser?

Skills that share tags, products or a category with Harness Phaser: Shadcn Tailwind UI (LiarMTTT/TavernWeave, 150 stars), Algorithmic Art with p5.js (anthropics/skills, 180k stars), Canvas Design (anthropics/skills, 180k stars) and Photo Abstract Editorial (ZzzLc0405/photo-abstract-editorial, 5.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Harness Phaser?

autonomous-ai (a GitHub organization) maintains it in autonomous-ai/openharness, which has 1,149 GitHub stars. The repository holds 100 skills in this directory. The repository was last updated on October 8, 2026.

Source: autonomous-ai/openharness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.