| name | strudel |
| title | Strudel live-coding skill |
| version | 0.1.0 |
| strudel_packages | {"core":"1.2.6","mini":"1.2.6","webaudio":"1.3.0","transpiler":"1.2.6","tonal":"1.2.6"} |
| description | Generate, explain, debug, iterate, and vary Strudel patterns. Strudel is a browser-based JavaScript port of TidalCycles using mini-notation strings and chained pattern transforms. The user types one expression in a REPL; we return one expression that the REPL can evaluate.
|
| sources | ["packages/core/**/*.mjs (JSDoc, 459 documented members)","packages/{webaudio,draw,codemirror,tonal,xen,edo,midi,motion}/**","doc.json (596 entries, 381 with examples) — generated by `pnpm jsdoc-json`","prior services/api/src/prompts/strudel-system.md (seed prompt, since removed)"] |
| verification_policy | ["Use only function names that appear in doc.json or in the rules/reference files of this skill.","When unsure, say so using one of the markers in rules/uncertainty.md.","Do not invent sound names; check reference/sounds.md."] |
Strudel skill
This skill turns natural-language musical intent into a single self-contained
Strudel program, and is also used to explain, debug, and iterate on existing
Strudel code.
It is consumed by the api service in services/api/src/index.mjs as a system prompt.
Files are intentionally split so the host app can compose only the parts it
needs (e.g. drop examples/ for a smaller prompt).
Capabilities
| Intent | Recipe to follow | Reference loaded |
|---|
| Generate a pattern from an idea | recipes/generate.md | reference/* + examples/genres.md |
Iterate on existing code (<current> block) | recipes/generate.md + rules/iteration.md | reference/* |
| Continue style (host timer expired, no prompt) | rules/host-controls.md | reference/* |
| Explain what a pattern does | recipes/explain.md | reference/mini-notation.md, reference/pattern-transforms.md |
| Debug a pattern that throws or sounds wrong | recipes/debug.md | rules/output-format.md, reference/sounds.md |
| Vary a pattern (rhythm/melody/bass/fx/viz) | recipes/vary.md | reference/effects.md, reference/modulation.md |
| Translate a vibe/genre into a pattern | recipes/generate.md | examples/genres.md, examples/techniques.md |
| Dual-deck / DJ mode (left vs right channel) | recipes/generate.md | reference/dual-deck.md |
Loading order (suggested)
When composing a system prompt, concatenate in this order so later files
specialise earlier ones:
rules/output-format.md — non-negotiable output contract (incl. mandatory
visualizer + compilation self-check)
rules/iteration.md — iteration / <current> semantics
rules/host-controls.md — host signals: loop_count, time_limit,
continue_style
rules/uncertainty.md — how to mark unverified info
reference/sounds.md
reference/mini-notation.md
reference/pattern-transforms.md
reference/effects.md
reference/modulation.md
reference/tempo.md
reference/visualization.md
reference/dual-deck.md — stereo split / DJ mode
recipes/generate.md
recipes/explain.md
recipes/debug.md
recipes/vary.md
examples/genres.md
examples/techniques.md
The minimum viable system prompt is rules + reference/sounds +
reference/mini-notation + reference/pattern-transforms +
reference/visualization + examples/genres. (Visualization moved into the
minimum set because it is now mandatory per rules/output-format.md.)
Out of scope
The skill does not cover:
- Tone.js / raw Web Audio (Strudel programs must not import these).
- DOM manipulation outside Strudel's own viz helpers.
- MIDI device routing details (see
packages/midi/README.md directly).
- OSC routing (
packages/osc/) — referenced as not confirmed by provided docs
if the user asks for live-coded OSC output.
How to extend
- Add a new file under
reference/ or recipes/.
- List it in this manifest's loading order if it should be in the default prompt.
- If a function name is referenced, verify it appears in
doc.json or mark it
with one of the uncertainty tags from rules/uncertainty.md.