diff --git a/.agents/skills/impeccable/SKILL.md b/.agents/skills/impeccable/SKILL.md index 3763c7471..eb0ba0589 100644 --- a/.agents/skills/impeccable/SKILL.md +++ b/.agents/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." version: 3.0.0 user-invocable: true argument-hint: "[command] [target]" @@ -314,6 +314,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `/impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `/impeccable distill [target]` - Strip to essence, remove complexity > `/impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `/impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `/impeccable animate [target]` - Add purposeful animations and motion @@ -350,7 +351,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/.agents/skills/impeccable/reference/audit.md b/.agents/skills/impeccable/reference/audit.md index 206fafb5c..bbba2401b 100644 --- a/.agents/skills/impeccable/reference/audit.md +++ b/.agents/skills/impeccable/reference/audit.md @@ -95,7 +95,7 @@ For each issue, document: - **Impact**: How it affects users - **WCAG/Standard**: Which standard it violates (if applicable) - **Recommendation**: How to fix it -- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) ### Patterns & Systemic Issues @@ -114,7 +114,7 @@ List recommended commands in priority order (P0 first, then P1, then P2): 1. **[P?] `/command-name`** — Brief description (specific context from audit findings) 2. **[P?] `/command-name`** — Brief description (specific context) -**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. +**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. After presenting the summary, tell the user: diff --git a/.agents/skills/impeccable/reference/critique.md b/.agents/skills/impeccable/reference/critique.md index c6a867d50..16280db0c 100644 --- a/.agents/skills/impeccable/reference/critique.md +++ b/.agents/skills/impeccable/reference/critique.md @@ -132,7 +132,7 @@ For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuris - **[P?] What**: Name the problem clearly - **Why it matters**: How this hurts users or undermines goals - **Fix**: What to do about it (be concrete) -- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) #### Persona Red Flags > *Consult [personas](personas.md)* @@ -197,7 +197,7 @@ List recommended commands in priority order, based on the user's answers: ... **Rules for recommendations**: -- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset +- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset - Order by the user's stated priorities first, then by impact - Each item's description should carry enough context that the command knows what to focus on - Map each Priority Issue to the appropriate command diff --git a/.agents/skills/impeccable/reference/harden.md b/.agents/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/.agents/skills/impeccable/reference/harden.md +++ b/.agents/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/.agents/skills/impeccable/reference/onboard.md b/.agents/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/.agents/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/.agents/skills/impeccable/scripts/command-metadata.json b/.agents/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/.agents/skills/impeccable/scripts/command-metadata.json +++ b/.agents/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/.agents/skills/impeccable/scripts/pin.mjs b/.agents/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/.agents/skills/impeccable/scripts/pin.mjs +++ b/.agents/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ]; diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 15754b175..9070e688e 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -2,7 +2,7 @@ "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", "name": "impeccable", "metadata": { - "description": "Design fluency for AI harnesses. 1 skill, 20 commands, and curated anti-patterns for impeccable frontend design." + "description": "Design fluency for AI harnesses. 1 skill, 21 commands, and curated anti-patterns for impeccable frontend design." }, "owner": { "name": "Paul Bakaus", @@ -11,7 +11,7 @@ "plugins": [ { "name": "impeccable", - "description": "Design fluency for frontend development. 1 skill with 20 commands (/impeccable polish, /impeccable audit, /impeccable critique, etc.) and curated anti-pattern detection.", + "description": "Design fluency for frontend development. 1 skill with 21 commands (/impeccable polish, /impeccable audit, /impeccable critique, etc.) and curated anti-pattern detection.", "version": "3.0.0", "author": { "name": "Paul Bakaus", diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index a42ac27a3..60c051727 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "impeccable", - "description": "Design fluency for frontend development. 1 skill with 20 commands (/impeccable polish, /impeccable audit, /impeccable critique, etc.) and curated anti-pattern detection.", + "description": "Design fluency for frontend development. 1 skill with 21 commands (/impeccable polish, /impeccable audit, /impeccable critique, etc.) and curated anti-pattern detection.", "version": "3.0.0", "author": { "name": "Paul Bakaus", diff --git a/.claude/skills/impeccable/SKILL.md b/.claude/skills/impeccable/SKILL.md index 182c33604..cab244324 100644 --- a/.claude/skills/impeccable/SKILL.md +++ b/.claude/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." version: 3.0.0 user-invocable: true argument-hint: "[command] [target]" @@ -316,6 +316,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `/impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `/impeccable distill [target]` - Strip to essence, remove complexity > `/impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `/impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `/impeccable animate [target]` - Add purposeful animations and motion @@ -352,7 +353,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/.claude/skills/impeccable/reference/audit.md b/.claude/skills/impeccable/reference/audit.md index 206fafb5c..bbba2401b 100644 --- a/.claude/skills/impeccable/reference/audit.md +++ b/.claude/skills/impeccable/reference/audit.md @@ -95,7 +95,7 @@ For each issue, document: - **Impact**: How it affects users - **WCAG/Standard**: Which standard it violates (if applicable) - **Recommendation**: How to fix it -- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) ### Patterns & Systemic Issues @@ -114,7 +114,7 @@ List recommended commands in priority order (P0 first, then P1, then P2): 1. **[P?] `/command-name`** — Brief description (specific context from audit findings) 2. **[P?] `/command-name`** — Brief description (specific context) -**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. +**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. After presenting the summary, tell the user: diff --git a/.claude/skills/impeccable/reference/critique.md b/.claude/skills/impeccable/reference/critique.md index e0d63443f..1da3f7efb 100644 --- a/.claude/skills/impeccable/reference/critique.md +++ b/.claude/skills/impeccable/reference/critique.md @@ -132,7 +132,7 @@ For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuris - **[P?] What**: Name the problem clearly - **Why it matters**: How this hurts users or undermines goals - **Fix**: What to do about it (be concrete) -- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) #### Persona Red Flags > *Consult [personas](personas.md)* @@ -197,7 +197,7 @@ List recommended commands in priority order, based on the user's answers: ... **Rules for recommendations**: -- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset +- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset - Order by the user's stated priorities first, then by impact - Each item's description should carry enough context that the command knows what to focus on - Map each Priority Issue to the appropriate command diff --git a/.claude/skills/impeccable/reference/harden.md b/.claude/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/.claude/skills/impeccable/reference/harden.md +++ b/.claude/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/.claude/skills/impeccable/reference/onboard.md b/.claude/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/.claude/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/.claude/skills/impeccable/scripts/command-metadata.json b/.claude/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/.claude/skills/impeccable/scripts/command-metadata.json +++ b/.claude/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/.claude/skills/impeccable/scripts/pin.mjs b/.claude/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/.claude/skills/impeccable/scripts/pin.mjs +++ b/.claude/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ]; diff --git a/.codex/skills/impeccable/SKILL.md b/.codex/skills/impeccable/SKILL.md index f49846747..e2e0c0b48 100644 --- a/.codex/skills/impeccable/SKILL.md +++ b/.codex/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." version: 3.0.0 argument-hint: "[command] [target]" license: Apache 2.0. Based on Anthropic's frontend-design skill. See NOTICE.md for attribution. @@ -313,6 +313,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `$impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `$impeccable distill [target]` - Strip to essence, remove complexity > `$impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `$impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `$impeccable animate [target]` - Add purposeful animations and motion @@ -349,7 +350,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/.codex/skills/impeccable/reference/audit.md b/.codex/skills/impeccable/reference/audit.md index a86b3be95..ab5552ecd 100644 --- a/.codex/skills/impeccable/reference/audit.md +++ b/.codex/skills/impeccable/reference/audit.md @@ -95,7 +95,7 @@ For each issue, document: - **Impact**: How it affects users - **WCAG/Standard**: Which standard it violates (if applicable) - **Recommendation**: How to fix it -- **Suggested command**: Which command to use (prefer: $impeccable adapt, $impeccable animate, $impeccable audit, $impeccable bolder, $impeccable clarify, $impeccable colorize, $impeccable critique, $impeccable delight, $impeccable distill, $impeccable harden, $impeccable layout, $impeccable optimize, $impeccable overdrive, $impeccable polish, $impeccable quieter, $impeccable shape, $impeccable typeset) +- **Suggested command**: Which command to use (prefer: $impeccable adapt, $impeccable animate, $impeccable audit, $impeccable bolder, $impeccable clarify, $impeccable colorize, $impeccable critique, $impeccable delight, $impeccable distill, $impeccable harden, $impeccable layout, $impeccable onboard, $impeccable optimize, $impeccable overdrive, $impeccable polish, $impeccable quieter, $impeccable shape, $impeccable typeset) ### Patterns & Systemic Issues @@ -114,7 +114,7 @@ List recommended commands in priority order (P0 first, then P1, then P2): 1. **[P?] `$command-name`** — Brief description (specific context from audit findings) 2. **[P?] `$command-name`** — Brief description (specific context) -**Rules**: Only recommend commands from: $impeccable adapt, $impeccable animate, $impeccable audit, $impeccable bolder, $impeccable clarify, $impeccable colorize, $impeccable critique, $impeccable delight, $impeccable distill, $impeccable harden, $impeccable layout, $impeccable optimize, $impeccable overdrive, $impeccable polish, $impeccable quieter, $impeccable shape, $impeccable typeset. Map findings to the most appropriate command. End with `$impeccable polish` as the final step if any fixes were recommended. +**Rules**: Only recommend commands from: $impeccable adapt, $impeccable animate, $impeccable audit, $impeccable bolder, $impeccable clarify, $impeccable colorize, $impeccable critique, $impeccable delight, $impeccable distill, $impeccable harden, $impeccable layout, $impeccable onboard, $impeccable optimize, $impeccable overdrive, $impeccable polish, $impeccable quieter, $impeccable shape, $impeccable typeset. Map findings to the most appropriate command. End with `$impeccable polish` as the final step if any fixes were recommended. After presenting the summary, tell the user: diff --git a/.codex/skills/impeccable/reference/critique.md b/.codex/skills/impeccable/reference/critique.md index 41ec68c4d..cc0944eca 100644 --- a/.codex/skills/impeccable/reference/critique.md +++ b/.codex/skills/impeccable/reference/critique.md @@ -132,7 +132,7 @@ For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuris - **[P?] What**: Name the problem clearly - **Why it matters**: How this hurts users or undermines goals - **Fix**: What to do about it (be concrete) -- **Suggested command**: Which command could address this (from: $impeccable adapt, $impeccable animate, $impeccable audit, $impeccable bolder, $impeccable clarify, $impeccable colorize, $impeccable critique, $impeccable delight, $impeccable distill, $impeccable harden, $impeccable layout, $impeccable optimize, $impeccable overdrive, $impeccable polish, $impeccable quieter, $impeccable shape, $impeccable typeset) +- **Suggested command**: Which command could address this (from: $impeccable adapt, $impeccable animate, $impeccable audit, $impeccable bolder, $impeccable clarify, $impeccable colorize, $impeccable critique, $impeccable delight, $impeccable distill, $impeccable harden, $impeccable layout, $impeccable onboard, $impeccable optimize, $impeccable overdrive, $impeccable polish, $impeccable quieter, $impeccable shape, $impeccable typeset) #### Persona Red Flags > *Consult [personas](personas.md)* @@ -197,7 +197,7 @@ List recommended commands in priority order, based on the user's answers: ... **Rules for recommendations**: -- Only recommend commands from: $impeccable adapt, $impeccable animate, $impeccable audit, $impeccable bolder, $impeccable clarify, $impeccable colorize, $impeccable critique, $impeccable delight, $impeccable distill, $impeccable harden, $impeccable layout, $impeccable optimize, $impeccable overdrive, $impeccable polish, $impeccable quieter, $impeccable shape, $impeccable typeset +- Only recommend commands from: $impeccable adapt, $impeccable animate, $impeccable audit, $impeccable bolder, $impeccable clarify, $impeccable colorize, $impeccable critique, $impeccable delight, $impeccable distill, $impeccable harden, $impeccable layout, $impeccable onboard, $impeccable optimize, $impeccable overdrive, $impeccable polish, $impeccable quieter, $impeccable shape, $impeccable typeset - Order by the user's stated priorities first, then by impact - Each item's description should carry enough context that the command knows what to focus on - Map each Priority Issue to the appropriate command diff --git a/.codex/skills/impeccable/reference/harden.md b/.codex/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/.codex/skills/impeccable/reference/harden.md +++ b/.codex/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/.codex/skills/impeccable/reference/onboard.md b/.codex/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/.codex/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/.codex/skills/impeccable/scripts/command-metadata.json b/.codex/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/.codex/skills/impeccable/scripts/command-metadata.json +++ b/.codex/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/.codex/skills/impeccable/scripts/pin.mjs b/.codex/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/.codex/skills/impeccable/scripts/pin.mjs +++ b/.codex/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ]; diff --git a/.cursor/skills/impeccable/SKILL.md b/.cursor/skills/impeccable/SKILL.md index f3baccb6a..1647b7b40 100644 --- a/.cursor/skills/impeccable/SKILL.md +++ b/.cursor/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." version: 3.0.0 license: Apache 2.0. Based on Anthropic's frontend-design skill. See NOTICE.md for attribution. --- @@ -312,6 +312,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `/impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `/impeccable distill [target]` - Strip to essence, remove complexity > `/impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `/impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `/impeccable animate [target]` - Add purposeful animations and motion @@ -348,7 +349,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/.cursor/skills/impeccable/reference/audit.md b/.cursor/skills/impeccable/reference/audit.md index 206fafb5c..bbba2401b 100644 --- a/.cursor/skills/impeccable/reference/audit.md +++ b/.cursor/skills/impeccable/reference/audit.md @@ -95,7 +95,7 @@ For each issue, document: - **Impact**: How it affects users - **WCAG/Standard**: Which standard it violates (if applicable) - **Recommendation**: How to fix it -- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) ### Patterns & Systemic Issues @@ -114,7 +114,7 @@ List recommended commands in priority order (P0 first, then P1, then P2): 1. **[P?] `/command-name`** — Brief description (specific context from audit findings) 2. **[P?] `/command-name`** — Brief description (specific context) -**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. +**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. After presenting the summary, tell the user: diff --git a/.cursor/skills/impeccable/reference/critique.md b/.cursor/skills/impeccable/reference/critique.md index 8a8ebeb35..4684cb5c0 100644 --- a/.cursor/skills/impeccable/reference/critique.md +++ b/.cursor/skills/impeccable/reference/critique.md @@ -132,7 +132,7 @@ For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuris - **[P?] What**: Name the problem clearly - **Why it matters**: How this hurts users or undermines goals - **Fix**: What to do about it (be concrete) -- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) #### Persona Red Flags > *Consult [personas](personas.md)* @@ -197,7 +197,7 @@ List recommended commands in priority order, based on the user's answers: ... **Rules for recommendations**: -- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset +- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset - Order by the user's stated priorities first, then by impact - Each item's description should carry enough context that the command knows what to focus on - Map each Priority Issue to the appropriate command diff --git a/.cursor/skills/impeccable/reference/harden.md b/.cursor/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/.cursor/skills/impeccable/reference/harden.md +++ b/.cursor/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/.cursor/skills/impeccable/reference/onboard.md b/.cursor/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/.cursor/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/.cursor/skills/impeccable/scripts/command-metadata.json b/.cursor/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/.cursor/skills/impeccable/scripts/command-metadata.json +++ b/.cursor/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/.cursor/skills/impeccable/scripts/pin.mjs b/.cursor/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/.cursor/skills/impeccable/scripts/pin.mjs +++ b/.cursor/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ]; diff --git a/.gemini/skills/impeccable/SKILL.md b/.gemini/skills/impeccable/SKILL.md index ed6950695..56b306632 100644 --- a/.gemini/skills/impeccable/SKILL.md +++ b/.gemini/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." version: 3.0.0 --- @@ -311,6 +311,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `/impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `/impeccable distill [target]` - Strip to essence, remove complexity > `/impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `/impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `/impeccable animate [target]` - Add purposeful animations and motion @@ -347,7 +348,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/.gemini/skills/impeccable/reference/audit.md b/.gemini/skills/impeccable/reference/audit.md index 206fafb5c..bbba2401b 100644 --- a/.gemini/skills/impeccable/reference/audit.md +++ b/.gemini/skills/impeccable/reference/audit.md @@ -95,7 +95,7 @@ For each issue, document: - **Impact**: How it affects users - **WCAG/Standard**: Which standard it violates (if applicable) - **Recommendation**: How to fix it -- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) ### Patterns & Systemic Issues @@ -114,7 +114,7 @@ List recommended commands in priority order (P0 first, then P1, then P2): 1. **[P?] `/command-name`** — Brief description (specific context from audit findings) 2. **[P?] `/command-name`** — Brief description (specific context) -**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. +**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. After presenting the summary, tell the user: diff --git a/.gemini/skills/impeccable/reference/critique.md b/.gemini/skills/impeccable/reference/critique.md index aa3c4a64a..f0f30e36c 100644 --- a/.gemini/skills/impeccable/reference/critique.md +++ b/.gemini/skills/impeccable/reference/critique.md @@ -132,7 +132,7 @@ For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuris - **[P?] What**: Name the problem clearly - **Why it matters**: How this hurts users or undermines goals - **Fix**: What to do about it (be concrete) -- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) #### Persona Red Flags > *Consult [personas](personas.md)* @@ -197,7 +197,7 @@ List recommended commands in priority order, based on the user's answers: ... **Rules for recommendations**: -- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset +- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset - Order by the user's stated priorities first, then by impact - Each item's description should carry enough context that the command knows what to focus on - Map each Priority Issue to the appropriate command diff --git a/.gemini/skills/impeccable/reference/harden.md b/.gemini/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/.gemini/skills/impeccable/reference/harden.md +++ b/.gemini/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/.gemini/skills/impeccable/reference/onboard.md b/.gemini/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/.gemini/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/.gemini/skills/impeccable/scripts/command-metadata.json b/.gemini/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/.gemini/skills/impeccable/scripts/command-metadata.json +++ b/.gemini/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/.gemini/skills/impeccable/scripts/pin.mjs b/.gemini/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/.gemini/skills/impeccable/scripts/pin.mjs +++ b/.gemini/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ]; diff --git a/.kiro/skills/impeccable/SKILL.md b/.kiro/skills/impeccable/SKILL.md index e06824c74..ea9899a5a 100644 --- a/.kiro/skills/impeccable/SKILL.md +++ b/.kiro/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." version: 3.0.0 license: Apache 2.0. Based on Anthropic's frontend-design skill. See NOTICE.md for attribution. --- @@ -312,6 +312,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `/impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `/impeccable distill [target]` - Strip to essence, remove complexity > `/impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `/impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `/impeccable animate [target]` - Add purposeful animations and motion @@ -348,7 +349,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/.kiro/skills/impeccable/reference/audit.md b/.kiro/skills/impeccable/reference/audit.md index 206fafb5c..bbba2401b 100644 --- a/.kiro/skills/impeccable/reference/audit.md +++ b/.kiro/skills/impeccable/reference/audit.md @@ -95,7 +95,7 @@ For each issue, document: - **Impact**: How it affects users - **WCAG/Standard**: Which standard it violates (if applicable) - **Recommendation**: How to fix it -- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) ### Patterns & Systemic Issues @@ -114,7 +114,7 @@ List recommended commands in priority order (P0 first, then P1, then P2): 1. **[P?] `/command-name`** — Brief description (specific context from audit findings) 2. **[P?] `/command-name`** — Brief description (specific context) -**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. +**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. After presenting the summary, tell the user: diff --git a/.kiro/skills/impeccable/reference/critique.md b/.kiro/skills/impeccable/reference/critique.md index 2d9f41a65..f0e1374b5 100644 --- a/.kiro/skills/impeccable/reference/critique.md +++ b/.kiro/skills/impeccable/reference/critique.md @@ -132,7 +132,7 @@ For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuris - **[P?] What**: Name the problem clearly - **Why it matters**: How this hurts users or undermines goals - **Fix**: What to do about it (be concrete) -- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) #### Persona Red Flags > *Consult [personas](personas.md)* @@ -197,7 +197,7 @@ List recommended commands in priority order, based on the user's answers: ... **Rules for recommendations**: -- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset +- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset - Order by the user's stated priorities first, then by impact - Each item's description should carry enough context that the command knows what to focus on - Map each Priority Issue to the appropriate command diff --git a/.kiro/skills/impeccable/reference/harden.md b/.kiro/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/.kiro/skills/impeccable/reference/harden.md +++ b/.kiro/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/.kiro/skills/impeccable/reference/onboard.md b/.kiro/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/.kiro/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/.kiro/skills/impeccable/scripts/command-metadata.json b/.kiro/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/.kiro/skills/impeccable/scripts/command-metadata.json +++ b/.kiro/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/.kiro/skills/impeccable/scripts/pin.mjs b/.kiro/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/.kiro/skills/impeccable/scripts/pin.mjs +++ b/.kiro/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ]; diff --git a/.opencode/skills/impeccable/SKILL.md b/.opencode/skills/impeccable/SKILL.md index 6d274ae73..05deef881 100644 --- a/.opencode/skills/impeccable/SKILL.md +++ b/.opencode/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." version: 3.0.0 user-invocable: true argument-hint: "[command] [target]" @@ -316,6 +316,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `/impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `/impeccable distill [target]` - Strip to essence, remove complexity > `/impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `/impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `/impeccable animate [target]` - Add purposeful animations and motion @@ -352,7 +353,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/.opencode/skills/impeccable/reference/audit.md b/.opencode/skills/impeccable/reference/audit.md index 206fafb5c..bbba2401b 100644 --- a/.opencode/skills/impeccable/reference/audit.md +++ b/.opencode/skills/impeccable/reference/audit.md @@ -95,7 +95,7 @@ For each issue, document: - **Impact**: How it affects users - **WCAG/Standard**: Which standard it violates (if applicable) - **Recommendation**: How to fix it -- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) ### Patterns & Systemic Issues @@ -114,7 +114,7 @@ List recommended commands in priority order (P0 first, then P1, then P2): 1. **[P?] `/command-name`** — Brief description (specific context from audit findings) 2. **[P?] `/command-name`** — Brief description (specific context) -**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. +**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. After presenting the summary, tell the user: diff --git a/.opencode/skills/impeccable/reference/critique.md b/.opencode/skills/impeccable/reference/critique.md index ea2c4d7a7..b6d5084d0 100644 --- a/.opencode/skills/impeccable/reference/critique.md +++ b/.opencode/skills/impeccable/reference/critique.md @@ -132,7 +132,7 @@ For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuris - **[P?] What**: Name the problem clearly - **Why it matters**: How this hurts users or undermines goals - **Fix**: What to do about it (be concrete) -- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) #### Persona Red Flags > *Consult [personas](personas.md)* @@ -197,7 +197,7 @@ List recommended commands in priority order, based on the user's answers: ... **Rules for recommendations**: -- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset +- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset - Order by the user's stated priorities first, then by impact - Each item's description should carry enough context that the command knows what to focus on - Map each Priority Issue to the appropriate command diff --git a/.opencode/skills/impeccable/reference/harden.md b/.opencode/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/.opencode/skills/impeccable/reference/harden.md +++ b/.opencode/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/.opencode/skills/impeccable/reference/onboard.md b/.opencode/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/.opencode/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/.opencode/skills/impeccable/scripts/command-metadata.json b/.opencode/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/.opencode/skills/impeccable/scripts/command-metadata.json +++ b/.opencode/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/.opencode/skills/impeccable/scripts/pin.mjs b/.opencode/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/.opencode/skills/impeccable/scripts/pin.mjs +++ b/.opencode/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ]; diff --git a/.pi/skills/impeccable/SKILL.md b/.pi/skills/impeccable/SKILL.md index be8ec284a..02bf22f9c 100644 --- a/.pi/skills/impeccable/SKILL.md +++ b/.pi/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." version: 3.0.0 license: Apache 2.0. Based on Anthropic's frontend-design skill. See NOTICE.md for attribution. allowed-tools: @@ -314,6 +314,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `/impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `/impeccable distill [target]` - Strip to essence, remove complexity > `/impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `/impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `/impeccable animate [target]` - Add purposeful animations and motion @@ -350,7 +351,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/.pi/skills/impeccable/reference/audit.md b/.pi/skills/impeccable/reference/audit.md index 206fafb5c..bbba2401b 100644 --- a/.pi/skills/impeccable/reference/audit.md +++ b/.pi/skills/impeccable/reference/audit.md @@ -95,7 +95,7 @@ For each issue, document: - **Impact**: How it affects users - **WCAG/Standard**: Which standard it violates (if applicable) - **Recommendation**: How to fix it -- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) ### Patterns & Systemic Issues @@ -114,7 +114,7 @@ List recommended commands in priority order (P0 first, then P1, then P2): 1. **[P?] `/command-name`** — Brief description (specific context from audit findings) 2. **[P?] `/command-name`** — Brief description (specific context) -**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. +**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. After presenting the summary, tell the user: diff --git a/.pi/skills/impeccable/reference/critique.md b/.pi/skills/impeccable/reference/critique.md index c282a6c80..f59217dea 100644 --- a/.pi/skills/impeccable/reference/critique.md +++ b/.pi/skills/impeccable/reference/critique.md @@ -132,7 +132,7 @@ For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuris - **[P?] What**: Name the problem clearly - **Why it matters**: How this hurts users or undermines goals - **Fix**: What to do about it (be concrete) -- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) #### Persona Red Flags > *Consult [personas](personas.md)* @@ -197,7 +197,7 @@ List recommended commands in priority order, based on the user's answers: ... **Rules for recommendations**: -- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset +- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset - Order by the user's stated priorities first, then by impact - Each item's description should carry enough context that the command knows what to focus on - Map each Priority Issue to the appropriate command diff --git a/.pi/skills/impeccable/reference/harden.md b/.pi/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/.pi/skills/impeccable/reference/harden.md +++ b/.pi/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/.pi/skills/impeccable/reference/onboard.md b/.pi/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/.pi/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/.pi/skills/impeccable/scripts/command-metadata.json b/.pi/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/.pi/skills/impeccable/scripts/command-metadata.json +++ b/.pi/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/.pi/skills/impeccable/scripts/pin.mjs b/.pi/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/.pi/skills/impeccable/scripts/pin.mjs +++ b/.pi/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ]; diff --git a/.rovodev/skills/impeccable/SKILL.md b/.rovodev/skills/impeccable/SKILL.md index b42e08bfb..6f33c72a5 100644 --- a/.rovodev/skills/impeccable/SKILL.md +++ b/.rovodev/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." version: 3.0.0 user-invocable: true argument-hint: "[command] [target]" @@ -316,6 +316,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `/impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `/impeccable distill [target]` - Strip to essence, remove complexity > `/impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `/impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `/impeccable animate [target]` - Add purposeful animations and motion @@ -352,7 +353,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/.rovodev/skills/impeccable/reference/audit.md b/.rovodev/skills/impeccable/reference/audit.md index 206fafb5c..bbba2401b 100644 --- a/.rovodev/skills/impeccable/reference/audit.md +++ b/.rovodev/skills/impeccable/reference/audit.md @@ -95,7 +95,7 @@ For each issue, document: - **Impact**: How it affects users - **WCAG/Standard**: Which standard it violates (if applicable) - **Recommendation**: How to fix it -- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) ### Patterns & Systemic Issues @@ -114,7 +114,7 @@ List recommended commands in priority order (P0 first, then P1, then P2): 1. **[P?] `/command-name`** — Brief description (specific context from audit findings) 2. **[P?] `/command-name`** — Brief description (specific context) -**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. +**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. After presenting the summary, tell the user: diff --git a/.rovodev/skills/impeccable/reference/critique.md b/.rovodev/skills/impeccable/reference/critique.md index c282a6c80..f59217dea 100644 --- a/.rovodev/skills/impeccable/reference/critique.md +++ b/.rovodev/skills/impeccable/reference/critique.md @@ -132,7 +132,7 @@ For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuris - **[P?] What**: Name the problem clearly - **Why it matters**: How this hurts users or undermines goals - **Fix**: What to do about it (be concrete) -- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) #### Persona Red Flags > *Consult [personas](personas.md)* @@ -197,7 +197,7 @@ List recommended commands in priority order, based on the user's answers: ... **Rules for recommendations**: -- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset +- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset - Order by the user's stated priorities first, then by impact - Each item's description should carry enough context that the command knows what to focus on - Map each Priority Issue to the appropriate command diff --git a/.rovodev/skills/impeccable/reference/harden.md b/.rovodev/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/.rovodev/skills/impeccable/reference/harden.md +++ b/.rovodev/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/.rovodev/skills/impeccable/reference/onboard.md b/.rovodev/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/.rovodev/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/.rovodev/skills/impeccable/scripts/command-metadata.json b/.rovodev/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/.rovodev/skills/impeccable/scripts/command-metadata.json +++ b/.rovodev/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/.rovodev/skills/impeccable/scripts/pin.mjs b/.rovodev/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/.rovodev/skills/impeccable/scripts/pin.mjs +++ b/.rovodev/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ]; diff --git a/.trae-cn/skills/impeccable/SKILL.md b/.trae-cn/skills/impeccable/SKILL.md index 177238ebb..7eb04cc1a 100644 --- a/.trae-cn/skills/impeccable/SKILL.md +++ b/.trae-cn/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." version: 3.0.0 user-invocable: true argument-hint: "[command] [target]" @@ -314,6 +314,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `/impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `/impeccable distill [target]` - Strip to essence, remove complexity > `/impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `/impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `/impeccable animate [target]` - Add purposeful animations and motion @@ -350,7 +351,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/.trae-cn/skills/impeccable/reference/audit.md b/.trae-cn/skills/impeccable/reference/audit.md index 206fafb5c..bbba2401b 100644 --- a/.trae-cn/skills/impeccable/reference/audit.md +++ b/.trae-cn/skills/impeccable/reference/audit.md @@ -95,7 +95,7 @@ For each issue, document: - **Impact**: How it affects users - **WCAG/Standard**: Which standard it violates (if applicable) - **Recommendation**: How to fix it -- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) ### Patterns & Systemic Issues @@ -114,7 +114,7 @@ List recommended commands in priority order (P0 first, then P1, then P2): 1. **[P?] `/command-name`** — Brief description (specific context from audit findings) 2. **[P?] `/command-name`** — Brief description (specific context) -**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. +**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. After presenting the summary, tell the user: diff --git a/.trae-cn/skills/impeccable/reference/critique.md b/.trae-cn/skills/impeccable/reference/critique.md index 8866153fc..2ced96a7c 100644 --- a/.trae-cn/skills/impeccable/reference/critique.md +++ b/.trae-cn/skills/impeccable/reference/critique.md @@ -132,7 +132,7 @@ For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuris - **[P?] What**: Name the problem clearly - **Why it matters**: How this hurts users or undermines goals - **Fix**: What to do about it (be concrete) -- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) #### Persona Red Flags > *Consult [personas](personas.md)* @@ -197,7 +197,7 @@ List recommended commands in priority order, based on the user's answers: ... **Rules for recommendations**: -- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset +- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset - Order by the user's stated priorities first, then by impact - Each item's description should carry enough context that the command knows what to focus on - Map each Priority Issue to the appropriate command diff --git a/.trae-cn/skills/impeccable/reference/harden.md b/.trae-cn/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/.trae-cn/skills/impeccable/reference/harden.md +++ b/.trae-cn/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/.trae-cn/skills/impeccable/reference/onboard.md b/.trae-cn/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/.trae-cn/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/.trae-cn/skills/impeccable/scripts/command-metadata.json b/.trae-cn/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/.trae-cn/skills/impeccable/scripts/command-metadata.json +++ b/.trae-cn/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/.trae-cn/skills/impeccable/scripts/pin.mjs b/.trae-cn/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/.trae-cn/skills/impeccable/scripts/pin.mjs +++ b/.trae-cn/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ]; diff --git a/.trae/skills/impeccable/SKILL.md b/.trae/skills/impeccable/SKILL.md index d97a8e5ce..94637bd53 100644 --- a/.trae/skills/impeccable/SKILL.md +++ b/.trae/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." version: 3.0.0 user-invocable: true argument-hint: "[command] [target]" @@ -314,6 +314,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `/impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `/impeccable distill [target]` - Strip to essence, remove complexity > `/impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `/impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `/impeccable animate [target]` - Add purposeful animations and motion @@ -350,7 +351,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/.trae/skills/impeccable/reference/audit.md b/.trae/skills/impeccable/reference/audit.md index 206fafb5c..bbba2401b 100644 --- a/.trae/skills/impeccable/reference/audit.md +++ b/.trae/skills/impeccable/reference/audit.md @@ -95,7 +95,7 @@ For each issue, document: - **Impact**: How it affects users - **WCAG/Standard**: Which standard it violates (if applicable) - **Recommendation**: How to fix it -- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command to use (prefer: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) ### Patterns & Systemic Issues @@ -114,7 +114,7 @@ List recommended commands in priority order (P0 first, then P1, then P2): 1. **[P?] `/command-name`** — Brief description (specific context from audit findings) 2. **[P?] `/command-name`** — Brief description (specific context) -**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. +**Rules**: Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset. Map findings to the most appropriate command. End with `/impeccable polish` as the final step if any fixes were recommended. After presenting the summary, tell the user: diff --git a/.trae/skills/impeccable/reference/critique.md b/.trae/skills/impeccable/reference/critique.md index 8866153fc..2ced96a7c 100644 --- a/.trae/skills/impeccable/reference/critique.md +++ b/.trae/skills/impeccable/reference/critique.md @@ -132,7 +132,7 @@ For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuris - **[P?] What**: Name the problem clearly - **Why it matters**: How this hurts users or undermines goals - **Fix**: What to do about it (be concrete) -- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) +- **Suggested command**: Which command could address this (from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset) #### Persona Red Flags > *Consult [personas](personas.md)* @@ -197,7 +197,7 @@ List recommended commands in priority order, based on the user's answers: ... **Rules for recommendations**: -- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset +- Only recommend commands from: /impeccable adapt, /impeccable animate, /impeccable audit, /impeccable bolder, /impeccable clarify, /impeccable colorize, /impeccable critique, /impeccable delight, /impeccable distill, /impeccable harden, /impeccable layout, /impeccable onboard, /impeccable optimize, /impeccable overdrive, /impeccable polish, /impeccable quieter, /impeccable shape, /impeccable typeset - Order by the user's stated priorities first, then by impact - Each item's description should carry enough context that the command knows what to focus on - Map each Priority Issue to the appropriate command diff --git a/.trae/skills/impeccable/reference/harden.md b/.trae/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/.trae/skills/impeccable/reference/harden.md +++ b/.trae/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/.trae/skills/impeccable/reference/onboard.md b/.trae/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/.trae/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/.trae/skills/impeccable/scripts/command-metadata.json b/.trae/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/.trae/skills/impeccable/scripts/command-metadata.json +++ b/.trae/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/.trae/skills/impeccable/scripts/pin.mjs b/.trae/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/.trae/skills/impeccable/scripts/pin.mjs +++ b/.trae/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ]; diff --git a/CLAUDE.md b/CLAUDE.md index c89f6ed1a..db3cb1c25 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,7 +2,7 @@ ## Architecture (v3.0+) -There is **one** user-invocable skill, `impeccable`, with **20 commands** underneath it. Users type `/impeccable polish`, `/impeccable audit`, etc. The skill is defined in `source/skills/impeccable/`: +There is **one** user-invocable skill, `impeccable`, with **21 commands** underneath it. Users type `/impeccable polish`, `/impeccable audit`, etc. The skill is defined in `source/skills/impeccable/`: - `SKILL.md` — frontmatter (with the auto-trigger-optimized description and the `allowed-tools` list), shared design principles, and the **Command Router** section that dispatches sub-commands via argument matching. - `reference/` — one `.md` per command (`audit.md`, `polish.md`, `critique.md`, etc.) plus the domain reference files (`typography.md`, `color-and-contrast.md`, etc.). When a sub-command is matched, the router loads its reference file. diff --git a/NOTICE.md b/NOTICE.md index 2843ee71b..89731692d 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -13,5 +13,5 @@ The `impeccable` skill in this project builds on Anthropic's original frontend-d This project extends the original with: - 7 domain-specific reference files (typography, color-and-contrast, spatial-design, motion-design, interaction-design, responsive-design, ux-writing) -- 20 commands +- 21 commands - Expanded patterns and anti-patterns diff --git a/README.md b/README.md index 629065501..5296332e0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Impeccable -The vocabulary you didn't know you needed. 1 skill, 20 commands, and curated anti-patterns for impeccable frontend design. +The vocabulary you didn't know you needed. 1 skill, 21 commands, and curated anti-patterns for impeccable frontend design. > **Quick start:** Visit [impeccable.style](https://impeccable.style) to download ready-to-use bundles. @@ -12,7 +12,7 @@ Every LLM learned from the same generic templates. Without guidance, you get the Impeccable fights that bias with: - **An expanded skill** with 7 domain-specific reference files ([view source](source/skills/impeccable/)) -- **20 commands** to audit, review, polish, distill, animate, and more +- **21 commands** to audit, review, polish, distill, animate, and more - **Curated anti-patterns** that explicitly tell the AI what NOT to do ## What's Included @@ -31,7 +31,7 @@ A comprehensive design skill with 7 domain-specific references ([view skill](sou | [responsive-design](source/skills/impeccable/reference/responsive-design.md) | Mobile-first, fluid design, container queries | | [ux-writing](source/skills/impeccable/reference/ux-writing.md) | Button labels, error messages, empty states | -### 20 Commands +### 21 Commands All commands are accessed through `/impeccable`: @@ -47,7 +47,8 @@ All commands are accessed through `/impeccable`: | `/impeccable bolder` | Amplify boring designs | | `/impeccable quieter` | Tone down overly bold designs | | `/impeccable distill` | Strip to essence | -| `/impeccable harden` | Error handling, onboarding, i18n, edge cases | +| `/impeccable harden` | Error handling, i18n, text overflow, edge cases | +| `/impeccable onboard` | First-run flows, empty states, activation paths | | `/impeccable animate` | Add purposeful motion | | `/impeccable colorize` | Introduce strategic color | | `/impeccable typeset` | Fix font choices, hierarchy, sizing | diff --git a/content/site/skills/harden.md b/content/site/skills/harden.md index 8b80e2bd0..139c96fd6 100644 --- a/content/site/skills/harden.md +++ b/content/site/skills/harden.md @@ -1,24 +1,23 @@ --- -tagline: "Make interfaces production-ready. Edge cases, onboarding, i18n, error states, overflow." +tagline: "Make interfaces production-ready. Edge cases, i18n, error states, overflow." --- ## When to use it -`/impeccable harden` is for the day your interface meets reality. Real user data is messy: names that are 60 characters long, product titles in German, prices in the billions, empty lists, 500 errors, offline modes, right-to-left text. Designs that only work with perfect data are not production-ready. +`/impeccable harden` is for the day your interface meets reality. Real user data is messy: names that are 60 characters long, product titles in German, prices in the billions, 500 errors, offline modes, right-to-left text. Designs that only work with perfect data are not production-ready. -Reach for it before launch, before opening to a new market, or any time a bug report starts with "our user had a really long name and". +Reach for it before launch, before opening to a new market, or any time a bug report starts with "our user had a really long name and". For first-run flows, empty-state activation, and onboarding design, reach for `/impeccable onboard` instead. ## How it works -The skill works through five dimensions of real-world resilience: +The skill works through four dimensions of real-world resilience: -1. **Text and data extremes**. Long text, short text, special characters, emoji, RTL, numbers in the billions, 1000-item lists, zero-data empty states. +1. **Text and data extremes**. Long text, short text, special characters, emoji, RTL, numbers in the billions, 1000-item lists. 2. **Error scenarios**. Network failures, API 4xx/5xx, validation errors, permission errors, rate limits, concurrent operations. 3. **Internationalization**. Long translations (German is often 30% longer than English), RTL languages, date and number formats, currency symbols, character sets. -4. **Onboarding and empty states**. First-run experiences, empty state design, progressive disclosure, feature discovery. Making the feature work for someone who has never seen it before. -5. **Device and context**. Touch targets, offline behavior, slow connections, low-power mode. +4. **Device and context**. Touch targets, offline behavior, slow connections, low-power mode. -For each dimension it identifies the failure mode, then applies the concrete fix: overflow handling, proper empty states, informative error UI, i18n-safe layouts, pluralization, sensible fallbacks. +For each dimension it identifies the failure mode, then applies the concrete fix: overflow handling, informative error UI, i18n-safe layouts, pluralization, sensible fallbacks. ## Try it diff --git a/content/site/skills/onboard.md b/content/site/skills/onboard.md index d081bdf9a..dd4e2c9ca 100644 --- a/content/site/skills/onboard.md +++ b/content/site/skills/onboard.md @@ -4,11 +4,11 @@ tagline: "Design first-run experiences, empty states, and paths to value." ## When to use it -`/onboard` is for the moments that decide whether a new user sticks around: the first screen, the empty state, the setup flow, the product tour, the "what do I do now" gap. Reach for it when activation is weak, when new users drop off before reaching value, or when your product has empty states that say "no items yet" and stop there. +`/impeccable onboard` is for the moments that decide whether a new user sticks around: the first screen, the empty state, the setup flow, the product tour, the "what do I do now" gap. Reach for it when activation is weak, when new users drop off before reaching value, or when your product has empty states that say "no items yet" and stop there. ## How it works -The skill starts from one question: what is the aha moment, and how fast can a new user get there. Every design decision points at that moment. +The command starts from one question: what is the aha moment, and how fast can a new user get there. Every design decision points at that moment. It works across the surfaces that shape first impressions: @@ -18,12 +18,12 @@ It works across the surfaces that shape first impressions: 4. **Progressive disclosure**: advanced features stay out of the way until they are earned. 5. **Activation events**: the moment a user first experiences the core value is instrumented and celebrated, quietly. -The skill resists two common failure modes: over-tutorialized onboarding where users click through a carousel before they can touch anything, and zero-onboarding where users are dropped into an empty app and expected to figure it out. +The command resists two common failure modes: over-tutorialized onboarding where users click through a carousel before they can touch anything, and zero-onboarding where users are dropped into an empty app and expected to figure it out. ## Try it ``` -/onboard the editor +/impeccable onboard the editor ``` Typical output: @@ -36,5 +36,5 @@ Typical output: ## Pitfalls - **Adding a product tour as the default answer.** Most products do not need a tour. They need a better first screen. Tours are a crutch. -- **Designing onboarding without defining the aha moment.** If you cannot say in one sentence what the user should feel in the first 60 seconds, go back to `/shape` first. +- **Designing onboarding without defining the aha moment.** If you cannot say in one sentence what the user should feel in the first 60 seconds, go back to `/impeccable shape` first. - **Running onboard on a broken flow.** Fix the flow first. Onboarding cannot rescue a product where the core action is broken. diff --git a/public/index.html b/public/index.html index 7e0fb3a4f..41ac9bf99 100644 --- a/public/index.html +++ b/public/index.html @@ -13,7 +13,7 @@ Impeccable: The missing upgrade to Anthropic's impeccable skill - + @@ -21,7 +21,7 @@ - + @@ -29,7 +29,7 @@ - + @@ -88,13 +88,13 @@

