Files
hermes-agent/skills/creative/p5js
Teknium 4a2198bf51 fix: Windows MCP PATHEXT resolution + python3 -> python in cross-platform skills (#84429)
Two Windows agent-loop friction fixes:

1. tools/mcp_tool.py (#56536): shutil.which(cmd, path=env_path) reads
   executable extensions from the PARENT process PATHEXT, not the MCP
   subprocess env — a stdio MCP config supplying both PATH and PATHEXT
   could fail to resolve a command its own env can locate, and startup
   then got a bare command name. On Windows, when the first which() call
   misses and the config env carries PATHEXT (any key casing), retry the
   resolution with the config's PATHEXT temporarily applied.

2. skills/ + optional-skills/ (#50606): 42 SKILL.md files that declare
   platforms: [.., windows] used python3 in their command examples.
   python3 does not exist on native Windows (the toolchain probe in the
   system prompt reports python3=missing), so every copy-pasted example
   burned a failed agent turn before self-correction. Replaced the
   command word python3 -> python (python3-config / python3.x version
   strings untouched). python is the spelling that exists in every
   Hermes-managed environment (Windows native, uv-managed venvs on all
   three OSes); agents on POSIX hosts additionally see the probed
   toolchain line and adapt either way.
2026-08-12 02:43:28 -07:00
..

p5.js Skill

Production pipeline for interactive and generative visual art using p5.js.

What it does

Creates browser-based visual art from text prompts. The agent handles the full pipeline: creative concept, code generation, preview, export, and iterative refinement. Output is a single self-contained HTML file that runs in any browser — no build step, no server, no dependencies beyond a CDN script tag.

The output is real interactive art. Not tutorial exercises. Generative systems, particle physics, noise fields, shader effects, kinetic typography — composed with intentional color palettes, layered composition, and visual hierarchy.

Modes

Mode Input Output
Generative art Seed / parameters Procedural visual composition
Data visualization Dataset / API Interactive charts, custom data displays
Interactive experience None (user drives) Mouse/keyboard/touch-driven sketch
Animation / motion graphics Timeline / storyboard Timed sequences, kinetic typography
3D scene Concept description WebGL geometry, lighting, shaders
Image processing Image file(s) Pixel manipulation, filters, pointillism
Audio-reactive Audio file / mic Sound-driven generative visuals

Export Formats

Format Method
HTML Self-contained file, opens in any browser
PNG saveCanvas() — press 's' to capture
GIF saveGif() — press 'g' to capture
MP4 Frame sequence + ffmpeg via scripts/render.sh
SVG p5.js-svg renderer for vector output

Prerequisites

A modern browser. That's it for basic use.

For headless export: Node.js, Puppeteer, ffmpeg.

bash skills/creative/p5js/scripts/setup.sh

File Structure

├── SKILL.md                      # Modes, workflow, creative direction, critical notes
├── README.md                     # This file
├── references/
│   ├── core-api.md              # Canvas, draw loop, transforms, offscreen buffers, math
│   ├── shapes-and-geometry.md   # Primitives, vertices, curves, vectors, SDFs, clipping
│   ├── visual-effects.md        # Noise, flow fields, particles, pixels, textures, feedback
│   ├── animation.md             # Easing, springs, state machines, timelines, transitions
│   ├── typography.md            # Fonts, textToPoints, kinetic text, text masks
│   ├── color-systems.md         # HSB/RGB, palettes, gradients, blend modes, curated colors
│   ├── webgl-and-3d.md          # 3D primitives, camera, lighting, shaders, framebuffers
│   ├── interaction.md           # Mouse, keyboard, touch, DOM, audio, scroll
│   ├── export-pipeline.md       # PNG, GIF, MP4, SVG, headless, tiling, batch export
│   └── troubleshooting.md       # Performance, common mistakes, browser issues, debugging
└── scripts/
    ├── setup.sh                 # Dependency verification
    ├── serve.sh                 # Local dev server (for loading local assets)
    ├── render.sh                # Headless render pipeline (HTML → frames → MP4)
    └── export-frames.js         # Puppeteer frame capture (Node.js)