Agent skill

Pixijs Assets

by netaart in netaart/cohub

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

MITAuto-check passedGame Development

Install Pixijs Assets

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

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

GitHub CLI
$ gh skill install netaart/cohub pixijs-assets --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-assets .claude/skills/pixijs-assets && 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-assets
GitHub stars
571
Used in
1 other repo
Token cost
~5k tokens
SKILL.md length
1,144 words
Files
13 (incl. references)
Skills in repo
30
Repo updated
First seen
Licence
MIT

At a glance

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

  • Works in 2 steps: LoadOptions: the second argument to… → data: a field on each asset descriptor.…
  • Loading and managing resources in PixiJS v8
  • SKILL.md covers Quick Start, Supported file types, Forcing a parser with parser and Topics, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Pixijs Assets is an agent skill from netaart/cohub. Use this skill when loading and managing resources in PixiJS v8. Covers Assets.init, Assets.load/add/unload, bundles, manifests, background loading, onProgress, caching, spritesheets, video textures, web fonts, bitmap fonts, animated GIFs, compressed textures, SVG as texture or Graphics, resolution detection, per-asset data options, and forcing a specific loader with the parser field (for extension-less URLs). Triggers on: Assets, Assets.load, Assets.init, loadBundle, manifest, backgroundLoad, Spritesheet, Cache…

Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including reference files (for example `references/background.md`, `references/bundles.md` and `references/caching.md`).

It sits in Game Development, covering Sprites and pixel art, Typography and Social media graphics. 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

  • Loading and managing resources in PixiJS v8
  • LoadVideoTextures
  • VideoSourceOptions

Example prompts

  • “/pixijs-assets”

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. LoadOptions: the second argument to Assets.load/loadBundle. Controls error recovery, retries, progress, and completion callbacks across a…
  2. data: a field on each asset descriptor. Forwards parser-specific options (scale mode, resolution, font family, autoplay flags, etc.) to…

What it can do on your machine

Read from SKILL.md and the folder at commit edc669f. 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 Assets loads about 5k tokens when it runs, and up to ~19k if it reads all its reference files. Until then it costs about 163 tokens; SKILL.md has 1,144 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~163
When it runs · the whole SKILL.md, loaded when a task matches
~5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~19k

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 edc669f, republished under its MIT licence (© netaart). 1,144 words, ~5,033 tokens.

Download SKILL.mdSave it as .claude/skills/pixijs-assets/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.
name
pixijs-assets
description
Use this skill when loading and managing resources in PixiJS v8. Covers Assets.init, Assets.load/add/unload, bundles, manifests, background loading, onProgress, caching, spritesheets, video textures, web fonts, bitmap fonts, animated GIFs, compressed textures, SVG as texture or Graphics, resolution detection, per-asset data options, and forcing a specific loader with the parser field (for extension-less URLs). Triggers on: Assets, Assets.load, Assets.init, loadBundle, manifest, backgroundLoad, Spritesheet, Cache, LoadOptions, unload, parser, loadParser, loadWebFont, loadBitmapFont, loadVideoTextures, GifSource, VideoSourceOptions.
license
MIT
disable-model-invocation
true

The Assets API is PixiJS's asset loader, resolver, and cache in one singleton. Use it to load textures, video, spritesheets, fonts, JSON, and other resources with format detection, resolution switching, bundle grouping, progress tracking, and GPU cleanup.

Quick Start

ts
await Assets.init({ basePath: "/static/" });

const texture = await Assets.load("bunny.png");
const sprite = new Sprite(texture);
app.stage.addChild(sprite);

const [hero, enemy] = await Assets.load(["hero.png", "enemy.png"]);

await Assets.load({
  alias: "logo",
  src: "logo.webp",
});

const logo = new Sprite(Assets.get("logo"));

Assets.init() is optional but recommended for setting basePath, texturePreference, or a manifest. After init, call Assets.load() with a URL, alias, array, or UnresolvedAsset; resolved assets are cached and re-resolved by Assets.get().