Impeccable

Design fluency for AI harnesses

-

Great design prompts require design vocabulary. Most people don't have it. Impeccable teaches your AI deep design knowledge and gives you 20 commands to steer the result.

-

Impeccable teaches your AI real design and gives you 20 commands to steer the result.

+

Great design prompts require design vocabulary. Most people don't have it. Impeccable teaches your AI deep design knowledge and gives you 21 commands to steer the result.

+

Impeccable teaches your AI real design and gives you 21 commands to steer the result.

What's included
- Impeccable agent skill with 20 design commands + Impeccable agent skill with 21 design commands · Optional CLI + Chrome extension
@@ -117,7 +117,7 @@
- + @@ -203,7 +203,7 @@

The Language

-

20 commands form a shared vocabulary between you and your AI. Each one encodes a specific design discipline, so you can steer with precision.

+

21 commands form a shared vocabulary between you and your AI. Each one encodes a specific design discipline, so you can steer with precision.

@@ -332,7 +332,7 @@

1Install the skill and CLI

-

One agent skill that teaches your AI to design, with 20 commands bundled inside. Plus the CLI that powers visual mode and scans files outside the skill.

+

One agent skill that teaches your AI to design, with 21 commands bundled inside. Plus the CLI that powers visual mode and scans files outside the skill.

