| name | tutuca |
| description | Use when authoring or reviewing tutuca modules — `component({...})` definitions, `html`...`` views, `@`-directives, `input` / `bubble` / `receive` / `response` / `alter` handlers, macros, or `getTests` exports — or when running the `tutuca` CLI (`lint` / `test` / `render` / `show`). Covers the post-edit `tutuca lint <module>` → `test` → `render --title "<example>"` verification recipe. |
Tutuca
Tutuca is an immutable-state SPA framework. Read core.md
first for the framework primer.
Verifying changes
After editing a tutuca module, run these before declaring the edit done:
tutuca lint <module>
tutuca test <module>
tutuca render <module> --title "<example>"
Full recipe — when to skip test, adding a covering example, the
project-wide storybook --dry-run smoke test — in
core.md.
Companion skills
When authoring tutuca code, also load these if available:
- immutable-js — every
immutable export is reachable through
tutuca (List, IMap, OMap, ISet, Record, Seq,
fromJS, is, …). Reach for it whenever the work touches state
values.
- margaui — the Tailwind v4 / daisyUI-compatible class library.
Reach for it when the project uses MargaUI / Tailwind class lists in
class= / :class=. See margaui.md to set it up in a
project and wire it into tutuca.
Routing
| Task | File |
|---|
Authoring component({...}), html...`` views, fields, events, conditional display | core.md |
Iterating lists — @each / render-each, @when filtering, @enrich-with, @loop-with pagination | iteration.md |
Macros — macro({...}, html) definitions, <x:name> calls, slots, registration | macros.md |
Component CSS — style / commonStyle / globalStyle scoping and pitfalls | styles.md |
| Designing components — responsibilities, state ownership, channel choice, do's & don'ts | component-design.md |
| CLI commands, flags, exit codes, full linter rule list | cli.md |
Authoring *.dev.js story modules, getExamples() sections, per-example request mocking, running tutuca storybook | storybook.md |
bubble / send-receive / async request-response channels, $unknown, request-handler registration | request-response.md |
Drag & drop, dynamic bindings (*x), pseudo-x, custom seq types | advanced.md |
Setting up MargaUI styling — install (CDN / npm / vendoring), theme CSS, and the compileClassesToStyleText wiring | margaui.md |
Runtime semantics — path steps, transaction lifecycle, dyn-var teleporting, async key pinning (livePath) | semantics.md |
Authoring tests — getTests shape, calling methods/input/receive/bubble/response/alter handlers, designing handlers for testability | testing.md |
| Task-oriented recipes — iteration, filtering, conditional content, conditional attributes, dynamic vars, composition, events | patterns/README.md |
Read core.md first. Reach for the others only when the task touches
them — each is referenced inline from core.md so you'll be pointed
there when relevant.