Supported file types

TypeExtensionsParser IDLoader
Textures.png, .jpg, .jpeg, .webp, .aviftextureloadTextures
SVG.svgsvgloadSvg (see references/svg.md)
Video textures.mp4, .m4v, .webm, .ogg, .ogv, .h264, .avi, .movvideoloadVideoTextures (see references/video.md)
Sprite sheets.json (Spritesheet format)spritesheetspritesheetAsset (see references/spritesheet.md)
Bitmap fonts.fnt, .xmlbitmap-fontloadBitmapFont (loading works by default; rendering BitmapText requires 'pixi.js/text-bitmap'; see references/fonts.md)
Web fonts.ttf, .otf, .woff, .woff2web-fontloadWebFont (see references/fonts.md)
JSON.jsonjsonloadJson
Text.txttextloadTxt
Compressed textures.basis, .dds, .ktx, .ktx2basis, dds, ktx, ktx2See references/compressed-textures.md
Animated GIFs.gifgifRequires 'pixi.js/gif'; returns GifSource (see references/gif.md)

The Parser ID column is the value you pass to the top-level parser field on an asset descriptor to force a specific loader. See "Forcing a parser" below.

Forcing a parser with parser

By default, PixiJS picks a loader by matching the file extension or MIME type. When your URL lacks an extension (CDN signed URLs, blob URLs, API endpoints, content-hashed paths), the resolver can't tell the loader what to do. Set the top-level parser field on the asset descriptor to force a specific loader:

ts
// Signed CDN URL with no extension
const texture = await Assets.load({
  src: "https://cdn.example.com/signed/abc123?token=xyz",
  parser: "texture",
});

// API endpoint that returns JSON
const data = await Assets.load({
  alias: "config",
  src: "https://api.example.com/v1/config",
  parser: "json",
});

// Extension-less font URL with explicit family
await Assets.load({
  src: "https://cdn.example.com/fonts/hero-v2",
  parser: "web-font",
  data: { family: "Hero", weights: ["400", "700"] },
});

// Video stream without a file extension
const clipTexture = await Assets.load({
  src: "https://cdn.example.com/stream/xyz",
  parser: "video",
  data: { mime: "video/mp4", muted: true, playsinline: true },
});

The parser field goes at the top level of the asset descriptor (alongside src and data), not inside data. It takes any parser ID from the "Supported file types" table above:

  • 'texture', 'svg', 'video': image, SVG, and video textures
  • 'json', 'text': JSON and plain text
  • 'web-font', 'bitmap-font': web and bitmap fonts
  • 'spritesheet': texture atlas JSON
  • 'gif': animated GIFs (requires 'pixi.js/gif')
  • 'basis', 'dds', 'ktx', 'ktx2': compressed textures (each requires its side-effect import)
When you need it
  • Signed CDN URLs: https://cdn.example.com/get?id=abc123 has no extension the loader can test against.
  • Blob or ObjectURL: URL.createObjectURL(blob) produces blob:... URLs with no extension.
  • Custom routing: /api/assets/hero-v2 where the server decides the content type.
  • Content-hashed paths without suffix: some build pipelines produce names like /static/abc123def instead of /static/abc123def.png.

If the URL does have an extension, you don't need parser; let auto-detection do its job. Only set parser when detection can't work.

loadParser is deprecated

The v7 loadParser field still works but emits a deprecation warning. Use parser for new code.

ts
// Old (deprecated)
await Assets.load({ src: "...", loadParser: "loadTextures" });

// New
await Assets.load({ src: "...", parser: "texture" });

Topics

Every asset workflow is covered in a reference file. Pick the one that matches the question:

