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.
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.
$ npx skills add heypoom/patchies --skill patchies-objects -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install heypoom/patchies patchies-objects --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/heypoom/patchies.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/patchies-objects .claude/skills/patchies-objects && 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 "patchies-objects" agent skill from https://github.com/heypoom/patchies/tree/main/.agents/skills/patchies-objects into .claude/skills/patchies-objects/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "patchies-objects", 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/heypoom/patchies/tree/main/.agents/skills/patchies-objectsType 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 heypoom/patchies --skill patchies-objects -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install heypoom/patchies patchies-objects --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/heypoom/patchies.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/patchies-objects .agents/skills/patchies-objects && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "patchies-objects" agent skill from https://github.com/heypoom/patchies/tree/main/.agents/skills/patchies-objects into .agents/skills/patchies-objects/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "patchies-objects", 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 heypoom/patchies --skill patchies-objects -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install heypoom/patchies patchies-objects --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/heypoom/patchies.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/patchies-objects .cursor/skills/patchies-objects && 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 "patchies-objects" agent skill from https://github.com/heypoom/patchies/tree/main/.agents/skills/patchies-objects into .cursor/skills/patchies-objects/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "patchies-objects", 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/heypoom/patchies.git --path .agents/skills/patchies-objects--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 heypoom/patchies --skill patchies-objects -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install heypoom/patchies patchies-objects --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/heypoom/patchies.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/patchies-objects .gemini/skills/patchies-objects && 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 "patchies-objects" agent skill from https://github.com/heypoom/patchies/tree/main/.agents/skills/patchies-objects into .gemini/skills/patchies-objects/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "patchies-objects", 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 heypoom/patchies patchies-objectsInstalls 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 heypoom/patchies --skill patchies-objects -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/heypoom/patchies.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/patchies-objects .github/skills/patchies-objects && 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 "patchies-objects" agent skill from https://github.com/heypoom/patchies/tree/main/.agents/skills/patchies-objects into .github/skills/patchies-objects/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "patchies-objects", 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 heypoom/patchies --skill patchies-objects -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install heypoom/patchies patchies-objects --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/heypoom/patchies.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/patchies-objects .opencode/skills/patchies-objects && 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 "patchies-objects" agent skill from https://github.com/heypoom/patchies/tree/main/.agents/skills/patchies-objects into .opencode/skills/patchies-objects/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "patchies-objects", 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.
patchies-objectsA 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.
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.
Read from SKILL.md and the folder at commit 724d4c8. 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:
bunFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
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.
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 heypoom/patchies at commit 724d4c8, republished under its AGPL-3.0 licence (© heypoom). 1,005 words, ~2,249 tokens.
.claude/skills/patchies-objects/SKILL.md (or your agent's skills folder).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:
There is no required subfolder shape beyond keeping object-owned files colocated. Use subfolders when they make the module easier to scan:
ui/src/objects/<object-or-family>/
components/
workers/
native-dsp/
render-types.ts
schema.ts
prompt.ts
*.test.tsMarkdown 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.
Use StandardHandle for node handles:
<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.port value.Common patterns:
id.id={index}.id.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:
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:
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.
When adding a visual/expression node, update the relevant surfaces:
ui/src/objects/<module>/ unless it is genuinely shared UI infrastructure.object-descriptions-types.ts, object prompt file, and prompt index.Patchies has separate editor representations that can share runtime lifecycle and message routing:
{ expr, name, params } and are loadable through
ObjectNode.node.data, such as
{ value, min, max, step, isFloat }.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.
When moving a visual Svelte node to a headless runtime object, read
docs/design-docs/visual-object-headless-migration.md first.
Guidelines:
<ObjectName>Object.ts: create, update,
destroy, timers, subscriptions, onMessage, and context.send(...).node.data plus local UI state.context.getData() and
context.setData(updates, { notifyUI: true }).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.For text control objects:
TextObjectV2 in the owning ui/src/objects/<module>/.TEXT_OBJECTS in ui/src/lib/objects/v2/nodes/index.ts;
this file should stay a registry/import surface.ui/static/content/objects/{name}.md.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.
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.tsui/src/lib/objects/schemas/from-v2-node.tsui/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.
Every user-facing JavaScript API needs CodeMirror completion coverage. When adding a JS API function such as flash(), llm(), or fft():
patchiesAPICompletions.topLevelOnlyFunctions if it should not appear inside callbacks.nodeSpecificFunctions.When adding file drag/drop support:
ui/src/lib/vfs/path-utils.ts.CanvasDragDropManager.getVfsFileNodeData().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
Just SKILL.md in .agents/skills/patchies-objects of heypoom/patchies.
Open the folder on GitHubat commit 724d4c8
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Patchies Objects this skillheypoom/patchies | 210 | — | ~2.2k | Automated safety check: Pass | AGPL-3.0 | |
| GSAP Core Animationgreensock/gsap-skills | 16k | 4 repos | ~3.7k | Automated safety check: Pass | MIT | |
| GSAP in Vue, Nuxt and Sveltegreensock/gsap-skills | 16k | 4 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Svelte Core Best Practicesrilldata/rill | 2.9k | 4 repos | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Boneyard0xGF/boneyard | 7.5k | — | ~2.2k | Automated safety check: Notes | MIT | |
| Kill AI Slopyetone/kill-ai-slop | 1.3k | — | ~1.4k | Automated safety check: Pass | Apache-2.0 |
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.
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.
rilldata/rill
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.
0xGF/boneyard
Use boneyard-js to add, configure, debug, or rebuild skeleton screens.
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.
pdsuwwz/chatgpt-vue3-light-mvp
Prevents generic AI/Codex UI patterns when generating frontend code.
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.
heypoom/patchies
A skill your agent uses when editing Patchies Svelte components, UI state, styling, buttons, persistence, or frontend implementation patterns.
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…
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.
heypoom/patchies
Patchies documentation style guide. An agent skill from heypoom/patchies.
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…
Works with
Categories
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.
Patchies Objects fits situations like: migrating Patchies nodes; file drag/drop support; Node data settings.
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.
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.
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.
Going by SKILL.md and its folder, Patchies Objects needs the command-line tools its instructions call (bun).
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.
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.
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.
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.
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.
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.