skill
Adom UI Design System
Public Made by Adomby adom
How the AI builds and tests interfaces people love to use in Adom. Ships as one installable skill that bundles focused skills (tooltips, floating-windows, toasts, responsive-ui, app-shell, ai-driven-apps, clickable-paths).
← Commit history
1.12.1: the slug namespace provides isolation, not the origin (that claim was false); the server emits the pill's short state
3 files changed
+20−5
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-ui-design",- "version": "1.12.0",+ "version": "1.12.1", "type": "skill", "description": "The Adom UI Design System plus a bundle of focused UI skills (tooltips, floating-windows, toasts, responsive-ui, app-shell, ai-driven-apps, clickable-paths, dark-default, input-feedback, settings-layout). One install drops the whole set of skill files onto your container, plus shared icon assets (the settings cog) so every Adom app draws the same glyph.", "dependencies": {},
skills/newbie-graduation/SKILL.md+13−4@@ -51,10 +51,19 @@ else folds at 3 launches, it folds at 5, or on dismissal/AI-driven-action). ## Storage -localStorage, no server, no sync. The key MUST be namespaced with the app slug: behind the-cloud proxy every dashboard shares ONE origin, and un-namespaced keys cross-talk between-apps (found live 2026-08-24: a sibling app's aiDriven flag landed in adom-lbr's state).-Direct ports being separate origins does not save you; the proxy world exists:+localStorage, no server, no sync. **The slug namespace is what provides isolation, not the+origin.** Do not believe the comforting story that a per-port origin keeps apps apart; it is+false twice over:++1. **Ports are assigned fresh on every serve**, so per-port state would be LOST on every+ restart and the panel would silently un-graduate itself.+2. **A proxied dashboard shares ONE origin with every other app.** Dumped live on+ 2026-08-24, a single dashboard's localStorage held `adom-lbr:dash-graduation`,+ `adom-dash-graduation`, `kdTarget`, `kdBusySince`, `fdTarget` and `psSettings` beside its+ own keys. Un-namespaced keys DO collide (a sibling's aiDriven flag once landed in+ adom-lbr's state).++So namespace every key with your app slug, always: ```js const GRAD_KEY = '<slug>:dash-graduation'; // e.g. 'adom-lbr:dash-graduation' - ALWAYS namespaced // {launches: n, aiDriven: bool, dismissed: {say: bool, start: bool}}
skills/status-leds/SKILL.md+6@@ -27,6 +27,12 @@ every dashboard says it the same way: one compact pill row, directly under the s ``` - One pill per subsystem: LED dot, label, and a 1-4 word state. Nothing else visible.+- **The SERVER emits that short state as its own field; the page NEVER truncates a+ sentence to produce it.** Slicing prose gives you mid-word cuts like "no pup windows open+ right" or "in talled and pinned", and every app that derives its pill text from its detail+ text ships that bug eventually (two did on 2026-08-24). Send both: a short `state`+ (`installed`, `answering`, `1 open`, `adom-you`) for the pill, and the full prose for the+ tap-to-expand detail. - LED colors from tokens ONLY: `--led-green` healthy, `--led-amber` busy or degraded, `--led-red` broken. Gray = unknown or not yet probed. Brand colors never carry health. - The row wraps on narrow screens; it never becomes a grid of cards.