정보
`improve-app` 스킬은 출시되었으나 다듬어지지 않은 애플리케이션을 아홉 가지 핵심 디자인 원칙을 활용해 UX, 문구 및 설득력을 체계적으로 개선하는 단계별 안내 프로세스입니다. 이 스킬은 상호작용 방식으로 질문을 제시하며, 진행 상황을 프로젝트 문서에 저장하고 세션 간에 작업을 재개할 수 있습니다. 앱이 작동하지만 사용이 불편할 때 구체적으로 활용하되, 코드 변경, 신규 앱 개발 또는 마케팅 사이트에는 적용하지 마십시오.
빠른 설치
Claude Code
추천npx skills add wondelai/skills -a claude-code/plugin add https://github.com/wondelai/skillsgit clone https://github.com/wondelai/skills.git ~/.claude/skills/improve-appClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
Improve an App
The app already ships and works — users, screens, a real flow — but the experience feels rough where it
should feel effortless. Across nine phases this journey fixes what users feel, in evidence order: re-anchor
on the job, remove friction, polish the look and the moments, sharpen the words, persuade honestly, and end
with a review brutal enough to cut. It is interactive (the agent asks before deciding) and resumable (state
lives in docs/). Code-level causes route out to the code journeys — this pass fixes the product experience.
Core Principle
Fix what users feel, in evidence order: re-anchor on the job the app is hired for, remove friction before polish, sharpen the words, persuade honestly, and end with a review brutal enough to cut. A prettier screen on a confusing flow loses users at the same rate — the order of the phases is the whole game.
This skill sequences the phases, asks the decision questions, and records what you decide. The nine constituent skills carry the method — invoke them rather than improvising their frameworks.
Journey Map
| Phase | Skill | Question it answers | Artifact |
|---|---|---|---|
| 1 | jobs-to-be-done | What job is the app hired for, and where does it underdeliver? | Extends docs/CUSTOMER.md — GATE |
| 2 | ux-heuristics | Where does the interface make users stop and think? | Extends docs/DESIGN.md, docs/EXPERIMENTS.md |
| 3 | design-everyday-things | Where do users act wrong because the design misled them? | Extends docs/DESIGN.md, docs/EXPERIMENTS.md |
| 4 | refactoring-ui | Does the app look as clear as it works? | Extends docs/DESIGN.md, docs/EXPERIMENTS.md |
| 5 | microinteractions | Does every action feel alive, or dead? | Extends docs/DESIGN.md, docs/EXPERIMENTS.md |
| 6 | made-to-stick | Do the in-app words land, or read as jargon? | Extends docs/POSITIONING.md, docs/EXPERIMENTS.md |
| 7 | influence-psychology | Do the paywall and upgrade moments persuade honestly? | Extends docs/POSITIONING.md, docs/EXPERIMENTS.md |
| 8 | high-perf-browser | Does the app feel fast where users touch it? | Extends docs/DESIGN.md, docs/EXPERIMENTS.md |
| 9 | steve-jobs-design-review | Is the whole experience insanely great, or just better? | Extends docs/PRODUCT.md, docs/DESIGN.md, docs/EXPERIMENTS.md |
Operating Rules
- Resume first. Before anything else, read
docs/IMPROVE-APP-PLAN.mdand every artifact in the Journey Map. If the tracker exists, summarize the journey state in 3-5 lines and ask which phase to enter. Done when the user has confirmed an entry point. A journey with a tracker is resumed, never restarted. - Intake on first run only. No tracker: run the Intake below, then create
docs/IMPROVE-APP-PLAN.mdwith every phase statusedpending | in-progress | awaiting-evidence | done | deferred: reason | skipped: reason. Done when the tracker exists and the user has confirmed the phase plan. - Phase entry. Announce: what the phase does, the decision it forces, the artifact it produces, rough effort. Offer proceed / skip / defer — phases marked GATE may be deferred, never skipped. Mark the phase
in-progresson proceed. Done when the user chose. - Skill invocation and fallback. Invoke the phase's skill by its slug. If it is not available, offer:
npx skills add wondelai/skills/<slug> --global. If the user declines, run the phase from its Brief — the minimum viable method. State which mode you are in. - In-phase decisions. Ask every question under "Decide with the user" — with concrete options and your recommendation. Record the choice in the tracker's Key Decisions. A decision made silently is a defect.
- Phase exit. Present the draft artifact content for sign-off before writing. On approval: write or extend the docs/ files, update the tracker (status, Key Decisions, Next Actions). Done when the files are written and the phase row shows
done. - Artifact discipline. Read before writing; create a file only if missing, otherwise extend — add or update your sections, preserve everyone else's. Files are UPPERCASE in
docs/. Every recommendation lands as a checkbox or a table row with owner and priority. See references/artifact-templates.md when creating a docs/ file for the first time — create it from the full skeleton (all section headings), then fill the sections your phase names. - Evidence before redesign; persuasion stays honest. No UI or copy change ships without an audit or evidence row from Phases 1-3 behind it — a change with no finding behind it goes back to the audits. Every shipped change lands in docs/EXPERIMENTS.md with a pre-committed metric. Every in-app scarcity cue, social-proof claim, and upgrade promise must be true — replace any tactic that needs invented evidence with one that uses evidence you have.
Intake
Ask these before creating the tracker:
- What is the app, and what job did users hire it to do — in their words? (Anchors Phase 1; gates every later phase.)
- Where does it feel roughest — confusing screens, dead interactions, amateur UI, weak copy, pushy upgrade prompts, or sluggishness? (Sets the entry phase and front-loads a fix phase.)
- What evidence do you have — recordings, support tickets, reviews, funnel drop-off, usage analytics? ("None" routes to the optional continuous-discovery phase.)
- What platform(s) does the app run on — web, native iOS, both? (Gates Phase 8 and optional ios-hig-design; no browser surface with smooth native perf skips Phase 8.)
- Which in-app surfaces sell or upsell — paywall, upgrade prompt, trial nudge, badges — and are the scarcity and social-proof claims true today? (Scopes Phase 7 and the honesty guardrail.)
- Which flow leaks the most users or draws the most tickets? (Targets Phases 2-3, 5, and 8.)
- Do you already have positioning, design, or customer docs (POSITIONING.md, DESIGN.md, CUSTOMER.md)? (Phases 1, 4, 6, 7 build on them.)
Phase-skip heuristics: skip Phase 8 with no browser surface and smooth native speed; skip Phase 7 with no
in-app upsell surfaces; skip Phase 4 when the UI already reads cleanly in grayscale on a consistent token
scale; skip Phase 6 when in-app copy is already concrete and jargon-free. Never skip Phase 1 — it aims every
other phase (defer it, don't skip it). Then create docs/IMPROVE-APP-PLAN.md from the template and confirm
the plan. Done when docs/IMPROVE-APP-PLAN.md exists with every phase statused and the user has confirmed the plan.
Phases
Phase 1 — Re-anchor on the job the app is hired for (jobs-to-be-done) — GATE
Purpose: Name the job users hire the app for and where it underdelivers, before any screen changes; Phases 2-9 may only fix what an audit or finding in Phases 1-3 flags.
Brief (fallback): Customers hire a product to make progress in a circumstance. State the job as "When [situation], I want to [motivation], so I can [outcome]" — never naming the app; every job has three dimensions (functional, emotional, social), and omitting one loses why users stay. Track first use vs repeated use (Big Hire vs Little Hire), and map alternatives including non-consumption and improvised workarounds.
Invoke: jobs-to-be-done with the app, its usage data, and the roughest flow from intake. Ask for the job statement, the three dimensions with where the app underdelivers on each, and the alternatives users switch to.
Decide with the user: (1) Confirm the job statement reads without the product name. (2) Which underdelivered dimension is worst — functional, emotional, or social? (3) Is the leak a Big Hire (onboarding) or Little Hire (daily use) failure?
Artifact: Extend docs/CUSTOMER.md ## Job Statement, ## Job Dimensions (functional/emotional/social, each with its underdelivery note), and ## Competing Alternatives (alternative | why hired | weakness, incl. non-consumption). Update the tracker.
Done when: the job is stated without the product name, all three dimensions carry an underdelivery note, alternatives are logged, and Phase 1 shows done — only then are Phases 2-9 unlocked.
Phase 2 — Remove the friction that makes users think (ux-heuristics)
Purpose: Cut cognitive load on the flows that leak users — find where the interface makes people stop and puzzle.
Brief (fallback): "Don't Make Me Think" — users scan, satisfice, and muddle through. Run a heuristic evaluation against Nielsen's 10 heuristics; rate each issue 0-4 and order by severity × how often users hit it, so catastrophes outrank cosmetics. Apply the Trunk Test to key screens (what app, what screen, my options, where am I, where's search?), cut half the words then half again, and fix forms with inline validation and error messages that say what, why, and how.
Invoke: ux-heuristics on the highest-leak flow with the Phase 1 job and dimensions. Ask for a severity-rated evaluation, a Trunk Test result per key screen, and rewritten label, form, and error copy.
Decide with the user: Which severity-4 and -3 issues get fixed now versus backlogged? Confirm fixes run by severity × frequency, not by ease.
Artifact: Extend docs/DESIGN.md ## UX Audit Findings (issue | heuristic | severity 0-4 | fix | status); append each fix to docs/EXPERIMENTS.md ## Experiment Backlog with ICE. Update the tracker.
Done when: every issue carries a 0-4 severity and a fix, the Trunk Test passes on each key screen or is logged, and severity-4 issues have an owner.
Phase 3 — Design out the errors (design-everyday-things)
Purpose: Make the wrong action hard and every outcome legible — where users act wrong, the design misled them, not the user.
Brief (fallback): There is no human error, only bad design. Bridge two gulfs: Execution ("how do I do this?") with clear signifiers and constraints (date picker over free text, Submit disabled until valid); Evaluation ("what happened?") with feedback under 0.1s and visible system state. Distinguish slips (right intent, wrong action) from mistakes (wrong intent); prefer undo over are-you-sure dialogs, and write error messages that say what went wrong and how to fix it, never blame.
Invoke: design-everyday-things on the core flows (onboarding, the primary action, destructive actions). Ask for weak signifiers, where a constraint makes an error impossible, feedback gaps, and message rewrites.
Decide with the user: Where should a constraint replace an error message, and where should undo replace a confirmation dialog?
Artifact: Extend docs/DESIGN.md ## UX Audit Findings (heuristic = Norman gulf; issue | severity 0-4 | fix | status); append fixes to docs/EXPERIMENTS.md ## Experiment Backlog. Update the tracker.
Done when: each core flow has signifier/constraint/feedback fixes logged, error messages meet the what/why/how checklist, and destructive actions offer undo.
Phase 4 — Make it look as clear as it works (refactoring-ui)
Purpose: Give the screens a professional visual hierarchy so nothing amateur undercuts the flows you just fixed.
Brief (fallback): Great UI is systems, not talent. Design in grayscale first: establish hierarchy with size, weight, and contrast before any color — combine levers, don't multiply (all three only for the one hero element). Enforce a spacing scale (4/8/16/24/32/48/64) where gaps between groups exceed gaps within them; constrain text to 45-75 chars and forms to 300-500px. Add color last: 5-9 shades per hue, grays tinted, not pure black.
Invoke: refactoring-ui on the key screens with the Phase 2-3 findings and current design tokens. Ask for a grayscale hierarchy pass, spacing-scale corrections, a systematic palette, and the exact token/CSS changes.
Decide with the user: Fix within the current design system or introduce new tokens? Confirm color work waits until the grayscale layout reads.
Artifact: Extend docs/DESIGN.md ## Tokens (spacing scale · palette shades · shadows) and ## Components (component | decision | status); append fixes to docs/EXPERIMENTS.md ## Experiment Backlog. Update the tracker.
Done when: the key screens read in grayscale, the spacing scale is applied, one primary action dominates each screen, and the token decisions are recorded.
Phase 5 — Make every action feel alive (microinteractions)
Purpose: Give the moments users touch every day the feedback that separates a product they tolerate from one they love.
Brief (fallback): Every microinteraction has four parts — Trigger, Rules, Feedback, Loops & Modes. The common failure is missing or late feedback: direct manipulation needs a response under 100ms, usually by animating the element the user touched (a button depresses to "Saving…"), not a separate toast. Map every state — empty, loading, partial, full, error, disabled — and use the least feedback that communicates, scaled to the event's significance.
Invoke: microinteractions on the most-used interactions (save, submit, toggle, delete, load). Ask for a Trigger/Rules/Feedback/Loops audit, the exact feedback each needs, a full state map, and one signature moment.
Decide with the user: (1) Which interactions to polish first. (2) The one signature moment worth extra craft — apply the removal test: would the product feel materially worse without it?
Artifact: Extend docs/DESIGN.md ## Microinteraction Inventory (interaction | trigger/rules/feedback/loops | fix | status); append fixes to docs/EXPERIMENTS.md ## Experiment Backlog. Update the tracker.
Done when: each audited interaction has its four parts and required feedback logged, every state is mapped, the signature moment passes the removal test, and fixes are rows with status.
Phase 6 — Sharpen the in-app words (made-to-stick)
Purpose: Make the copy users read inside the app — onboarding, empty states, errors, CTAs, tooltips — concrete, clear, and jargon-free.
Brief (fallback): Beat the Curse of Knowledge: once you know the product you can't imagine not knowing it. Score key in-app copy on SUCCESs (Simple, Unexpected, Concrete, Credible, Emotional, Stories). Concrete beats abstract: "Users open the app 8 times a day," not "increase engagement." Simple is the Commander's Intent — the one thing a screen must land; if a label needs a manual, rewrite the label.
Invoke: made-to-stick with the onboarding copy, empty states, error strings, CTAs, and tooltips plus the Phase 1 job language. Ask for a SUCCESs score per surface with concrete de-jargoned rewrites and the Commander's Intent for each screen.
Decide with the user: Which abstractions become which concrete specifics, and what is the one thing each screen must land?
Artifact: Extend docs/POSITIONING.md ## Key Messages (surface = the in-app screen | message | status) with SUCCESs scores and concrete rewrites; append copy tests to docs/EXPERIMENTS.md ## Experiment Backlog. Update the tracker.
Done when: each in-app surface has a SUCCESs score and a concrete rewrite, jargon is gone, the Commander's Intent per screen is named, and the messages are logged by surface.
Phase 7 — Persuade honestly at the decision points (influence-psychology)
Purpose: Make the in-app marketing surfaces — paywalls, upgrade prompts, trial nudges, social proof, badges — persuade with true evidence, not tricks.
Brief (fallback): People decide with mental shortcuts — seven principles trigger "yes": reciprocity, commitment, social proof, authority, liking, scarcity, unity. Apply them where the user decides (paywall, upgrade, trial end); layer principles, keep every claim truthful, keep the decision reversible. Ethics gate: any fabricated proof, fake scarcity, or hidden-cost dark pattern is disqualifying — a tactic that only works if the user doesn't know the strategy is manipulation, not persuasion.
Invoke: influence-psychology on the upsell surfaces from intake. Ask which principles fit each decision point, the honest copy for each, and a reversibility check — flag any cue that needs evidence you don't have.
Decide with the user: (1) Which principle leads at each surface. (2) For each scarcity or social-proof cue: is it true today? If not, cut it or make it true before shipping.
Artifact: Extend docs/POSITIONING.md ## Key Messages (surface | message | status) with the persuasion copy; queue each change in docs/EXPERIMENTS.md ## Experiment Backlog with the metric it should move. Update the tracker.
Done when: each upsell surface names its lead principle and honest copy, every scarcity/social-proof claim is verified true or cut, decisions are reversible, and changes are queued as experiments.
Phase 8 — Make it feel fast where users touch it (high-perf-browser)
Purpose: Fix perceived slowness on the interactions and entry views users feel — speed is part of the experience, not a back-end afterthought.
Brief (fallback): Latency, not bandwidth, is the bottleneck — most pain is too many round trips. Target the field metrics: INP under 200ms on key interactions (break long tasks, defer non-critical JS), LCP under 2.5s on entry views (preload the hero, raise fetchpriority), CLS under 0.1 (reserve space with explicit dimensions). Where real latency remains, hide it with skeleton screens and optimistic UI so the interface responds before the server does.
Invoke: high-perf-browser on the slowest key interaction and entry view with a trace or Lighthouse run if available. Ask for the INP long tasks, the LCP element, layout-shift sources, and an impact-ordered fix list including where skeletons or optimistic UI apply.
Decide with the user: Which interactions and views to measure first, and confirm the field-metric targets as the lines in the sand.
Artifact: Extend docs/DESIGN.md ## UX Audit Findings (heuristic = performance; issue | severity 0-4 | fix | status) with INP/LCP/CLS rows; append fixes to docs/EXPERIMENTS.md ## Experiment Backlog. Update the tracker.
Done when: INP/LCP/CLS baselines are recorded as performance rows, targets are set (INP < 200ms, LCP < 2.5s, CLS < 0.1), and each fix is ordered by impact with skeleton/optimistic-UI fallbacks noted where latency remains.
Phase 9 — Submit it to a brutal, honest review (steve-jobs-design-review)
Purpose: Judge the whole experience cold against "insanely great, or not done" — and decide what to subtract.
Brief (fallback): Start from the customer experience and work back. Experience the product cold as a new user, name the One Thing it must do, count steps-to-value, and deliver a binary verdict with a ranked cut list and fix list. Focusing is saying no — every feature is a candidate for deletion. Audit the back of the fence: empty states, error copy, 404, billing, cancellation, receipt email — held to the hero-screen bar.
Invoke: steve-jobs-design-review on the whole app after Phases 1-8. Ask for a cold walkthrough, the One Thing, the step count to core value, a binary verdict, a ranked cut and fix list, and a back-of-the-fence audit.
Decide with the user: (1) Accept the cut list — which features to actually remove. (2) Which back-of-the-fence fixes ship now versus later.
Artifact: Extend docs/PRODUCT.md ## Outcome Roadmap (outcome/problem | job served | priority | status) with the cuts and fixes as prioritized rows; append any back-of-the-fence fixes to docs/DESIGN.md ## UX Audit Findings; queue fixes that will ship in docs/EXPERIMENTS.md ## Experiment Backlog. Update the tracker.
Done when: the verdict is recorded, the cut list is agreed with each item's disposition, cuts and fixes are prioritized rows in ## Outcome Roadmap, and the tracker closes Phase 9.
Optional Phases
| Skill | Add when | Artifact |
|---|---|---|
| ios-hig-design | the app ships natively on iOS | Extends docs/DESIGN.md |
| lean-ux | a risky fix deserves a cheap experiment before a full build | Extends docs/EXPERIMENTS.md |
| continuous-discovery | improvement ideas come from opinions, not weekly user contact | Extends docs/CUSTOMER.md |
| improve-retention | first-run activation friction shows up in the audits (full retention engine: grow-app) | Extends docs/PRODUCT.md |
| web-typography | the app is text-heavy and reading comfort drives the experience | Extends docs/DESIGN.md |
| inspired-product | the backlog is a feature list with no outcomes behind it | Extends docs/PRODUCT.md |
Optional phases follow the same operating rules; insert where the Add-when condition first becomes true.
Common Mistakes
| Mistake | Fix |
|---|---|
| Polishing visuals before removing friction — a beautiful screen on a confusing flow loses users at the same rate. | Run Phases 2-3 (ux-heuristics, design-everyday-things) first; no visual change ships without a Phase 1-3 finding behind it. |
| Adding color before the grayscale layout works. | Grayscale first, color last; if the screen fails desaturated, no palette saves it (refactoring-ui). |
| Treating "user error" as the user's fault and stacking on more warnings. | Prevent slips with constraints and forgive them with undo, not are-you-sure dialogs (design-everyday-things). |
| Rewriting copy from internal language nobody outside the team tested. | De-jargon against the SUCCESs pass, then ship the rewrite as an EXPERIMENTS card, not a guess (made-to-stick). |
| Fake scarcity or invented social proof in upgrade prompts. | Every scarcity cue and testimonial must be true; replace any tactic that needs invented evidence with one that uses evidence you have (influence-psychology). |
| Shipping the fixes and skipping the brutal end-to-end review. | Run Phase 9 cold as a new user; a binary verdict with a ranked cut list catches what phase-by-phase fixes miss (steve-jobs-design-review). |
Completing the Journey
Exit checklist:
- Every phase in
docs/IMPROVE-APP-PLAN.mdisdone,skipped: reason, ordeferred: reason. - CUSTOMER.md re-anchors the job and names where the app underdelivers on each dimension.
- DESIGN.md carries the UX audit findings, tokens/components, microinteraction inventory, and performance rows with owner and priority.
- POSITIONING.md
## Key Messagesholds the in-app copy and persuasion surfaces, every scarcity and social-proof claim true. - Each shipped change is an EXPERIMENTS.md card or backlog row with a pre-committed metric, and PRODUCT.md
## Outcome Roadmapholds the steve-jobs cut and fix list.
Close the tracker: every phase done / skipped: reason / deferred: reason, and Next Actions carried into
the owning artifacts rather than left in the plan.
Forward routing: when the experience holds up and the goal shifts to habit, retention, and growth loops,
continue with grow-app. When the audits keep hitting code-level causes (slow queries, crashes, untestable
modules), continue with improve-code-quality or remove-technical-debt. When the marketing site is the
next weakest surface, continue with improve-website.
GitHub 저장소
자주 묻는 질문
improve-app Skill이란 무엇인가요?
improve-app은(는) wondelai이(가) 만든 Claude Skill입니다. Skill은 Claude가 필요할 때 불러오는 지침과 리소스를 묶어 추가 프롬프트 없이 improve-app 관련 작업을 수행할 수 있게 합니다.
improve-app은(는) 어떻게 설치하나요?
이 페이지의 설치 명령을 사용하세요. improve-app을(를) Claude Code 플러그인으로 추가하거나 저장소를 skills 디렉터리에 복제한 다음 Claude를 다시 시작해 Skill을 불러옵니다.
improve-app은(는) 어떤 카테고리에 속하나요?
improve-app은(는) 메타 카테고리에 속합니다.
improve-app은(는) 무료로 사용할 수 있나요?
네. improve-app은(는) AIMCP에 등록되어 있으며 무료로 설치할 수 있습니다.
연관 스킬
이 스킬은 콘텐츠 콜렉션(Content Collections)을 위한 프로덕션 검증된 설정을 제공합니다. 콘텐츠 콜렉션은 Markdown/MDX 파일을 Zod 검증이 포함된 타입 안전한 데이터 콜렉션으로 변환해주는 TypeScript 최우선 도구입니다. 블로그, 문서 사이트 또는 콘텐츠 중심의 Vite + React 애플리케이션을 구축할 때 타입 안전성과 자동 콘텐츠 검증을 보장하기 위해 사용하세요. Vite 플러그인 구성과 MDX 컴파일부터 배포 최적화 및 스키마 검증에 이르기까지 모든 것을 다룹니다.
이 스킬은 개발자들이 Polymarket 예측 시장 플랫폼을 활용한 애플리케이션을 구축할 수 있도록 지원하며, 거래 및 시장 데이터를 위한 API 통합 기능을 포함합니다. 또한 WebSocket을 통한 실시간 데이터 스트리밍을 제공하여 실시간 거래와 시장 활동을 모니터링할 수 있습니다. 이를 통해 거래 전략을 구현하거나 실시간 시장 업데이트를 처리하는 도구를 생성하는 데 활용할 수 있습니다.
이 스킬은 개발자들이 명령어, 파일, LSP 작업 등 25개 이상의 이벤트 유형에 연결되는 OpenCode 플러그인을 만들 수 있도록 돕습니다. JavaScript/TypeScript 모듈을 위한 플러그인 구조, 이벤트 API 명세, 구현 패턴을 제공합니다. OpenCode AI 어시스턴트의 라이프사이클을 사용자 정의 이벤트 기반 로직으로 가로채거나, 모니터링하거나, 확장해야 할 때 사용하세요.
SGLang은 RadixAttention 프리픽스 캐싱을 활용하여 JSON, 정규식, 에이전트 워크플로우를 위한 고속 구조화 생성에 특화된 고성능 LLM 서빙 프레임워크입니다. 특히 반복되는 프리픽스가 있는 작업에서 상당히 빠른 추론 속도를 제공하여 복잡한 구조화 출력 및 다중 턴 대화에 이상적입니다. 제약 디코딩이 필요하거나 광범위한 프리픽스 공유가 있는 애플리케이션을 구축할 때는 vLLM과 같은 대안보다 SGLang을 선택하십시오.
