Agent skill

Patchies Objects

by heypoom in heypoom/patchies

A skill your agent uses when adding, editing, or migrating Patchies nodes, objects, handles, object modules, schemas, object docs, AI prompts, file drag/drop support, or node data settings.

AGPL-3.0Auto-check passedFrontend & Design

Install Patchies Objects

skills CLI
$ npx skills add heypoom/patchies --skill patchies-objects -a claude-code

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

GitHub CLI
$ gh skill install heypoom/patchies patchies-objects --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/heypoom/patchies.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/patchies-objects .claude/skills/patchies-objects && 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
patchies-objects
GitHub stars
210
Token cost
~2.2k tokens
SKILL.md length
1,005 words
Files
1
Skills in repo
8
Repo updated
First seen
Licence
AGPL-3.0

At a glance

A skill your agent uses when adding, editing, or migrating Patchies nodes, objects, handles, object modules, schemas, object docs, AI prompts, file drag/drop support, or node data settings.

  • Migrating Patchies nodes
  • SKILL.md covers Object Modules First, Handles, Node Data Undo/Redo and Visual or Expression Nodes, plus 6 more sections
  • Calls bun
  • File drag/drop support

What it does

Patchies Objects is an agent skill from heypoom/patchies. Use when adding, editing, or migrating Patchies nodes, objects, handles, object modules, schemas, object docs, AI prompts, file drag/drop support, or node data settings.

Its SKILL.md is about 2.2k 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 Frontend & Design. It works with Svelte. The repository describes itself as: Write small programs with tools & libraries you know and patch 'em together. Make interactive widgets, visuals, sounds, and play with computation on the web. The licence is AGPL-3.0.

When your agent uses it

  • Migrating Patchies nodes
  • File drag/drop support
  • Node data settings

Example prompts

  • “/patchies-objects”

What it can do on your machine

Read from SKILL.md and the folder at commit 724d4c8. 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:

    • bun

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

  • Network

    No URLs in SKILL.md.

    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

Patchies Objects loads about 2.2k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 1,005 words of instructions outside code blocks.

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

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 heypoom/patchies at commit 724d4c8, republished under its AGPL-3.0 licence (© heypoom). 1,005 words, ~2,249 tokens.