TopicReferenceWhen
Texture atlases and animationsreferences/spritesheet.mdLoading sprite sheets with AnimatedSprite
Video texturesreferences/video.md.mp4, .webm, autoplay, looping, mobile
Web and bitmap fontsreferences/fonts.md.woff2, .fnt, font families, SDF fonts
Animated GIFsreferences/gif.md.gif, GifSprite, playback control
Grouping assets by featurereferences/bundles.mdaddBundle, loadBundle, unloadBundle
Declaring everything upfrontreferences/manifests.mdAssets.init({ manifest }) workflows
Cache lookups and cleanupreferences/caching.mdAssets.get, Assets.unload, Cache
Priming future assetsreferences/background.mdbackgroundLoad, backgroundLoadBundle
Loading screensreferences/progress.mdonProgress, LoadOptions progress
GPU-compressed formatsreferences/compressed-textures.md.ktx2, .basis, .dds, .ktx
Vector vs raster SVGreferences/svg.mdparseAsGraphicsContext, texture mode
Retina + format detectionreferences/resolution.md@{1,2}x, format preferences

Decision guide

  • Need to load a single image? Use Assets.load(url). No setup required.
  • Loading many assets grouped by level/scene? Use a bundle. See references/bundles.md.
  • Know all assets at build time? Use a manifest in Assets.init. See references/manifests.md.
  • Need a loading bar? Pass a progress callback to Assets.load. See references/progress.md.
  • Smooth transitions between levels? Background-load the next level. See references/background.md.
  • Memory budget matters? Use compressed textures and Assets.unload between screens. See references/compressed-textures.md and references/caching.md.
  • Need crisp SVG icons at any size? Load as Graphics, not texture. See references/svg.md.
  • Retina + WebP/AVIF? Configure texturePreference and use format patterns. See references/resolution.md.

Load options and error handling

There are two separate "options" concepts when loading assets:

  1. LoadOptions: the second argument to Assets.load/loadBundle. Controls error recovery, retries, progress, and completion callbacks across a whole load.
  2. data: a field on each asset descriptor. Forwards parser-specific options (scale mode, resolution, font family, autoplay flags, etc.) to the specific loader for that asset.
Show full SKILL.md (456 more words)Show less
LoadOptions (per call)
ts
await Assets.load(["hero.png", "enemy.png"], {
  onProgress: (p) => updateBar(p),
  onError: (err, url) => {
    const src = typeof url === "string" ? url : url.src;
    console.warn("failed:", src, err);
  },
  strategy: "retry",
  retryCount: 3,
  retryDelay: 250,
});
  • onProgress(progress): [0, 1] as assets in the call complete.
  • onError(error, url): url is string | ResolvedAsset. Guard before reading .src; when url is a string, .src is undefined.
  • strategy: 'throw' | 'skip' | 'retry' — default 'throw'. 'skip' resolves with any successful assets; 'retry' reattempts the failed ones.
  • retryCount — default 3, retries per asset when strategy is 'retry'.
  • retryDelay — default 250 ms between retries.

Global defaults live on Loader.defaultOptions, or pass loadOptions to Assets.init().

data options (per asset)

Each loader parser reads its own options from the data field on the asset descriptor. Use the table below to pick the right options for each asset type:

Asset typedata shapeKey optionsReference
Texture (image)TextureSourceOptionsresolution, scaleMode, alphaMode, autoGenerateMipmaps, antialias, addressModereferences/resolution.md
SVG{ parseAsGraphicsContext?, resolution? }parseAsGraphicsContext for Graphics mode; resolution for sharper rasterreferences/svg.md
VideoVideoSourceOptionsautoPlay, loop, muted, playsinline, preload, updateFPS, crossorigin, mimereferences/video.md
Web fontLoadFontDatafamily, weights, style, display, unicodeRange, featureSettingsreferences/fonts.md
Bitmap font(none; auto-configured)Distance-field detection sets scale mode and mipmapsreferences/fonts.md
Spritesheet{ texture?, imageFilename?, ignoreMultiPack?, textureOptions?, cachePrefix? }textureOptions forwards TextureSourceOptions (e.g. scaleMode) to the atlas image; texture to skip image load; imageFilename to override the referenced image; ignoreMultiPack to skip multi-pack follow-ups; cachePrefix to namespace framesreferences/spritesheet.md
GIFGifBufferOptionsfps, scaleMode, resolution, autoGenerateMipmapsreferences/gif.md
Compressed textureTextureSourceOptionsscaleMode, addressMode, autoGenerateMipmapsreferences/compressed-textures.md
JSON / Text(none)Returned as-is—

