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
Publish 1.6.0
6 files changed
+131−7
SKILL.md+1@@ -421,6 +421,7 @@ This whole system ships as **one installable skill**. `adom-wiki pkg install ado | Skill | Governs | |---|---| | [**input-feedback**](https://wiki.adom.inc/adom/adom-ui-design/files/skills/input-feedback/SKILL.md) | The acknowledgment doctrine: hover, mousedown/:active, and focus-visible states on EVERY interactive element - the UI answers 'yes, you just hovered me / pressed me' before the action even runs |+| [**settings-layout**](https://wiki.adom.inc/adom/adom-ui-design/files/skills/settings-layout/SKILL.md) | The ah settings surface, reusable: sectioned teal-accent cards that EXPLAIN themselves in full sentences, inline live status, Install/Update/Uninstall rows with live consoles, and the portal-modal mechanics - every Adom app's settings dialog mimics this | | [**tooltips**](https://wiki.adom.inc/adom/adom-ui-design/files/skills/tooltips/SKILL.md) | Great desktop tooltips: 600ms reveal, the fixed-div renderer, placement that never covers what you hover, edge-aware flipping, the z-index ladder | | [**floating-windows**](https://wiki.adom.inc/adom/adom-ui-design/files/skills/floating-windows/SKILL.md) | Draggable floaty tool windows and HUDs that never get in the way | | [**toasts**](https://wiki.adom.inc/adom/adom-ui-design/files/skills/toasts/SKILL.md) | Non-blocking confirmations, and the AI's live narration channel to the user |
install.sh+2@@ -16,6 +16,8 @@ install_skill app-shell skills/app-shell/SKILL.md install_skill ai-driven-apps skills/ai-driven-apps/SKILL.md install_skill clickable-paths skills/clickable-paths/SKILL.md install_skill dark-default skills/dark-default/SKILL.md+install_skill input-feedback skills/input-feedback/SKILL.md+install_skill settings-layout skills/settings-layout/SKILL.md echo "OK: Installed the Adom UI Design System plus 8 bundled skills to $DEST/." echo "Hint: Ask Claude 'what are the Adom color tokens', 'great tooltips', or 'make my app a joy to use'."
package.json+10−4@@ -1,8 +1,8 @@ { "slug": "adom-ui-design",- "version": "1.5.1",+ "version": "1.6.0", "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). One install drops the whole set of skill files onto your container.",+ "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.", "dependencies": {}, "files": [ "SKILL.md",@@ -18,7 +18,9 @@ "skills/ai-driven-apps/SKILL.md", "skills/clickable-paths/SKILL.md", "skills/dark-default/SKILL.md",- "screenshots/tokens.png"+ "screenshots/tokens.png",+ "skills/settings-layout/SKILL.md",+ "skills/input-feedback/SKILL.md" ], "scripts": { "install": "./install.sh",@@ -84,5 +86,9 @@ "label": "make this UI responsive for mobile", "prompt": "make this UI responsive for mobile" }- ]+ ],+ "hero": {+ "type": "image",+ "path": "screenshots/hero.png"+ } }
page.json+5−3@@ -1,8 +1,8 @@ { "slug": "adom-ui-design",- "version": "1.5.1",+ "version": "1.6.0", "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). One install drops the whole set of skill files onto your container.",+ "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.", "dependencies": {}, "files": [ "SKILL.md",@@ -18,7 +18,9 @@ "skills/ai-driven-apps/SKILL.md", "skills/clickable-paths/SKILL.md", "skills/dark-default/SKILL.md",- "screenshots/tokens.png"+ "screenshots/tokens.png",+ "skills/settings-layout/SKILL.md",+ "skills/input-feedback/SKILL.md" ], "scripts": { "install": "./install.sh",
skills/settings-layout/SKILL.mdadded+111@@ -0,0 +1,111 @@+---+name: settings-layout+user-invocable: true+description: >-+ The Adom settings surface: how ah (Adom Hydrogen) lays out its Settings, and how every other+ Adom app's settings dialog should mimic it. Covers the two variants (full settings PAGE with+ sidebar outline, and compact settings MODAL for a panel), the settings-card anatomy (elevated+ card, 3px teal left accent, title with inline status, descriptive prose paragraph, control rows,+ dividers), the descriptive-copy doctrine (every section EXPLAINS itself in full sentences, e.g.+ naming the exact hooks it installs), Install/Update/Uninstall row patterns with live consoles,+ and the modal mechanics (portal to body, viewport clamp, draggable header, Escape/click-outside).+ Read BEFORE building any settings dialog, preferences pane, or config UI in an Adom app.+ Trigger words: settings dialog, settings modal, settings layout, preferences pane, config ui,+ settings card, options dialog, app settings, settings panel, mimic ah settings.+---++Parent skill: **adom-ui-design**++# Settings layout - the ah settings surface, reusable++**The doctrine (John, 2026-08-17, verbatim):** "can you make the settings dialog more+descriptive the way the settings is for ah? and make it look similar? in particular i want you+to explain which hooks you hook into." A settings surface in Adom is not a terse grid of+switches. Every section is a CARD that teaches: what this group of controls does, how it works+underneath, and exactly what pressing each button will change. If a section installs hooks, it+NAMES the hooks. If a toggle filters a view, it says what hides and what survives.++Reference implementations (both live in adom/hydrogen-desktop):+- FULL PAGE: `src/lib/components/editor/settings/SettingsPanel.svelte` (sidebar outline ++ sectioned cards + footer).+- COMPACT MODAL: the AI Threads panel settings in+ `src/lib/components/editor/panels/PanelAiThreads.svelte` (560px portal modal, three cards).++## Pick the variant++- **Full settings page** (an app's main Settings): left sidebar OUTLINE (section list, click+ scrolls; active section highlighted) + scrolling editor column of cards + a footer note+ ("Settings are stored on this machine...") with a Restore-defaults button.+- **Compact settings modal** (a panel or widget's own settings): a single centered modal,+ width ~560px, max-height 70vh with internal scroll, stacked cards. No sidebar.++## The settings-card (the atom both variants share)++```css+.settings-card {+ background: var(--elevated, #1c2128);+ border: 1px solid var(--border, #30363d);+ border-left: 3px solid color-mix(in srgb, var(--accent, #00b8b1) 45%, transparent);+ border-radius: 10px;+ padding: 0.9rem 1.1rem 1rem;+ margin-bottom: 1rem;+}+.card-title { font-size: 13px; font-weight: 600; display: flex; align-items: center; gap: 10px; }+.card-status { font-size: 11px; color: var(--text-2, #8b949e); font-weight: 400; } /* inline in the title */+.card-status.ok{ color: #3fb950; }+.card-desc { font-size: 12px; line-height: 1.55; color: var(--text-2, #8b949e); }+.card-desc code{ font-size: 11px; background: rgba(110,118,129,0.2); padding: 1px 4px; border-radius: 4px; }+.divider { height: 1px; background: var(--border); margin: 0.55rem 0; }+```++Anatomy, in order, inside every card:+1. **Title row**: the section name, plus LIVE STATUS inline ("active", "not installed",+ "v0.147.0") in `.card-status` - green when good. Status is recomputed truth, never a cached+ claim.+2. **Descriptive paragraph(s)**: full sentences explaining what this section does and HOW.+ The ah hooks card names each hook it installs (SessionStart, UserPromptSubmit, Stop,+ Notification) with a one-line plain-language consequence for each, states the safety+ contract ("a 2-second-capped HTTP post that can never block or fail Claude itself"), and+ the honest caveat ("threads already running when the hook installs will not report until+ restarted"). That is the bar.+3. **Control rows**: label + control + inline status + action buttons, one row per control,+ dividers between them. Checkbox labels are the human name ("Claude Code"), not the key.+4. **Consequence honesty**: a control that does nothing yet says so; a destructive button is+ visually distinct (red text/border) and never offered on things that must not be removed.++## Rows with lifecycle actions (Install / Update / Uninstall)++The ah Monitored-AIs pattern: `[checkbox + name] [status: version or "not installed"]+[Install|Update] [Uninstall?] [Details toggle]`.+- The button LABEL reflects state: Install when absent, Update when present. Never show+ "installed" next to a button that says Install.+- Uninstall is a danger-styled secondary button, only where removal is legitimate.+- Long-running actions stream a LIVE CONSOLE under the row (dark monospace box, real command+ output line by line, exit code, then a verify line proving the result). Silent multi-minute+ buttons are forbidden.+- An expandable "Details" per row for deep diagnostics (paths, versions, folders, checks with+ green/red marks) keeps the header row compact.++## Modal mechanics (compact variant)++- **Portal the modal to document.body.** Panels live inside transformed ancestors;+ position:fixed resolves against the transform and the modal renders invisibly clipped+ (ah shipped this bug; the portal is the fix). Clamp within the viewport.+- Draggable by its header; close via the X, Escape, and click-outside; title row is+ "<Thing> Settings".+- Overlay dims the app behind; the modal owns scroll (max-height ~70vh).++## Copy rules++- Full sentences, present tense, second person where natural. No em-dashes ever (Adom rule).+- Explain the MECHANISM, not just the setting ("a cheap signature check on the interval below,+ and a full re-census only when the tab layout changes").+- State honest limitations inline, not in docs nobody reads.++## Input feedback + testing++Every button, checkbox, toggle and row follows the **input-feedback** sub-skill (hover+acknowledgment, instant :active press, :focus-visible ring). Ralph-test the surface per the+adom-ui-design loop: open it for real, screenshot, READ the pixels (a modal that "opened" but+rendered clipped passes APIs and fails humans), and verify every status string against ground+truth before shipping.
uninstall.sh+2@@ -2,6 +2,8 @@ set -e DEST="$HOME/.claude/skills" for n in adom-ui-design tooltips floating-windows toasts responsive-ui app-shell ai-driven-apps clickable-paths dark-default skill-authoring; do+remove_skill input-feedback 2>/dev/null || true+remove_skill settings-layout 2>/dev/null || true rm -rf "$DEST/$n" done echo "OK: Removed the Adom UI Design System and its 8 bundled skills."