Shadcn Tailwind UI
LiarMTTT/TavernWeave
Build, restyle, or review accessible React interfaces that use shadcn/ui, Radix UI primitives, and Tailwind CSS.
Use this skill first in a Harness Phaser workspace. An agent skill from autonomous-ai/openharness.
$ npx skills add autonomous-ai/openharness --skill harness-phaser -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install autonomous-ai/openharness harness-phaser --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "harness-phaser" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/harness-phaser into .claude/skills/harness-phaser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-phaser", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/harness-phaserType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add autonomous-ai/openharness --skill harness-phaser -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install autonomous-ai/openharness harness-phaser --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/store/agents/phaser/skills/harness-phaser .agents/skills/harness-phaser && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "harness-phaser" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/harness-phaser into .agents/skills/harness-phaser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-phaser", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add autonomous-ai/openharness --skill harness-phaser -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install autonomous-ai/openharness harness-phaser --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/store/agents/phaser/skills/harness-phaser .cursor/skills/harness-phaser && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "harness-phaser" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/harness-phaser into .cursor/skills/harness-phaser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-phaser", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/autonomous-ai/openharness.git --path store/agents/phaser/skills/harness-phaser--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add autonomous-ai/openharness --skill harness-phaser -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install autonomous-ai/openharness harness-phaser --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/store/agents/phaser/skills/harness-phaser .gemini/skills/harness-phaser && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "harness-phaser" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/harness-phaser into .gemini/skills/harness-phaser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-phaser", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install autonomous-ai/openharness harness-phaserInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add autonomous-ai/openharness --skill harness-phaser -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .github/skills && cp -r skills-src/store/agents/phaser/skills/harness-phaser .github/skills/harness-phaser && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "harness-phaser" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/harness-phaser into .github/skills/harness-phaser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-phaser", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add autonomous-ai/openharness --skill harness-phaser -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install autonomous-ai/openharness harness-phaser --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/store/agents/phaser/skills/harness-phaser .opencode/skills/harness-phaser && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "harness-phaser" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/harness-phaser into .opencode/skills/harness-phaser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-phaser", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
harness-phaserUse 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. 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.
Read from SKILL.md and the folder at commit 50da5db. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
python3npmpythonFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from autonomous-ai/openharness at commit 50da5db, republished under its MIT licence (© autonomous-ai). 700 words, ~1,938 tokens.
.claude/skills/harness-phaser/SKILL.md (or your agent's skills folder).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
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>.
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:
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.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.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.npm run dev, vite preview, python -m http.server). The port
is taken and the pane is already pointed at it.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:
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.
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:
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.
A fresh workspace has no images and needs none. Draw once, bake to a texture, use it like any other:
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.
python3 "$PHASER_TOOLCHAIN/verdict.py" # after every change
python3 "$PHASER_TOOLCHAIN/verdict.py" --no-build # a fast pass; leaves Build unverifiedIt writes .harness/verdict.json and prints the same thing. Three phases:
| Phase | What it means |
|---|---|
| Write | src/main.js exists and a file declares a scene |
| Build | vite 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 |
| Play | a 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
Just SKILL.md in store/agents/phaser/skills/harness-phaser of autonomous-ai/openharness.
Open the folder on GitHubat commit 50da5db
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Harness Phaser this skillautonomous-ai/openharness | 1.1k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Shadcn Tailwind UILiarMTTT/TavernWeave | 150 | — | ~1.7k | Automated safety check: Pass | Custom licence | |
| Algorithmic Art with p5.jsanthropics/skills | 180k | 38 repos | ~4.9k | Automated safety check: Pass | Apache-2.0 | |
| Canvas Designanthropics/skills | 180k | 52 repos | ~3k | Automated safety check: Pass | Apache-2.0 | |
| Photo Abstract EditorialZzzLc0405/photo-abstract-editorial | 5.9k | — | ~815 | Automated safety check: Pass | Proprietary | |
| Mono Coloryanliudesign/mono-color-skill | 3.4k | — | ~8.5k | Automated safety check: Pass | MIT |
LiarMTTT/TavernWeave
Build, restyle, or review accessible React interfaces that use shadcn/ui, Radix UI primitives, and Tailwind CSS.
anthropics/skills
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.
anthropics/skills
Creates original posters and static art as PNG or PDF by first writing a short design philosophy, then expressing it visually on a canvas.
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.
yanliudesign/mono-color-skill
Generate original one-ink or controlled two-ink editorial images from any theme, sentence, article idea, object, or reference photo.
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.
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.
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.
autonomous-ai/openharness
Turns a musical brief into LilyPond concert-pitch music, checked parts for each instrument and a playable practice pack.
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.
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.
autonomous-ai/openharness
Dry-run, upload, and cautiously initiate local Bambu Lab print jobs from validated plain .gcode, using Bambu LAN FTPS/MQTT handoffs.
Works with
Categories
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.
Harness Phaser fits situations like: workspace layout; tasks that involve Generative and creative coding.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.