{"id":19260,"plugin_id":"plugins_6a95a30017b8819195268bcdb33e5c07","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:15:26.078Z","digest":"1328ebd917a2cb5a113d00ece7335df592f6ea5e7b732280655d6a632b1cd449","against":null,"payload":{"description":"Create, edit, explain, and repair playable Strudel live-coding music in local `.strudel.js` files. Hand off a local file and a strudel.cc link after a local syntax check. Never open a browser or REPL to validate. Use for natural-language music requests, Strudel patterns, algorithmic composition, remixes, arrangement changes, or Strudel debugging. Do not use for rendered audio production, notation engraving, or DAW projects unless the user also wants Strudel source.","included_files":[{"relative_path":"references/official-docs.md","size_in_bytes":3071},{"relative_path":"references/strudel-code-guide.md","size_in_bytes":23621},{"relative_path":"references/strudel-sounds.md","size_in_bytes":26372},{"relative_path":"scripts/strudel-url.mjs","size_in_bytes":286}],"name":"strudel","skill_md_contents":"---\nname: strudel\ndescription: Create, edit, explain, and repair playable Strudel live-coding music in local `.strudel.js` files. Hand off a local file and a strudel.cc link after a local syntax check. Never open a browser or REPL to validate. Use for natural-language music requests, Strudel patterns, algorithmic composition, remixes, arrangement changes, or Strudel debugging. Do not use for rendered audio production, notation engraving, or DAW projects unless the user also wants Strudel source.\n---\n\n# Text to Strudel\n\nCreate readable Strudel source that the user can keep editing and performing.\nThe local `.strudel.js` file is the primary artifact. A chat response or audio\npreview is not a substitute for the source.\n\n## Speed\n\nThe user is waiting to press play. Once the `.strudel.js` file exists, syntax\ncheck has run, and the `strudel.cc` link is in the reply, **stop**.\n\nDo not open Playwright, a browser, strudel.cc, a headless runtime, or any REPL\nto validate, preview, query cycles, screenshot, or debug. Those tools being\navailable is not permission to use them. A missing sample is cheaper than\nmaking the user wait. They will hear problems when they press play.\n\nWrite the file, check syntax, build the link, reply. That is the whole job\nunless `node --check` failed or the user later reports a REPL error.\n\n## Working defaults\n\n- Preserve the user's requested tempo, meter, harmony, instruments, structure,\n  and output path.\n- If no path is given, write a short descriptive filename under `music/`, such\n  as `music/dub-at-dawn.strudel.js`.\n- Treat one cycle as one bar in ordinary 4/4 requests. Convert BPM to cycles per\n  minute with `bpm / 4`, for example 120 BPM becomes `.cpm(30)`.\n- Prefer a small playable idea over a long generated arrangement. Add sections\n  only when the request calls for them.\n- Keep rhythm, harmony, bass, melody, and texture legible as separate patterns\n  when that makes later live editing easier.\n- Use only documented Strudel functions and known sound names. Never invent an\n  API or sample name to satisfy a prompt.\n- Do not autoplay audio. Playback requires a user action.\n- Keep gain conservative. Avoid dense unbounded patterns that can produce a\n  burst of simultaneous events.\n\nRead [references/strudel-code-guide.md](references/strudel-code-guide.md) when\nwriting or debugging Strudel. Read\n[references/strudel-sounds.md](references/strudel-sounds.md) when choosing\nsamples, synths, drum machines, or wavetables. Search these references for the\nspecific function or sound instead of loading unrelated material. Read\n[references/official-docs.md](references/official-docs.md) when a bundled\nreference is incomplete, ambiguous, or likely stale. Prefer current official\ndocumentation when it disagrees with a bundled reference. If documentation\nlookup is unavailable, do not invent an API or sound name.\n\n## Workflow\n\n1. Inspect an existing target before editing it. Preserve its musical identity\n   unless the user asks for a rewrite.\n2. Translate the request into a short musical brief: tempo, cycle convention,\n   meter, sound palette, harmonic material, rhythmic character, structure, and\n   requested performance controls. State only assumptions that affect the\n   result.\n3. Write or edit the `.strudel.js` source. The file must evaluate to a pattern,\n   or use Strudel's `$:` syntax for concurrent patterns.\n4. Check ordinary JavaScript syntax with `node --check <file>` when the source\n   does not rely on REPL-only `$:` labels. A syntax check does not prove that\n   Strudel functions or sounds exist.\n5. Build a playable REPL link with\n   `node skills/strudel/scripts/strudel-url.mjs <file>` or equivalent URL\n   encoding: `https://strudel.cc/#` + `encodeURIComponent(source)`.\n6. Reply with the handoff choices, whether `node --check` passed, and the tempo\n   assumption. Then stop.\n7. If the user reports a REPL error, repair the smallest responsible part from\n   the error text and repeat steps 4–6. Do not open a browser to find the error.\n\n## Editing rules\n\n- Keep intentional repetition. Randomness is a musical choice, not a default\n  way to make a loop seem sophisticated.\n- Change only the requested musical dimension when asked to preserve rhythm,\n  harmony, sound design, or structure.\n- For explanations, connect each code expression to what a listener hears.\n- For repairs, do not replace the whole composition when a local syntax or API\n  correction is enough.\n- Do not claim that a composition sounds good based on parsing or event checks.\n  Report deterministic checks separately from the user's listening judgment.\n\n## Handoff\n\nAlways include:\n\n- **View source:** the exact `.strudel.js` path as a clickable Markdown link\n- **Open and play:** a `strudel.cc` link built from that file's source; playback\n  starts only after the user presses Play\n- Whether `node --check` passed\n- The tempo assumption (BPM and `.cpm()` value)\n\nOptional:\n\n- If the agent environment supports inline audio playback, the agent may attach\n  a short preview. Treat that as a convenience, not the deliverable.\n\nStrudel requires its browser audio engine, so do not offer fake terminal\nplayback. Never claim playback or listening occurred unless the user actually\nheard it or the agent truly rendered audio in a supported environment.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}