@@ -410,7 +410,7 @@

2Use it

-

Impeccable gives you a shared design vocabulary with your AI. 20 commands (polish, audit, critique, typeset, and more) that each encode a specific design discipline, so you can steer with precision.

+

Impeccable gives you a shared design vocabulary with your AI. 21 commands (polish, audit, critique, typeset, and more) that each encode a specific design discipline, so you can steer with precision.

  1. @@ -509,7 +509,7 @@ April 10, 2026
    -
  • 18 skills became 1 skill with 20 commands. Every command now lives under /impeccable: /impeccable audit, /impeccable polish, /impeccable critique, and the rest. One entry in your / menu instead of 18, a shared design vocabulary between you and your AI, and far less namespace pollution as the plugin ecosystem grows. The autocomplete shows the full list the moment you type /impeccable.
  • +
  • 18 skills became 1 skill with 21 commands. Every command now lives under /impeccable: /impeccable audit, /impeccable polish, /impeccable critique, and the rest. One entry in your / menu instead of 18, a shared design vocabulary between you and your AI, and far less namespace pollution as the plugin ecosystem grows. The autocomplete shows the full list the moment you type /impeccable.
  • Pin your favorites back as shortcuts. Run /impeccable pin audit and /audit becomes a standalone command again, without reversing the consolidation. Under the hood it writes a lightweight redirect skill that delegates to /impeccable audit, so updates to the parent skill flow through automatically. /impeccable unpin audit removes it.
