Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Design or improve onboarding flows, empty states, and first-time user experiences. Helps users get started successfully and understand value quickly.
.claude/skills/bilal140202-onboard/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 116% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 102% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 77% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 104% | 0% |
Create or improve onboarding experiences that help users understand, adopt, and succeed with the product quickly.
Understand what users need to learn and why:
CRITICAL: Onboarding should get users to value as quickly as possible, not teach everything possible.
Follow these core principles:
Create appropriate onboarding for the context:
Welcome Screen:
Account Setup:
Core Concept Introduction:
First Success:
Empty States: Instead of blank space, show:
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:
Feature Announcements:
Progressive Onboarding:
When to use:
How to design:
Best practices:
When to use:
How to design:
In-product help:
Help patterns:
? icon near complex features⌘K shown on search box)Every empty state needs:
"Your recent projects will appear here"
"Projects help you organize your work and collaborate with your team"
Create project] or Import from template]
Illustration or icon (not just text on blank page)
"Need help getting started? Watch 2-min tutorial]"
Empty state types:
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:
Test with real users:
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.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | pass→pass | 11,607 | 14,320 | +23% | 1 | 1 | 0% | 2,062 | 4,216 | +104% | 0 | 0 | — |
case-04 | pass→pass | 13,711 | 11,121 | -19% | 1 | 1 | 0% | 2,247 | 3,610 | +61% | 0 | 0 | — |
case-05 | pass→pass | 18,566 | 19,540 | +5% | 1 | 1 | 0% | 3,388 | 5,308 | +57% | 0 | 0 | — |
case-01 | fail→pass | 17,796 | 13,309 | -25% | 1 | 1 | 0% | 3,041 | 4,121 | +36% | 0 | 0 | — |
case-02 | pass→pass | 12,370 | 10,608 | -14% | 1 | 1 | 0% | 2,068 | 3,585 | +73% | 0 | 0 | — |
case-03 | pass→pass | 13,597 | 13,138 | -3% | 1 | 1 | 0% | 2,260 | 4,014 | +78% | 0 | 0 | — |
case-07 | pass→pass | 9,825 | 13,092 | +33% | 1 | 1 | 0% | 1,621 | 4,101 | +153% | 0 | 0 | — |
case-08 | pass→pass | 12,657 | 13,439 | +6% | 1 | 1 | 0% | 1,957 | 4,114 | +110% | 0 | 0 | — |
case-09 | fail→pass | 7,296 | 4,757 | -35% | 1 | 1 | 0% | 1,198 | 2,587 | +116% | 0 | 0 | — |
case-10 | fail→pass | 11,979 | 14,280 | +19% | 1 | 1 | 0% | 2,092 | 4,229 | +102% | 0 | 0 | — |
case-11 | pass→pass | 12,135 | 10,096 | -17% | 1 | 1 | 0% | 2,097 | 3,656 | +74% | 0 | 0 | — |
case-12 | fail→pass | 10,909 | 10,802 | -1% | 1 | 1 | 0% | 2,021 | 3,577 | +77% | 0 | 0 | — |
case-13 | pass→pass | 9,806 | 11,673 | +19% | 1 | 1 | 0% | 1,773 | 3,842 | +117% | 0 | 0 | — |
case-14 | pass→pass | 9,520 | 10,536 | +11% | 1 | 1 | 0% | 1,808 | 3,694 | +104% | 0 | 0 | — |
case-15 | pass→pass | 11,461 | 10,376 | -9% | 1 | 1 | 0% | 1,758 | 3,368 | +92% | 0 | 0 | — |
case-16 | pass→pass | 10,666 | 10,421 | -2% | 1 | 1 | 0% | 1,937 | 3,731 | +93% | 0 | 0 | — |
case-17 | pass→pass | 13,103 | 9,570 | -27% | 1 | 1 | 0% | 2,274 | 3,573 | +57% | 0 | 0 | — |
case-18 | pass→pass | 11,923 | 8,026 | -33% | 1 | 1 | 0% | 2,041 | 3,301 | +62% | 0 | 0 | — |
case-19 | pass→pass | 13,460 | 13,997 | +4% | 1 | 1 | 0% | 2,328 | 4,116 | +77% | 0 | 0 | — |
case-20 | pass→pass | 8,764 | 7,677 | -12% | 1 | 1 | 0% | 1,555 | 3,120 | +101% | 0 | 0 | — |
case-21 | pass→pass | 7,191 | 6,655 | -7% | 1 | 1 | 0% | 1,283 | 2,872 | +124% | 0 | 0 | — |
case-22 | pass→pass | 11,655 | 11,445 | -2% | 1 | 1 | 0% | 2,204 | 3,929 | +78% | 0 | 0 | — |
case-23 | pass→pass | 15,504 | 15,625 | +1% | 1 | 1 | 0% | 3,397 | 5,140 | +51% | 0 | 0 | — |
case-24 | pass→pass | 19,306 | 15,536 | -20% | 1 | 1 | 0% | 3,843 | 5,129 | +33% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +17 percentage points is the difference between those two pass rates over the 24 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.