Agent skill

Pixijs HTML Source

by netaart in netaart/cohub

A skill your agent uses when rendering live HTML/DOM elements (or frozen snapshots of them) as PixiJS v8 textures via the EXPERIMENTAL HTML-in-Canvas browser APIs.

MITAuto-check passed

Install Pixijs HTML Source

skills CLI
$ npx skills add netaart/cohub --skill pixijs-html-source -a claude-code

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

GitHub CLI
$ gh skill install netaart/cohub pixijs-html-source --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/netaart/cohub.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/pixijs-html-source .claude/skills/pixijs-html-source && 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
pixijs-html-source
GitHub stars
570
Used in
1 other repo
Token cost
~3.3k tokens
SKILL.md length
973 words
Files
1
Skills in repo
29
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when rendering live HTML/DOM elements (or frozen snapshots of them) as PixiJS v8 textures via the EXPERIMENTAL HTML-in-Canvas browser APIs.

  • Rendering live HTML/DOM elements (or frozen snapshots of them) as PixiJS v8 textures via the EXPERIMENTAL HTML-in-Canvas browser APIs
  • SKILL.md covers Quick Start, Constructor options, Core Patterns and Common Mistakes, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • ElementImageSource

What it does

Pixijs HTML Source is an agent skill from netaart/cohub. Use this skill when rendering live HTML/DOM elements (or frozen snapshots of them) as PixiJS v8 textures via the EXPERIMENTAL HTML-in-Canvas browser APIs. Covers the pixi.js/html-source side-effect import, feature-detection with canvas.requestPaint, HTMLSource for a live, repainting element kept interactive in the browser (autoLayout/autoUpdate/autoRequestPaint, requestPaint, isReady, the direct-child-of-canvas + layoutsubtree requirement), ElementImageSource for an immutable captureElementImage() snapshot…

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

The repository describes itself as: A living space where people and agents create, play, and build together. The licence is MIT.

When your agent uses it

  • Rendering live HTML/DOM elements (or frozen snapshots of them) as PixiJS v8 textures via the EXPERIMENTAL HTML-in-Canvas browser APIs
  • ElementImageSource
  • Pixi.js/html-source
  • CaptureElementImage

Example prompts

  • “/pixijs-html-source”

What it can do on your machine

Read from SKILL.md and the folder at commit 3ef6c78. 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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

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

  • Network

    Links to these hosts (documentation or services it may open):

    • pixijs.download

    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

Pixijs HTML Source loads about 3.3k tokens when it runs. Until then it costs about 244 tokens; SKILL.md has 973 words of instructions outside code blocks.

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

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 netaart/cohub at commit 3ef6c78, republished under its MIT licence (© netaart). 973 words, ~3,256 tokens.