Download SKILL.mdSave it as .claude/skills/patchies-objects/SKILL.md (or your agent's skills folder).
name
patchies-objects
description
Use when adding, editing, or migrating Patchies nodes, objects, handles, object modules, schemas, object docs, AI prompts, file drag/drop support, or node data settings.

Patchies Objects

Object Modules First

Before adding, moving, or migrating object code, read ui/src/objects/README.md. Treat it as the source of truth for object-module ownership.

Object-owned code belongs under ui/src/objects/<object-or-family>/. Each object, or small obvious object family, should own the files specific to that object:

  • Svelte node components
  • object schemas
  • audio or text object runtime classes
  • object-specific AI prompts
  • default data, render-node type members, settings, constants, helpers, and tests
  • workers or system classes that are not shared infrastructure

There is no required subfolder shape beyond keeping object-owned files colocated. Use subfolders when they make the module easier to scan:

text
ui/src/objects/<object-or-family>/
  components/
  workers/
  native-dsp/
  render-types.ts
  schema.ts
  prompt.ts
  *.test.ts

Markdown object docs stay in ui/static/content/objects/.

Shared infrastructure belongs outside ui/src/objects only when it is not owned by one object or a small object family. Examples: registries, schema helper utilities, shared layout components used by unrelated objects, object service plumbing, rendering infrastructure, and native DSP framework code.

Use the $objects alias for object-owned imports.

Files outside ui/src/objects should import object modules only when they are registry-style files whose job is to gather object definitions, such as component, audio, text-object, schema, prompt, shorthand, default-data, or render-type registries.

If a non-registry file outside ui/src/objects needs behavior from an object module, reconsider the boundary: move shared behavior to ui/src/lib, or move the object-specific caller into the owning object module.

When migrating many objects, move in small validated batches. Do not group unrelated objects merely because they share a layout component.

Handles

Use StandardHandle for node handles:

svelte
<StandardHandle port="inlet|outlet" type="video|audio|message" id="optional" title="Description" total={count} index={idx} />

Handle colors: video is orange, audio is blue, message is gray.

ID generation:

  • type and id: ${type}-${portDir}-${id}, for example audio-in-0.
  • type only: ${type}-${portDir}, for example message-in.
  • id only: ${portDir}-${id}, for example in-0.
  • Neither: the port value.

Common patterns:

  • Simple single inlet/outlet: omit id.
  • Multiple indexed handles: id={index}.
  • Complex dynamic handles: include index, name, and type in id.

Node Data Undo/Redo

When adding any new node option or setting, add undo/redo tracking with useNodeDataTracker.

Discrete changes, such as toggles, color pickers, dropdowns, and radio buttons, should commit immediately:

ts
const tracker = useNodeDataTracker(node.id);

function handleColorChange(newColor: string) {
  const oldColor = color;

  updateNodeData(node.id, { color: newColor });
  tracker.commit('color', oldColor, newColor);
}

Continuous changes, such as text inputs, sliders, and number inputs, should track from focus/pointerdown through blur/pointerup:

ts
const textTracker = tracker.track('text', () => node.data.text ?? '');

CodeEditor handles code undo internally through codeCommit; pass the correct dataKey instead of adding useNodeDataTracker for code.

See PostItNode.svelte, SliderNode.svelte, and docs/design-docs/specs/68-undo-redo-system.md.

Visual or Expression Nodes

When adding a visual/expression node, update the relevant surfaces:

  • Component in the owning ui/src/objects/<module>/ unless it is genuinely shared UI infrastructure.
  • Node type registry.
  • Default node data.
  • Object browser category and description.
  • Documentation and object schema when user-visible.
  • AI object prompts: object-descriptions-types.ts, object prompt file, and prompt index.
  • CodeMirror completions for JavaScript-based nodes that expose API functions.

Runtime Object Kinds

Patchies has separate editor representations that can share runtime lifecycle and message routing:

  • Object-box text objects use { expr, name, params } and are loadable through ObjectNode.
  • Dedicated visual nodes use object-shaped node.data, such as { value, min, max, step, isFloat }.
  • Audio nodes keep their audio-specific params[] runtime contract unless the audio object explicitly provides a higher-level message/settings adapter.

Keep these registries distinct in ui/src/lib/objects/v2/nodes/index.ts:

  • TEXT_OBJECTS: object-box objects only.
  • VISUAL_OBJECTS: dedicated Svelte-node-backed visual objects.
  • RUNTIME_OBJECTS: union used for runtime registration and schema generation.

Do not put a dedicated visual node in TEXT_OBJECTS just to make schemas or headless runtime work. ObjectNode should only search/load TEXT_OBJECTS plus audio object names.

EditorRuntimeReconciler may branch on editor representation (object node versus dedicated node), but must not mention concrete object names. Visual runtime data is the dedicated node's object-shaped node.data; put defaults in the object/view helpers that read the data, and use explicit migrations for saved shape changes.

Show full SKILL.md (424 more words)Show less

Headless Visual Objects

When moving a visual Svelte node to a headless runtime object, read docs/design-docs/visual-object-headless-migration.md first.

Guidelines:

  • Put runtime behavior in <ObjectName>Object.ts: create, update, destroy, timers, subscriptions, onMessage, and context.send(...).
  • Keep the Svelte component as a view over node.data plus local UI state.
  • Store runtime state in object-shaped data via context.getData() and context.setData(updates, { notifyUI: true }).
  • Do not add hidden positional params just to feed the runtime.
  • If a view action should behave like an external patch message, send through the shared message queue or view message context instead of duplicating logic in the component.
  • UI-local sends may arrive without meta.inletName; edge-routed messages may arrive with only inletKey. Runtime dispatch should resolve metadata from object inlets, and single-inlet objects may default missing metadata to that inlet.
  • Add runtime tests that prove behavior works without mounting the Svelte component. Include UI-originated and edge-routed message paths when they can differ.

Text Objects

For text control objects:

  • Create a class implementing TextObjectV2 in the owning ui/src/objects/<module>/.
  • Register it in TEXT_OBJECTS in ui/src/lib/objects/v2/nodes/index.ts; this file should stay a registry/import surface.
  • Add it to the appropriate extension pack.
  • Add object docs in ui/static/content/objects/{name}.md.
  • Add AI object prompt coverage.
  • Use TypeBox schemas for message types.

Object-box text objects can keep positional params[]. Use context.getParam() / context.setParam() where that matches the expression model. New visual runtime objects should prefer getData() / setData().

Do not pattern-match text object messages against raw P.string, P.array(), or similar patterns. Define TypeBox schemas with msg()/sym(), wrap them with schema(), and match those wrappers.

Schema Generation

Object schemas for docs are generated at build time with bun run generate:schemas.

Schema generation uses RUNTIME_OBJECTS, not only TEXT_OBJECTS, so docs can include both text and visual definitions without making visual objects loadable through ObjectNode.

When adding fields to InletSchema or OutletSchema, update:

  • ui/src/lib/objects/schemas/types.ts
  • ui/src/lib/objects/schemas/from-v2-node.ts
  • ui/scripts/generate-object-schemas.ts, especially emitPort()

Then run bun run generate:schemas.

Manual schemas in ui/src/lib/objects/schemas/*.ts override generated schemas. If a generated field is missing from docs, check ui/src/lib/objects/schemas/index.ts for a manual override.

Keep manual schemas object-owned where possible and import them through the central schema registry.

JS API Completions

Every user-facing JavaScript API needs CodeMirror completion coverage. When adding a JS API function such as flash(), llm(), or fft():

  • Add the function to patchiesAPICompletions.
  • Add it to topLevelOnlyFunctions if it should not appear inside callbacks.
  • Add every implementing node type to nodeSpecificFunctions.
  • Implement it in each relevant runner/context.

File Drag/Drop

When adding file drag/drop support:

  • Add MIME type mapping in ui/src/lib/vfs/path-utils.ts.
  • Add extension and MIME mappings in CanvasDragDropManager.
  • Add VFS file handling in getVfsFileNodeData().
  • Add direct file handling in getFileNodeData().

© heypoom, AGPL-3.0. 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/patchies-objects of heypoom/patchies.

Open the folder on GitHubat commit 724d4c8

Compare with similar skills

Patchies Objects 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.

Patchies Objects compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Patchies Objects this skillheypoom/patchies210—~2.2kAutomated safety check: PassAGPL-3.0
GSAP Core Animationgreensock/gsap-skills16k4 repos~3.7kAutomated safety check: PassMIT
GSAP in Vue, Nuxt and Sveltegreensock/gsap-skills16k4 repos~2.6kAutomated safety check: PassMIT
Svelte Core Best Practicesrilldata/rill2.9k4 repos~1.8kAutomated safety check: PassApache-2.0
Boneyard0xGF/boneyard7.5k—~2.2kAutomated safety check: NotesMIT
Kill AI Slopyetone/kill-ai-slop1.3k—~1.4kAutomated safety check: PassApache-2.0

Similar skills

  • GSAP Core Animation

    greensock/gsap-skills

    Covers the GSAP core API for tweens, easing, staggers, defaults and matchMedia, and when to choose GSAP over CSS animations or other JavaScript animation libraries.

    16k GitHub starsUsed in 4 repos~3.7k tokens
    Frontend & DesignAuto-check passed
  • GSAP in Vue, Nuxt and Svelte

    greensock/gsap-skills

    Shows how to use GSAP in Vue, Nuxt, Svelte and other lifecycle-based frameworks: create after mount, scope selectors to the component, and revert on unmount.

    16k GitHub starsUsed in 4 repos~2.6k tokens
    Frontend & DesignAuto-check passed
  • Rules for writing idiomatic Svelte 5 code: when to reach for runes like state, derived and effect, and how to handle props, attachments and bindings.

    2.9k GitHub starsUsed in 4 repos~1.8k tokens
    Frontend & DesignAuto-check passed
  • Boneyard

    0xGF/boneyard

    Use boneyard-js to add, configure, debug, or rebuild skeleton screens.

    7.5k GitHub stars~2.2k tokensUpdated 1 mo ago
    Frontend & DesignAuto-check: notes
  • Kill AI Slop

    yetone/kill-ai-slop

    Find and remove AI slop — the generic, machine-default visual and copy tics of vibe-coded products — from a web project.

    1.3k GitHub stars~1.4k tokensUpdated 24 days ago
    Frontend & DesignAuto-check passed
  • Uncodixfy

    pdsuwwz/chatgpt-vue3-light-mvp

    Prevents generic AI/Codex UI patterns when generating frontend code.

    578 GitHub starsUsed in 2 repos~3k tokens
    Frontend & DesignAuto-check passed

More from heypoom/patchies

All 8 skills in this repo
  • Patchies Audio

    heypoom/patchies

    A skill your agent uses when adding, migrating, or changing Patchies Audio V2 nodes, native DSP worklet nodes, audio object docs, audio packs, or AudioService integration.

    210 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Patchies Frontend

    heypoom/patchies

    A skill your agent uses when editing Patchies Svelte components, UI state, styling, buttons, persistence, or frontend implementation patterns.

    210 GitHub stars~992 tokensUpdated today
    Auto-check passed
  • Patchies Workflow

    heypoom/patchies

    A skill your agent uses when working in Patchies on formatting, tests, specs, reflections, verification scope, or commits, especially before changing product behavior or when the user explicitly…

    210 GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Patchies Assembly Module

    heypoom/patchies

    A skill your agent uses when changing Patchies assembly VM code, VASM Rust sources, wasm-pack output, machine WASM assets, asm object behavior, or modules/vasm build/link steps.

    210 GitHub stars~341 tokensUpdated today
    Auto-check passed
  • Docs Style

    heypoom/patchies

    Patchies documentation style guide. An agent skill from heypoom/patchies.

    210 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Patchies Rendering

    heypoom/patchies

    A skill your agent uses when changing Patchies rendering pipeline, render graph, image generation preview capture, GLSystem, render workers, FBO rendering, output sizing, render-node types, or video…

    210 GitHub stars~656 tokensUpdated today
    Auto-check passed

Works with

Questions about Patchies Objects

What does Patchies Objects do?

A skill your agent uses when adding, editing, or migrating Patchies nodes, objects, handles, object modules, schemas, object docs, AI prompts, file drag/drop support, or node data settings. Patchies Objects is an agent skill from heypoom/patchies. Use when adding, editing, or migrating Patchies nodes, objects, handles, object modules, schemas, object docs, AI prompts, file drag/drop support, or node data settings.

When should I use Patchies Objects?

Patchies Objects fits situations like: migrating Patchies nodes; file drag/drop support; Node data settings.

How do I install Patchies Objects in Claude Code?

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

How do I install Patchies Objects in Codex?

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

Can I use Patchies Objects 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 heypoom/patchies --skill patchies-objects -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/patchies-objects, .gemini/skills/patchies-objects, .github/skills/patchies-objects and .opencode/skills/patchies-objects in your project.

What does Patchies Objects need to run?

Going by SKILL.md and its folder, Patchies Objects needs the command-line tools its instructions call (bun).

Does Patchies Objects access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Patchies Objects 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 Patchies Objects use?

Patchies Objects is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Patchies Objects use?

About 2.2k tokens (SKILL.md is roughly 9k 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 Patchies Objects?

Skills that share tags, products or a category with Patchies Objects: GSAP Core Animation (greensock/gsap-skills, 16k stars), GSAP in Vue, Nuxt and Svelte (greensock/gsap-skills, 16k stars), Svelte Core Best Practices (rilldata/rill, 2.9k stars) and Boneyard (0xGF/boneyard, 7.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Patchies Objects?

heypoom (a GitHub user) maintains it in heypoom/patchies, which has 210 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 9, 2026.

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