| name | oota anything |
| description | Routes Code-as-X requirements to categories and polyglot tool chains. Reads catalog and router .work files, creates session.work files, drives the code-as worktop, and runs local step scripts. Use for presentations, video, diagrams, CAD, documents, or any programmatic media — or when the user mentions code-as, oota anything, or Code-as-X. |
| disable-model-invocation | true |
Code as Anything (code-as)
Packaged with the project at projects/oota anything/. Turn requirements
into deterministic, version-controlled media via .work sessions and local
polyglot toolchains.
CLI context (read first)
Paths below are relative to this project root (projects/oota anything/).
| Where you are | How to run |
|---|
Inside this project (local Justfile present) | just run <slug>, just render <slug>, just hardware, just models … |
Monorepo root (Apps/shinyobjectz/) | oota run <slug>, oota render <slug>, etc. |
If unsure: run just --list. Portable verbs are short; monorepo verbs are prefixed code-as-.
Hard rules
.work is source of truth — projects/oota anything/cli/sessions/<slug>/session.work
- Route before build — read requirements, call route API or read
cli/router.work
- Progressive disclosure — catalog → wrapper → step script; one category at a time
- Skill lives in the project — this file, not
~/.cursor/skills/
- Video = full Remotion — no bash templates; read remotion-dev/skills and write
out/src/*.tsx yourself
Workflow
1. Route requirements
curl -s -X POST http://localhost:4010/code-as/route \
-H 'content-type: application/json' \
-d '{"requirements":"technical talk deck and architecture diagram","title":"My talk"}'
Or read projects/oota anything/cli/router.work + cli/catalog.work.
2. Create session
oota new "Session title"
oota admin
Write/sync chain do, params do, ## Requirements in session.work. When ready for the user:
oota open <slug>
3. Run
From monorepo root:
oota run <slug>
oota render <slug>
From projects/oota anything/ alone (portable Justfile):
just run <slug>
just render <slug>
just hardware
just models list tts
Outputs land in cli/sessions/<slug>/out/.
Component surface — what users see in the browser (served by the nexus):
oota serve
oota open <slug>
oota admin
One universal shell (components/artifact/) renders every medium — it
auto-detects artifact kinds from out/. Agent writes out/ + optional
player.work (controls do, artifacts do), then invokes
oota open <slug> and opens the printed URL.
Component UI: Basecoat UI + components/lib/ui.js. No native
selects, range inputs, checkboxes, or media controls in surfaces — use custom scrubbers,
Basecoat selects, resizable sidebar, etc. See components/index.work.
Media one-time setup
Monorepo: oota tts-setup, oota models download kokoro-tts
Portable: just tts-setup, just models download kokoro-tts
Without setup, macOS falls back to say for voiceover. See references/agent-ergonomics.md.
Key paths
| Path | Purpose |
|---|
skill/SKILL.md | This skill |
cli/router.work | Auto-routing keyword rules |
cli/catalog.work | All categories + tools |
cli/sessions/<slug>/session.work | Active session |
components/artifact/ | Universal invokable shell (all mediums) |
components/lib/ui.js | Shell primitives (renderArtifact, tabs, save-state) |
wrappers/<cat>-<tool>.work | Controls + failure modes |
tools/run.sh | Run a session chain |
tools/steps/ | Per-tool step scripts |
media/models.work | Local HF model catalog (TTS, music, optional video) |
media/libraries.work | Remocn, remotion-dev/skills, oota music libs |
Media (Remotion-first)
Video = write full Remotion in cli/sessions/<slug>/out/src/. CLI handles
session data, voice WAV, hardware, HF models, render — not your compositions.
- Read remotion-dev/skills and references/remotion.md
just run <slug> (portable) or oota run <slug> (monorepo) — shell + assets; never overwrites existing out/src/
- Write/edit TSX in
cli/sessions/<slug>/out/src/; optional Remocn
just render <slug> or oota render <slug>
- Optional:
cli/sessions/<slug>/player.work — user-facing controls only (narration, theme). Pipeline params stay in session.work. See _template/player.work.
Local voice/music: just hardware / just models list tts (or code-as-* from monorepo).
See references/media-stack.md.
Eval
Blind POC tests — portable: just eval list|reset|prompt|run|score <scenario>; monorepo: oota eval …. See eval/index.work.
References