Download SKILL.mdSave it as .claude/skills/pixijs-html-source/SKILL.md (or your agent's skills folder).
name
pixijs-html-source
description
Use this skill when rendering live HTML/DOM elements (or frozen snapshots of them) as PixiJS v8 textures via the EXPERIMENTAL HTML-in-Canvas browser APIs. Covers the pixi.js/html-source side-effect import, feature-detection with canvas.requestPaint, HTMLSource for a live, repainting element kept interactive in the browser (autoLayout/autoUpdate/autoRequestPaint, requestPaint, isReady, the direct-child-of-canvas + layoutsubtree requirement), ElementImageSource for an immutable captureElementImage() snapshot (autoClose, ready immediately), using the source on a Sprite/Texture/Mesh, fallback-only auto-detection via Texture.from at priority -10, and destroy/cleanup. Triggers on: HTMLSource, ElementImageSource, pixi.js/html-source, requestPaint, captureElementImage, ElementImage, layoutsubtree, autoRequestPaint, autoUpdate, autoClose, HTML in canvas, render DOM to texture, HTMLSourceOptions, ElementImageSourceOptions, HTMLSourceCanvas, experimental.
license
MIT
disable-model-invocation
true

HTMLSource and ElementImageSource turn a DOM element into a TextureSource you can use anywhere a normal texture works: on a Sprite, as a Texture frame, or mapped onto a Mesh. HTMLSource mirrors a live element's pixels into the GPU (the element stays editable and clickable in the browser); ElementImageSource wraps an immutable snapshot that never repaints. Both require a side-effect import 'pixi.js/html-source' to register their extensions.

These sources rely on the experimental HTML-in-Canvas browser proposal and are marked EXPERIMENTAL in PixiJS v8. The browser API must be enabled or the texture uploader throws on first render; feature-detect with canvas.requestPaint before relying on it. The API may change between minor releases.

Assumes familiarity with pixijs-scene-sprite and textures. These are texture sources, not display objects: wrap them in a Sprite (or Texture/Mesh) to put them on screen. Not available in Web Workers; a worker has no DOM to capture.

Quick Start

ts
import "pixi.js/html-source";
import { Application, Sprite } from "pixi.js";
import { HTMLSource } from "pixi.js/html-source";

const app = new Application();
await app.init({ resizeTo: window });
document.body.appendChild(app.canvas);

// The element must be a direct child of the Pixi canvas.
const form = document.createElement("form");
form.innerHTML = '<input value="still editable" />';
app.canvas.appendChild(form);

// Render the live form as a sprite. It stays interactive in the browser.
const source = new HTMLSource({ resource: form });
const sprite = Sprite.from(source);

sprite.anchor.set(0.5);
sprite.position.set(app.screen.width / 2, app.screen.height / 2);
app.stage.addChild(sprite);

Related skills: pixijs-scene-sprite (display the texture), pixijs-scene-mesh (map onto geometry, PerspectiveMesh), pixijs-scene-dom-container (the opposite: overlay HTML above the canvas, outside the GPU pipeline), pixijs-assets (texture sources vs the loader/cache), pixijs-environments (no DOM in Web Workers).

Constructor options

Both sources extend TextureSource, so all TextureSourceOptions (resolution, scaleMode, addressMode, label, etc.) are valid. resource is required on each.

HTMLSourceOptions (live element):

OptionTypeDefaultDescription
resourceElement—Required. The live DOM element to render. Must be a direct child of the owning canvas, or the constructor throws.
canvasHTMLSourceCanvas—The canvas that owns the element's layout subtree. Inferred from resource.parentElement when the element is a direct canvas child; pass it when inference is not possible.
autoLayoutbooleantrueSet the layoutsubtree attribute on the owning canvas. The browser only lays out and paints canvas children when it is present. Set false if you write <canvas layoutsubtree> yourself.
autoUpdatebooleantrueListen for the canvas paint event and re-upload when the element repaints. Set false for a static, captured-once texture.
autoRequestPaintbooleantrueRequest one initial paint after construction. Set false and call source.requestPaint() yourself each frame for continuous animation.

ElementImageSourceOptions (immutable snapshot):

OptionTypeDefaultDescription
resourceElementImage—Required. A snapshot from canvas.captureElementImage(element).
autoClosebooleanfalseCall snapshot.close() when the source is destroyed. Leave false when the snapshot is shared with other sources, or you risk a use-after-free.

Core Patterns

Setup and the side-effect import
ts
import "pixi.js/html-source";
import { HTMLSource, ElementImageSource } from "pixi.js/html-source";

pixi.js/html-source calls extensions.add(...) to register HTMLSource, ElementImageSource, and their WebGL/WebGPU uploaders. Without it, the renderer has no 'html' uploader and these sources never render. The classes are exported from pixi.js/html-source, not pixi.js.

Importing a named export from pixi.js/html-source also triggers the side effect, so a bare import 'pixi.js/html-source' is only needed when you don't import anything else from that path.

Feature detection and browser support

The HTML-in-Canvas API is gated behind a browser flag. Feature-detect before relying on it:

ts
import type { HTMLSourceCanvas } from "pixi.js/html-source";

const canvas = app.canvas as HTMLSourceCanvas;

if (canvas.requestPaint) {
  // HTML-in-Canvas is available.
}

Cast app.canvas to HTMLSourceCanvas for the typed requestPaint and captureElementImage members. source.requestPaint() returns false when the browser lacks the API; the texture uploader throws on first render when it is disabled.

Live element with HTMLSource
ts
const form = document.createElement("form");
app.canvas.appendChild(form); // direct child of the canvas

const source = new HTMLSource({ resource: form });
const sprite = Sprite.from(source);

The element must be a direct child of the renderer's <canvas>; the source infers the owning canvas from resource.parentElement (or pass canvas). With the defaults, it sets layoutsubtree on the canvas, listens for the canvas paint event, and requests one initial paint. source.isReady is false until that first paint lands, then true. resourceWidth/resourceHeight report the element's real-pixel size (offsetWidth/offsetHeight).

Continuous animation with requestPaint
ts
const source = new HTMLSource({ resource: clock, autoRequestPaint: false });
const sprite = Sprite.from(source);

app.ticker.add(() => {
  clock.textContent = new Date().toLocaleTimeString();
  source.requestPaint(); // re-snapshot the DOM this frame
});

The browser only repaints canvas children on demand. For an element whose content changes every frame, set autoRequestPaint: false and call source.requestPaint() in your own ticker to drive repaints on your schedule.

Show full SKILL.md (382 more words)Show less
Immutable snapshot with ElementImageSource
ts
import { ElementImageSource } from "pixi.js/html-source";
import type { HTMLSourceCanvas } from "pixi.js/html-source";

const canvas = app.canvas as HTMLSourceCanvas;
const snapshot = canvas.captureElementImage!(element);

const source = new ElementImageSource({ resource: snapshot, autoClose: true });
const sprite = Sprite.from(source);

captureElementImage() freezes an element's current pixels into an immutable ElementImage. There is no owning canvas, no paint listener, and no repaint lifecycle, so the source is ready the moment it is constructed. Reach for it when you need a frozen copy that outlives its element or is transferred around (transitions, "shatter" or trail effects). Release the snapshot with snapshot.close() when done, or pass autoClose: true to let the source close it on destroy().

Using the source on a sprite, texture, or mesh

Both sources are normal TextureSources. Wrap them with Sprite.from(source) / Texture.from(source), frame or slice them into sub-textures, or map them onto a mesh:

ts
import { Rectangle, Texture } from "pixi.js";

// A 64x64 slice of the rendered element.
const chunk = new Texture({
  source,
  frame: new Rectangle(0, 0, 64, 64),
});

// Mapped onto geometry (e.g. a perspective warp).
const mesh = new PerspectiveMesh({ texture: Texture.from(source) /* ... */ });
Auto-detection and priority
ts
// Resolves to an HTMLSource (element) or ElementImageSource (snapshot) only as a last resort.
const sprite = Sprite.from(elementAlreadyInTheCanvas);

A generic HTML element or an ElementImage passed to Texture.from/Sprite.from resolves to these sources at the lowest texture-source priority (-10), so they only claim a resource no other built-in source handles. Image, video, and canvas elements are deliberately rejected; they have dedicated, faster sources. Construct the source explicitly when you need options (autoUpdate, autoClose) or non-HTML elements such as SVG.

Common Mistakes

[HIGH] Not importing pixi.js/html-source

Wrong:

ts
import { HTMLSource } from "pixi.js/html-source";
// ...but never importing the side effect, in a build that tree-shakes it away

Correct:

ts
import "pixi.js/html-source";
import { HTMLSource } from "pixi.js/html-source";

The 'html' uploaders are registered by the side-effect import. Without it, the source has no uploader and the texture never renders.

[HIGH] Assuming the browser API is enabled

The HTML-in-Canvas proposal is not shipped by default. If the API is disabled, the uploader throws on first render. Feature-detect first:

ts
const canvas = app.canvas as HTMLSourceCanvas;
if (!canvas.requestPaint) {
  // Fall back to a static image, DOMContainer overlay, or a message.
}
[MEDIUM] Element not a direct child of the canvas
ts
document.body.appendChild(form); // wrong parent
const source = new HTMLSource({ resource: form }); // throws

HTMLSource requires the element to be a direct child of the owning canvas (app.canvas.appendChild(form)) and throws otherwise. Append the element to the canvas before constructing the source, or pass the canvas option.

[MEDIUM] Expecting a live element to update without requestPaint

A non-animating element updates automatically on browser paint events (autoUpdate: true). Content that changes every frame will not re-upload unless something triggers a paint; drive it with source.requestPaint() each frame (with autoRequestPaint: false).

[MEDIUM] Closing an ElementImage still in use
ts
const source = new ElementImageSource({ resource: snapshot, autoClose: true });
const other = new ElementImageSource({ resource: snapshot }); // shares the snapshot

source.destroy(); // closes the snapshot — `other` is now a use-after-free

Only set autoClose: true when the source owns the snapshot exclusively. For a shared snapshot, leave autoClose off and call snapshot.close() once, after the last source is destroyed.

Cleanup

ts
source.destroy();

HTMLSource.destroy() detaches the canvas paint listener and nulls its canvas reference. ElementImageSource.destroy() closes the snapshot when autoClose was set; otherwise call snapshot.close() yourself to release the memory.

API Reference

© netaart, 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 .agents/skills/pixijs-html-source of netaart/cohub.

Open the folder on GitHubat commit 3ef6c78

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in netaart/cohub, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Pixijs HTML Source 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.

Pixijs HTML Source compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pixijs HTML Source this skillnetaart/cohub5701 repos~3.3kAutomated safety check: PassMIT
Pixijs Renderinggamedev-skills/awesome-gamedev-agent-skills1.3k—~2.3kAutomated safety check: PassApache-2.0
Dom Sizethedaviddias/Front-End-Checklist74k—~390Automated safety check: PassMIT
Decorative Elementsthedaviddias/Front-End-Checklist74k—~672Automated safety check: PassMIT
Render Blockingthedaviddias/Front-End-Checklist74k—~430Automated safety check: PassMIT
Html5 Semantic Elementsthedaviddias/Front-End-Checklist74k—~449Automated safety check: PassMIT

Similar skills

  • Pixijs Rendering

    gamedev-skills/awesome-gamedev-agent-skills

    Build a PixiJS v8 render layer: create the async Application, load textures with Assets, compose the scene graph with Container and Sprite, drive the ticker loop, wire pointer events, and group…

    1.3k GitHub stars~2.3k tokensUpdated 10 days ago
    Game DevelopmentAuto-check passed
  • Dom Size

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing slow page loads, heavy assets, or rendering delays related to Reduce DOM size and complexity.

    74k GitHub stars~390 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Decorative Elements

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Hide decorative elements from assistive technology.

    74k GitHub stars~672 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Render Blocking

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing slow page loads, heavy assets, or rendering delays related to Eliminate render-blocking resources.

    74k GitHub stars~430 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Html5 Semantic Elements

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing templates, rendered HTML, or shared components related to Use semantic HTML elements.

    74k GitHub stars~449 tokensUpdated yesterday
    Auto-check passed
  • Render

    LeoYeAI/openclaw-master-skills

    Deploy and operate apps on Render (Blueprint + one-click Dashboard deeplink, same flow as Codex render-deploy).

    2.2k GitHub stars~4.8k tokensUpdated 2 mo ago
    Productivity & AutomationAuto-check passed

More from netaart/cohub

All 29 skills in this repo
  • Pixijs Assets

    netaart/cohub

    A skill your agent uses when loading and managing resources in PixiJS v8.

    570 GitHub starsUsed in 1 repo~5k tokens
    Auto-check passed
  • A skill your agent uses when reasoning about the PixiJS v8 scene graph as a whole: how containers, leaves, transforms, and render order fit together.

    570 GitHub starsUsed in 1 repo~3.9k tokens
    Auto-check passed
  • Pixijs Scene Mesh

    netaart/cohub

    A skill your agent uses when rendering custom geometry in PixiJS v8.

    570 GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check passed
  • Pixijs Scene Sprite

    netaart/cohub

    A skill your agent uses when drawing images in PixiJS v8. An agent skill from netaart/cohub.

    570 GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check passed
  • Pixijs Scene Text

    netaart/cohub

    A skill your agent uses when rendering text in PixiJS v8. An agent skill from netaart/cohub.

    570 GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • A skill your agent uses when understanding how PixiJS v8 renders frames: the systems-and-pipes renderer, the render loop, and how the library adapts to different environments.

    570 GitHub stars~1.7k tokensUpdated today
    Auto-check passed

Questions about Pixijs HTML Source

What does Pixijs HTML Source do?

A skill your agent uses when rendering live HTML/DOM elements (or frozen snapshots of them) as PixiJS v8 textures via the EXPERIMENTAL HTML-in-Canvas browser APIs. Pixijs HTML Source is an agent skill from netaart/cohub. Use this skill when rendering live HTML/DOM elements (or frozen snapshots of them) as PixiJS v8 textures via the EXPERIMENTAL HTML-in-Canvas browser APIs.

When should I use Pixijs HTML Source?

Pixijs HTML Source fits situations like: rendering live HTML/DOM elements (or frozen snapshots of them) as PixiJS v8 textures via the EXPERIMENTAL HTML-in-Canvas browser APIs; elementImageSource; pixi.js/html-source; captureElementImage.

How do I install Pixijs HTML Source in Claude Code?

Run `npx skills add netaart/cohub --skill pixijs-html-source -a claude-code`. Or copy the skill folder (.agents/skills/pixijs-html-source in netaart/cohub) into .claude/skills/pixijs-html-source in your project. Claude Code loads it when a task matches its description.

How do I install Pixijs HTML Source in Codex?

Run `npx skills add netaart/cohub --skill pixijs-html-source -a codex`. Or copy the skill folder (.agents/skills/pixijs-html-source in netaart/cohub) into .agents/skills/pixijs-html-source in your project. Codex loads it when a task matches its description.

Can I use Pixijs HTML Source 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 netaart/cohub --skill pixijs-html-source -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pixijs-html-source, .gemini/skills/pixijs-html-source, .github/skills/pixijs-html-source and .opencode/skills/pixijs-html-source in your project.

What does Pixijs HTML Source need to run?

SKILL.md names no scripts, command-line tools or credentials: Pixijs HTML Source is instructions for the agent only.

Does Pixijs HTML Source access the network?

SKILL.md names 1 domain. As links in the text: pixijs.download. This is read from the text; nothing was executed.

Is Pixijs HTML Source 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 Pixijs HTML Source use?

Pixijs HTML Source is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pixijs HTML Source use?

About 3.3k tokens (SKILL.md is roughly 13k 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 Pixijs HTML Source?

Skills that share tags, products or a category with Pixijs HTML Source: Pixijs Rendering (gamedev-skills/awesome-gamedev-agent-skills, 1.3k stars), Dom Size (thedaviddias/Front-End-Checklist, 74k stars), Decorative Elements (thedaviddias/Front-End-Checklist, 74k stars) and Render Blocking (thedaviddias/Front-End-Checklist, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pixijs HTML Source?

netaart (a GitHub organization) maintains it in netaart/cohub, which has 570 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 7, 2026.

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