agentsclimarketplace

Lustre

Skill aboio-labs/aboio-skills/skills/lustre

Gleam frontend development skill targeting JavaScript. Covers Lustre 5.x, MVU Architecture, Advanced Forms (save-lifecycle state machines/FieldState), UI Patterns, SPA Routing (modem), and HTTP requests (rsvp). Use when building UI or working in client/src/.From its SKILL.md

Install
npx -y skills add aboio-labs/aboio-skills --skill lustre

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

2.8 KB, as published. Nobody here has run it

Lustre & Frontend Best Practices

Skill for Gleam frontend development using Lustre. Read the relevant reference before writing code.

Token Efficiency

All agents and commands using this skill MUST follow references/token-efficiency.md (from core). Use Read and Grep tools with targeted reads instead of reading entire files.

Reference routing — by task

TaskReferences to read
Frontend MVU Forms & UIadvanced-mvu-forms.md + lustre-ui-patterns.md
Frontend Web Componentslustre-components.md
Frontend HTTP / API callslustre-http.md
Frontend SPA Routinglustre-routing.md

Reference routing — by topic

TopicReference
Lustre MVU Core Architecturelustre-core.md
Lustre Effects & Paint cyclelustre-effects.md
Lustre Events (debounce, throttle)lustre-events.md
Lustre Testing (query, simulate)lustre-testing.md
Lustre Browser APIs (plinth)lustre-browser-apis.md
Lustre Advanced (Hydration, FFI)lustre-advanced.md
Common Lustre gotchaslustre-gotchas.md

Core Frontend Principles

  1. Make Impossible States Impossible — Prefer sum types over Bools. Especially for async lifecycles: a form's save is SubmitIdle | SubmitSaving | SubmitSaved | SubmitFailed(err) (the model owns its data + a sibling save field); a page load is RemoteData. Never a Bool flag beside the data.
  2. Parse, Don't Validate — Use FieldState(v, e) to wrap invalid UI state, rather than dictionaries.
  3. Dumb Effects — Effects should be pure executors of I/O. Never pass the Model into an effect function.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.