Example combining LoadOptions and data:

ts
await Assets.load(
  {
    alias: "hero",
    src: "hero.png",
    data: { scaleMode: "nearest", resolution: 2 },
  },
  { strategy: "retry", retryCount: 3 },
);

Inside a manifest or bundle, every entry can carry its own data:

ts
await Assets.init({
  manifest: {
    bundles: [
      {
        name: "level1",
        assets: [
          { alias: "tiles", src: "tiles.png", data: { scaleMode: "nearest" } },
          { alias: "font", src: "hero.woff2", data: { family: "Hero" } },
          {
            alias: "clip",
            src: "intro.mp4",
            data: { autoPlay: false, muted: true },
          },
        ],
      },
    ],
  },
});

Runtime configuration

Assets.init(options) accepts, alongside basePath and manifest:

  • defaultSearchParams — string or Record<string, any> appended to every resolved URL. Useful for cache busting.
  • skipDetections: boolean — bypass browser format detection for faster init. Requires explicit texturePreference.format.
  • bundleIdentifier: BundleIdentifierOptions — customize how bundle keys resolve so the same alias can live in multiple bundles.
  • loadOptions: Partial<LoadOptions> — set the default strategy, retryCount, retryDelay, and callbacks for every subsequent Assets.load call.
  • preferences: Partial<AssetsPreferences> — crossOrigin, preferWorkers, preferCreateImageBitmap, parseAsGraphicsContext.

After init, preferences can still be tuned:

ts
Assets.setPreferences({
  crossOrigin: "anonymous",
  preferCreateImageBitmap: false,
});

for (const detection of Assets.detections) {
  console.log(detection.extension);
}

Assets.reset();
  • Assets.setPreferences(preferences) — push new preferences to every parser that supports them.
  • Assets.detections — getter exposing the registered FormatDetectionParser list; use when inspecting what formats the current environment advertises.
  • Assets.reset() — internal full reset (resolver + loader + cache). Intended for tests so a fresh Assets.init can run.

Common Mistakes

[CRITICAL] Using Texture.from(url) to load

Wrong:

ts
const texture = Texture.from("https://example.com/image.png");

Correct:

ts
const texture = await Assets.load("https://example.com/image.png");

In v8, Texture.from() only reads the cache. It does not fetch from a URL. Use Assets.load() first; the return value is the texture itself.

[HIGH] Using positional Assets.add signature

Wrong:

ts
Assets.add("bunny", "bunny.png");

Correct:

ts
Assets.add({ alias: "bunny", src: "bunny.png" });

The positional Assets.add(key, url) form was removed in v8. Use the options object with alias and src properties.

[HIGH] Not unloading textures between levels

Assets.load() caches textures indefinitely. For level-based games or screens with distinct asset sets, call Assets.unloadBundle() when transitioning to release GPU 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

SKILL.md and 12 other files (references) in .agents/skills/pixijs-assets of netaart/cohub.

  • SKILL.md
  • references/background.md
  • references/bundles.md
  • references/caching.md
  • references/compressed-textures.md
  • references/fonts.md
  • references/gif.md
  • references/manifests.md
  • references/progress.md
  • references/resolution.md
  • references/spritesheet.md
  • references/svg.md
  • references/video.md