diff --git a/public/js/components/framework-viz.js b/public/js/components/framework-viz.js index d74881b96..204311e89 100644 --- a/public/js/components/framework-viz.js +++ b/public/js/components/framework-viz.js @@ -44,6 +44,7 @@ const commandSymbols = { 'polish': 'Po', 'optimize': 'Op', 'harden': 'Ha', + 'onboard': 'On', 'teach': 'Te', 'extract': 'Ex' }; @@ -54,8 +55,8 @@ const commandNumbers = { 'typeset': 6, 'layout': 7, 'colorize': 8, 'animate': 9, 'delight': 10, 'bolder': 11, 'quieter': 12, 'overdrive': 13, 'distill': 14, 'clarify': 15, 'adapt': 16, - 'polish': 17, 'optimize': 18, 'harden': 19, - 'teach': 20, 'extract': 21 + 'polish': 17, 'optimize': 18, 'harden': 19, 'onboard': 20, + 'teach': 21, 'extract': 22 }; // After the v3.0 consolidation, all commands except the root "impeccable" are diff --git a/public/js/data.js b/public/js/data.js index 4861eb896..88b808d73 100644 --- a/public/js/data.js +++ b/public/js/data.js @@ -71,7 +71,8 @@ export const commandProcessSteps = { 'adapt': ['Analyze', 'Adjust', 'Optimize'], 'polish': ['Discover', 'Review', 'Refine', 'Verify'], 'optimize': ['Profile', 'Identify', 'Improve', 'Measure'], - 'harden': ['Test', 'Handle', 'Onboard', 'Validate'], + 'harden': ['Assess', 'Implement', 'Test', 'Verify'], + 'onboard': ['Identify', 'Design', 'Guide', 'Measure'], 'teach': ['Explore', 'Interview', 'Synthesize', 'Save'], 'extract': ['Identify', 'Abstract', 'Migrate', 'Document'] }; @@ -101,6 +102,7 @@ export const commandCategories = { 'polish': 'harden', 'optimize': 'harden', 'harden': 'harden', + 'onboard': 'harden', // SYSTEM - setup and tooling 'teach': 'system', 'extract': 'system' @@ -134,7 +136,8 @@ export const commandRelationships = { 'adapt': { combinesWith: ['polish', 'clarify'], flow: 'Simplify: Adapt for different contexts' }, 'polish': { flow: 'Harden: Final pass and design system alignment' }, 'optimize': { flow: 'Harden: Performance improvements' }, - 'harden': { combinesWith: ['optimize'], flow: 'Harden: Edge cases, onboarding, and error handling' }, + 'harden': { combinesWith: ['optimize'], flow: 'Harden: Edge cases, error handling, and i18n' }, + 'onboard': { combinesWith: ['clarify', 'delight'], flow: 'Harden: First-run experiences and empty states' }, 'teach': { flow: 'System: One-time project design context setup' }, 'extract': { flow: 'System: Extract design system components and tokens' } }; diff --git a/public/js/generated/counts.js b/public/js/generated/counts.js index 6a9333419..420bdc2f0 100644 --- a/public/js/generated/counts.js +++ b/public/js/generated/counts.js @@ -1,3 +1,3 @@ // GENERATED by build.js — do not edit -export const COMMAND_COUNT = 20; +export const COMMAND_COUNT = 21; export const DETECTION_COUNT = 25; diff --git a/public/sitemap.xml b/public/sitemap.xml index b78f423ef..164eb40c3 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -40,8 +40,8 @@ 0.9 - - https://impeccable.style/docs/impeccable2026-04-100.9 + + https://impeccable.style/docs/impeccable2026-04-110.9 https://impeccable.style/docs/craft2026-04-100.8 https://impeccable.style/docs/teach2026-04-100.8 https://impeccable.style/docs/extract2026-04-100.8 @@ -52,7 +52,8 @@ https://impeccable.style/docs/bolder2026-04-100.8 https://impeccable.style/docs/quieter2026-04-100.8 https://impeccable.style/docs/distill2026-04-100.8 - https://impeccable.style/docs/harden2026-04-100.8 + https://impeccable.style/docs/harden2026-04-110.8 + https://impeccable.style/docs/onboard2026-04-110.8 https://impeccable.style/docs/animate2026-04-100.8 https://impeccable.style/docs/colorize2026-04-100.8 https://impeccable.style/docs/typeset2026-04-100.8 diff --git a/scripts/build-sub-pages.js b/scripts/build-sub-pages.js index 621509328..b48c0adf1 100644 --- a/scripts/build-sub-pages.js +++ b/scripts/build-sub-pages.js @@ -695,7 +695,7 @@ export async function generateSubPages(rootDir) { const html = renderPage({ title: 'Docs | Impeccable', description: - '20 commands that teach your AI harness how to design. Browse by category: create, evaluate, refine, simplify, harden.', + '21 commands that teach your AI harness how to design. Browse by category: create, evaluate, refine, simplify, harden.', bodyHtml: wrapInDocsLayout(sidebar, main), activeNav: 'docs', canonicalPath: '/docs', diff --git a/scripts/lib/sub-pages-data.js b/scripts/lib/sub-pages-data.js index 7523de8dd..964b26399 100644 --- a/scripts/lib/sub-pages-data.js +++ b/scripts/lib/sub-pages-data.js @@ -36,7 +36,6 @@ const EXCLUDED_SKILLS = new Set([ 'teach-impeccable', // deprecated, folded into /impeccable teach 'arrange', // renamed to layout 'normalize', // merged into /polish - 'onboard', // merged into /harden ]); /** @@ -69,6 +68,7 @@ const SKILL_CATEGORIES = { polish: 'harden', optimize: 'harden', harden: 'harden', + onboard: 'harden', // SYSTEM - setup and tooling teach: 'system', extract: 'system', @@ -126,6 +126,7 @@ export const COMMAND_RELATIONSHIPS = { polish: {}, optimize: {}, harden: { combinesWith: ['optimize'] }, + onboard: { combinesWith: ['clarify', 'delight'] }, // System teach: {}, extract: {}, diff --git a/scripts/lib/utils.js b/scripts/lib/utils.js index 1965a1f27..62234bfe1 100644 --- a/scripts/lib/utils.js +++ b/scripts/lib/utils.js @@ -394,8 +394,8 @@ const EXCLUDED_FROM_SUGGESTIONS = new Set([ // These are the commands that audit/critique/etc. reference when suggesting next steps. const IMPECCABLE_SUB_COMMANDS = [ 'adapt', 'animate', 'audit', 'bolder', 'clarify', 'colorize', - 'critique', 'delight', 'distill', 'harden', 'layout', 'optimize', - 'overdrive', 'polish', 'quieter', 'shape', 'typeset', + 'critique', 'delight', 'distill', 'harden', 'layout', 'onboard', + 'optimize', 'overdrive', 'polish', 'quieter', 'shape', 'typeset', ]; export function replacePlaceholders(content, provider, commandNames = [], allSkillNames = []) { diff --git a/source/skills/impeccable/SKILL.md b/source/skills/impeccable/SKILL.md index 2bd1bad97..fac01b414 100644 --- a/source/skills/impeccable/SKILL.md +++ b/source/skills/impeccable/SKILL.md @@ -1,6 +1,6 @@ --- name: impeccable -description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors/empty states, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, layout, optimize, overdrive, typeset." +description: "Design fluency for frontend interfaces. Build distinctive, production-grade web components, pages, artifacts, posters, and applications with high design quality. Also handles: critique/review/evaluate designs, audit accessibility/performance/responsive, polish finishing touches, improve typography/fonts/readability, fix layout/spacing/hierarchy, add animation/transitions/motion, adapt for mobile/tablet/responsive, simplify/declutter/distill, amplify bland/generic/safe designs, tone down loud/overwhelming designs, add color to gray/monochromatic interfaces, improve UX copy/labels/error messages, harden for production with edge cases/i18n/errors, design onboarding/first-run/empty states/activation flows, optimize slow/laggy performance, plan UX before coding, extract design tokens, or push boundaries with shaders/physics/scroll effects. Commands: craft, teach, extract, pin, audit, critique, polish, shape, adapt, animate, bolder, quieter, colorize, clarify, delight, distill, harden, onboard, layout, optimize, overdrive, typeset." argument-hint: "[command] [target]" user-invocable: true allowed-tools: @@ -315,6 +315,7 @@ This skill supports sub-commands. Parse the first word of the argument string to > `{{command_prefix}}impeccable quieter [target]` - Tone down aggressive/overstimulating designs > `{{command_prefix}}impeccable distill [target]` - Strip to essence, remove complexity > `{{command_prefix}}impeccable harden [target]` - Production-ready: errors, i18n, edge cases +> `{{command_prefix}}impeccable onboard [target]` - Design first-run flows, empty states, activation > > **Enhance** > `{{command_prefix}}impeccable animate [target]` - Add purposeful animations and motion @@ -351,7 +352,8 @@ When a sub-command is matched, load the linked reference and follow its instruct | `bolder` | [bolder](reference/bolder.md) | Amplify safe or boring designs for more visual impact | | `quieter` | [quieter](reference/quieter.md) | Tone down visually aggressive or overstimulating designs | | `distill` | [distill](reference/distill.md) | Strip designs to their essence, remove unnecessary complexity | -| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, edge cases, onboarding | +| `harden` | [harden](reference/harden.md) | Production-ready: error handling, i18n, text overflow, edge cases | +| `onboard` | [onboard](reference/onboard.md) | Design onboarding flows, first-run experiences, and empty states that guide users to value | | `animate` | [animate](reference/animate.md) | Add purposeful animations and micro-interactions | | `colorize` | [colorize](reference/colorize.md) | Add strategic color to monochromatic interfaces | | `typeset` | [typeset](reference/typeset.md) | Improve typography: fonts, hierarchy, sizing, readability | diff --git a/source/skills/impeccable/reference/harden.md b/source/skills/impeccable/reference/harden.md index af8b8a703..a27c669a0 100644 --- a/source/skills/impeccable/reference/harden.md +++ b/source/skills/impeccable/reference/harden.md @@ -217,40 +217,6 @@ t('items', { count }) // Handles complex plural rules - Feature detection (not browser detection) - Test in target browsers -### Onboarding & First-Run Experience - -Production-ready features work for first-time users, not just power users. Design the paths that get new users to value: - -**Empty states**: Every zero-data screen needs: -- What will appear here (description or illustration) -- Why it matters to the user -- Clear CTA to create the first item or start from a template -- Visual interest (not just blank space with "No items yet") - -Empty state types to handle: -- **First use**: emphasize value, provide templates -- **User cleared**: light touch, easy to recreate -- **No results**: suggest a different query, offer to clear filters -- **No permissions**: explain why, how to get access - -**First-run experience**: Get users to their "aha moment" as quickly as possible. -- Show, don't tell -- working examples over descriptions -- Progressive disclosure -- teach one thing at a time, not everything upfront -- Make onboarding optional -- let experienced users skip -- Provide smart defaults so required setup is minimal - -**Feature discovery**: Teach features when users need them, not upfront. -- Contextual tooltips at point of use (brief, dismissable, one-time) -- Badges or indicators on new or unused features -- Celebrate activation events quietly (a toast, not a modal) - -**NEVER**: -- Force long onboarding before users can touch the product -- Show the same tooltip repeatedly (track and respect dismissals) -- Block the entire UI during a guided tour -- Create separate tutorial modes disconnected from the real product -- Design empty states that just say "No items" with no next action - ### Input Validation & Sanitization **Client-side validation**: diff --git a/source/skills/impeccable/reference/onboard.md b/source/skills/impeccable/reference/onboard.md new file mode 100644 index 000000000..257c7d0f0 --- /dev/null +++ b/source/skills/impeccable/reference/onboard.md @@ -0,0 +1,234 @@ +> **Additional context needed**: the "aha moment" you want users to reach, and users' experience level. + +Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly. + +## Assess Onboarding Needs + +Understand what users need to learn and why: + +1. **Identify the challenge**: + - What are users trying to accomplish? + - What's confusing or unclear about current experience? + - Where do users get stuck or drop off? + - What's the "aha moment" we want users to reach? + +2. **Understand the users**: + - What's their experience level? (Beginners, power users, mixed?) + - What's their motivation? (Excited and exploring? Required by work?) + - What's their time commitment? (5 minutes? 30 minutes?) + - What alternatives do they know? (Coming from competitor? New to category?) + +3. **Define success**: + - What's the minimum users need to learn to be successful? + - What's the key action we want them to take? (First project? First invite?) + - How do we know onboarding worked? (Completion rate? Time to value?) + +**CRITICAL**: Onboarding should get users to value as quickly as possible, not teach everything possible. + +## Onboarding Principles + +Follow these core principles: + +### Show, Don't Tell +- Demonstrate with working examples, not just descriptions +- Provide real functionality in onboarding, not separate tutorial mode +- Use progressive disclosure, teach one thing at a time + +### Make It Optional (When Possible) +- Let experienced users skip onboarding +- Don't block access to product +- Provide "Skip" or "I'll explore on my own" options + +### Time to Value +- Get users to their "aha moment" ASAP +- Front-load most important concepts +- Teach 20% that delivers 80% of value +- Save advanced features for contextual discovery + +### Context Over Ceremony +- Teach features when users need them, not upfront +- Empty states are onboarding opportunities +- Tooltips and hints at point of use + +### Respect User Intelligence +- Don't patronize or over-explain +- Be concise and clear +- Assume users can figure out standard patterns + +## Design Onboarding Experiences + +Create appropriate onboarding for the context: + +### Initial Product Onboarding + +**Welcome Screen**: +- Clear value proposition (what is this product?) +- What users will learn/accomplish +- Time estimate (honest about commitment) +- Option to skip (for experienced users) + +**Account Setup**: +- Minimal required information (collect more later) +- Explain why you're asking for each piece of information +- Smart defaults where possible +- Social login when appropriate + +**Core Concept Introduction**: +- Introduce 1-3 core concepts (not everything) +- Use simple language and examples +- Interactive when possible (do, don't just read) +- Progress indication (step 1 of 3) + +**First Success**: +- Guide users to accomplish something real +- Pre-populated examples or templates +- Celebrate completion (but don't overdo it) +- Clear next steps + +### Feature Discovery & Adoption + +**Empty States**: +Instead of blank space, show: +- What will appear here (description + screenshot/illustration) +- Why it's valuable +- Clear CTA to create first item +- Example or template option + +Example: +``` +No projects yet +Projects help you organize your work and collaborate with your team. +[Create your first project] or [Start from template] +``` + +**Contextual Tooltips**: +- Appear at relevant moment (first time user sees feature) +- Point directly at relevant UI element +- Brief explanation + benefit +- Dismissable (with "Don't show again" option) +- Optional "Learn more" link + +**Feature Announcements**: +- Highlight new features when they're released +- Show what's new and why it matters +- Let users try immediately +- Dismissable + +**Progressive Onboarding**: +- Teach features when users encounter them +- Badges or indicators on new/unused features +- Unlock complexity gradually (don't show all options immediately) + +### Guided Tours & Walkthroughs + +**When to use**: +- Complex interfaces with many features +- Significant changes to existing product +- Industry-specific tools needing domain knowledge + +**How to design**: +- Spotlight specific UI elements (dim rest of page) +- Keep steps short (3-7 steps max per tour) +- Allow users to click through tour freely +- Include "Skip tour" option +- Make replayable (help menu) + +**Best practices**: +- Interactive over passive (let users click real buttons) +- Focus on workflow, not features ("Create a project" not "This is the project button") +- Provide sample data so actions work + +### Interactive Tutorials + +**When to use**: +- Users need hands-on practice +- Concepts are complex or unfamiliar +- High stakes (better to practice in safe environment) + +**How to design**: +- Sandbox environment with sample data +- Clear objectives ("Create a chart showing sales by region") +- Step-by-step guidance +- Validation (confirm they did it right) +- Graduation moment (you're ready!) + +### Documentation & Help + +**In-product help**: +- Contextual help links throughout interface +- Keyboard shortcut reference +- Search-able help center +- Video tutorials for complex workflows + +**Help patterns**: +- `?` icon near complex features +- "Learn more" links in tooltips +- Keyboard shortcut hints (`⌘K` shown on search box) + +## Empty State Design + +Every empty state needs: + +### What Will Be Here +"Your recent projects will appear here" + +### Why It Matters +"Projects help you organize your work and collaborate with your team" + +### How to Get Started +[Create project] or [Import from template] + +### Visual Interest +Illustration or icon (not just text on blank page) + +### Contextual Help +"Need help getting started? [Watch 2-min tutorial]" + +**Empty state types**: +- **First use**: Never used this feature (emphasize value, provide template) +- **User cleared**: Intentionally deleted everything (light touch, easy to recreate) +- **No results**: Search or filter returned nothing (suggest different query, clear filters) +- **No permissions**: Can't access (explain why, how to get access) +- **Error state**: Failed to load (explain what happened, retry option) + +## Implementation Patterns + +### Technical approaches: + +**Tooltip libraries**: Tippy.js, Popper.js +**Tour libraries**: Intro.js, Shepherd.js, React Joyride +**Modal patterns**: Focus trap, backdrop, ESC to close +**Progress tracking**: LocalStorage for "seen" states +**Analytics**: Track completion, drop-off points + +**Storage patterns**: +```javascript +// Track which onboarding steps user has seen +localStorage.setItem('onboarding-completed', 'true'); +localStorage.setItem('feature-tooltip-seen-reports', 'true'); +``` + +**IMPORTANT**: Don't show same onboarding twice (annoying). Track completion and respect dismissals. + +**NEVER**: +- Force users through long onboarding before they can use product +- Patronize users with obvious explanations +- Show same tooltip repeatedly (respect dismissals) +- Block all UI during tour (let users explore) +- Create separate tutorial mode disconnected from real product +- Overwhelm with information upfront (progressive disclosure!) +- Hide "Skip" or make it hard to find +- Forget about returning users (don't show initial onboarding again) + +## Verify Onboarding Quality + +Test with real users: + +- **Time to completion**: Can users complete onboarding quickly? +- **Comprehension**: Do users understand after completing? +- **Action**: Do users take desired next step? +- **Skip rate**: Are too many users skipping? (Maybe it's too long or not valuable) +- **Completion rate**: Are users completing? (If low, simplify) +- **Time to value**: How long until users get first value? + +Remember: You're a product educator with excellent teaching instincts. Get users to their "aha moment" as quickly as possible. Teach the essential, make it contextual, respect user time and intelligence. diff --git a/source/skills/impeccable/scripts/command-metadata.json b/source/skills/impeccable/scripts/command-metadata.json index 38806f3f5..687db0bdb 100644 --- a/source/skills/impeccable/scripts/command-metadata.json +++ b/source/skills/impeccable/scripts/command-metadata.json @@ -48,7 +48,11 @@ "argumentHint": "[target]" }, "harden": { - "description": "Make interfaces production-ready: error handling, empty states, onboarding flows, i18n, text overflow, and edge case management. Use when the user asks to harden, make production-ready, handle edge cases, add error states, design empty states, improve onboarding, or fix overflow and i18n issues.", + "description": "Make interfaces production-ready: error handling, i18n, text overflow, edge case management, and resilience under real-world data. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.", + "argumentHint": "[target]" + }, + "onboard": { + "description": "Design onboarding flows, first-run experiences, and empty states that guide new users to value. Covers welcome screens, account setup, progressive disclosure, contextual tooltips, feature announcements, and activation moments. Use when the user mentions onboarding, first-time users, empty states, activation, getting started, new user flows, or the aha moment.", "argumentHint": "[target]" }, "layout": { diff --git a/source/skills/impeccable/scripts/pin.mjs b/source/skills/impeccable/scripts/pin.mjs index 2abfc6050..28dedb882 100644 --- a/source/skills/impeccable/scripts/pin.mjs +++ b/source/skills/impeccable/scripts/pin.mjs @@ -29,7 +29,7 @@ const HARNESS_DIRS = [ const VALID_COMMANDS = [ 'craft', 'teach', 'extract', 'shape', 'critique', 'audit', - 'polish', 'bolder', 'quieter', 'distill', 'harden', + 'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive', 'clarify', 'adapt', 'optimize', ];