bundles/frontend/skills/ai-loading-ux/SKILL.md
Design AI loading, thinking, and progress indicator UX. Use when explicitly asked to improve AI waiting states, add thinking indicators, or design loading UX for AI interfaces. Covers reasoning display (chain-of-thought), progress steps, streaming states, and the "elevator mirror effect" for reducing perceived wait time.
npx skillsauth add shipshitdev/library ai-loading-uxInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Design patterns for showing users what's happening while waiting for AI output.
First, identify which pattern category applies:
| User is waiting for... | Pattern Category | Key Goal | |------------------------|------------------|----------| | AI reasoning/thinking | Reasoning Display | Build trust through transparency | | Multi-step task completion | Progress Steps | Show advancement toward goal | | Content generation/streaming | Streaming States | Reduce perceived wait time | | Background processing | Status Indicators | Confirm work is happening |
Users waiting for AI feel time pass slower. Give them something to watch/read—animated indicators reduce perceived wait time even when actual time is unchanged.
Balance visibility with cognitive load. Users want answers, not reasoning—but they want to trust the answer came from good reasoning.
Users must know when processing ends. Ambiguous end states frustrate users.
When AI is "thinking" through a problem. See references/reasoning-patterns.md.
Best approach (Claude-style):
Anti-patterns:
When AI completes sequential tasks. See references/progress-patterns.md.
Best approach:
When content generates token-by-token. See references/streaming-patterns.md.
Best approach:
When background work happens. See references/status-patterns.md.
Best approach:
When implementing any AI loading state:
| Product | Approach | Strength | Weakness | |---------|----------|----------|----------| | Claude | Hidden reasoning, expandable, structured bullets | Low cognitive load | Can feel opaque | | ChatGPT | Brief labels, auto-collapse | Unobtrusive | Less transparent | | DeepSeek | Full streaming reasoning | Maximum transparency | Overwhelming | | Gemini | User-scrolled, numbered steps | Clear structure | Unclear completion |
Read the relevant reference file for your pattern category:
development
Create an isolated git worktree from the correct base branch and check it out into a clean, gitignored directory. Use when the user asks to make a worktree, spin up a parallel/isolated workspace, work on something without disturbing the current checkout, branch off the current work, or run multiple agents on the same repo at once. Picks the base branch smartly — the current feature branch when you are on one, otherwise the develop integration branch — so worktrees continue your in-progress work by default instead of forking from the wrong place.
development
Verify a release was fully promoted through develop, staging, and master/main, then prune merged local and remote branches and stale git worktrees. Squash-merge aware — uses GitHub PR merge state as the merge oracle, not commit ancestry. Use when the user asks to clean up branches after a deploy, prune worktrees, remove merged branches, tidy up after promoting develop to staging to master, or confirm nothing stale was left behind before pruning.
development
Structured "done coding, now what?" workflow: verify tests pass, detect the repository environment (normal repo vs worktree, named branch vs detached HEAD), present exactly the right merge / PR / keep / discard options, and execute the chosen path including safe worktree cleanup. Use when implementation is complete and the branch needs to be integrated, published, or abandoned.
tools
Capture a client or stakeholder feature request, turn it into a planner-ready PRD epic with scoped sub-issues, check for duplicate work, and place approved issues on a GitHub Projects kanban. Use when a user invokes feature intake, asks to turn a rough client requirement into GitHub issues, or wants an idea written as a PRD and pushed to a board.