Open the folder on GitHubat commit edc669f

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 Assets 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 Assets compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pixijs Assets this skillnetaart/cohub5711 repos~5kAutomated safety check: PassMIT
Pixel Style Poster Skillv92388375-gif/pixel-style-poster-skill152—~8kAutomated safety check: PassMIT
Opencharttryopendata/skills142—~11kAutomated safety check: PassMIT
Text to PNG Card Casterlijigang/ljg-skills7.5k—~1.9kAutomated safety check: PassMIT
Fantasy Movie Posterdacnay816y62-hub/fantasy-movie-poster-skill165—~943Automated safety check: PassNone
Typography Cover Designersugarforever/01coder-agent-skills137—~3.3kAutomated safety check: PassMIT

Similar skills

  • Pixel Style Poster Skill

    v92388375-gif/pixel-style-poster-skill

    Generate Pixel Style Poster prompts and matching raster images.

    152 GitHub stars~8k tokensUpdated 2 mo ago
    Game DevelopmentAuto-check passed
  • Openchart

    tryopendata/skills

    Generates OpenChart (https://github.com/tryopendata/openchart) chart, table, graph, sankey, tilemap, and geo map specs from data, and guides editorial design decisions.

    142 GitHub stars~11k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Text to PNG Card Caster

    lijigang/ljg-skills

    Turns text, URLs or local files into tall PNG cards through HTML typography, with four modes: long reading card, full-text layout, comic and whiteboard.

    7.5k GitHub stars~1.9k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Fantasy Movie Poster

    dacnay816y62-hub/fantasy-movie-poster-skill

    Design original 9:16 Chinese-language cinematic movie posters from story briefs, genre keywords, or visual references, including layered cover workflows with separate image-designed background and…

    165 GitHub stars~943 tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed
  • Typography Cover Designer

    sugarforever/01coder-agent-skills

    Designs typography-driven video covers and thumbnails in HTML/CSS and screenshots them with Chrome DevTools at 16:9, 16:10, 9:16 and 3:4.

    137 GitHub stars~3.3k tokensUpdated 3 mo ago
    Media & CreativeAuto-check passed
  • Create AI image-generation prompts and image-generation workflows for torn-paper editorial collage style posters with layered ripped paper, rough typography, stamps, tape, stickers, cutout subjects…

    602 GitHub stars~1.3k tokensUpdated 10 days ago
    Media & CreativeAuto-check passed

More from netaart/cohub

All 30 skills in this repo
  • 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.

    571 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.

    571 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.

    571 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.

    571 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.

    571 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • A skill your agent uses when adding screen reader and keyboard navigation to PixiJS v8 apps.

    571 GitHub starsUsed in 1 repo~2k tokens
    Auto-check passed

Questions about Pixijs Assets

What does Pixijs Assets do?

A skill your agent uses when loading and managing resources in PixiJS v8. Pixijs Assets is an agent skill from netaart/cohub. Use this skill when loading and managing resources in PixiJS v8.

When should I use Pixijs Assets?

Pixijs Assets fits situations like: loading and managing resources in PixiJS v8; loadVideoTextures; videoSourceOptions.

How do I install Pixijs Assets in Claude Code?

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

How do I install Pixijs Assets in Codex?

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

Can I use Pixijs Assets 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-assets -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-assets, .gemini/skills/pixijs-assets, .github/skills/pixijs-assets and .opencode/skills/pixijs-assets in your project.

What does Pixijs Assets need to run?

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

Does Pixijs Assets 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 Assets 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 Assets use?

Pixijs Assets 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 Assets use?

About 5k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 14k tokens, read only when the agent opens those files.

What are the alternatives to Pixijs Assets?

Skills that share tags, products or a category with Pixijs Assets: Pixel Style Poster Skill (v92388375-gif/pixel-style-poster-skill, 152 stars), Openchart (tryopendata/skills, 142 stars), Text to PNG Card Caster (lijigang/ljg-skills, 7.5k stars) and Fantasy Movie Poster (dacnay816y62-hub/fantasy-movie-poster-skill, 165 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pixijs Assets?

netaart (a GitHub organization) maintains it in netaart/cohub, which has 571 GitHub stars. The repository holds 30 skills in this directory. The repository was last updated on October 9, 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.