uxcel-lab/product-skills

ux-modals-and-dialogs

Design or critique modals, dialogs, alerts, popovers, and bottom sheets — gate WHEN interrupting users is justified, then apply dismissal, title/button, and focus best practices.

ソースを見る

使い方

  1. インストールコマンドをコピーし、自分の環境へ導入する前にソースを確認します。
  2. 必要なツール、認証情報、対応環境を原文で確認します。
  3. 入力と成果物を指定し、出力を資料と照合します。
npx skills add https://github.com/uxcel-lab/product-skills --skill ux-modals-and-dialogs

開始前の確認

  • 導入にはモデル契約、API枠、ファイルへのアクセス許可は含まれません。
  • スター数や導入数は活動の指標であり、独立した品質・安全性試験ではありません。
リポジトリの原文

見出し、例、コード、表、リンク、参照画像を含む原文を表示しています。

Modals & Dialogs Skill

How this skill behaves (read first)

This is a generative skill. The default failure modes: interrupting for everything (modals for success messages, tips, newsletters — attention spent like it's free), trapping users (no visible close, no Esc, stacked modals), and vague choices ("Are you sure?" → Yes/No). A modal takes the whole interface hostage — that's justified only in high-stakes moments, and the price is paid back with crystal-clear purpose and effortless exit. This skill gates:

  1. Gate the interruption itself — is a modal even justified here? The most important decision happens before any design.
  2. Apply the always-true core — purpose in the title, explicit buttons, easy dismissal, focus management.
  3. Surface the type and timing decisions (popup/fullscreen/popover/bottom sheet, permission priming) with trade-offs.

Then it hands off to `ux-heuristics-audit`, `ux-accessibility-audit`, `ux-aesthetics-audit`, `ux-microcopy-audit`, and `ux-dark-patterns-audit` for validation.


Step 0 — Gate the interruption (the decision that matters most)

A modal blocks everything. It earns that only for high-stakes moments:

  • Confirming destructive or irreversible actions (delete account, discard draft) — show impact ("12 files will be deleted").
  • Critical errors or warnings (system restart, unsaved changes at risk).
  • Information required to continue the current task (login to save, payment details).

Everything else — success messages, tips, FYIs, promotions — uses non-modal patterns: inline messages, toasts, banners, popovers. Also establish:

  • Who triggers it? User-initiated modals (clicked a button) are expected; system-initiated modals (timed popups, upgrade nags) interrupt without warning — avoid unless truly urgent (session expiry, critical update).
  • Timing — never interrupt high-stakes flows in progress (mid-checkout is the classic crime).
  • Platform — desktop alert vs. iOS alert / Android dialog conventions; bottom/action sheets for mobile action lists.
If the content fails the high-stakes test, stop designing a modal and recommend the inline/toast alternative.

The always-apply core (correct for every modal that survives the gate)

Purpose, title, buttons

  • The title carries the whole message — users skim or skip body text. "Discard draft?" not "Warning." Body text adds the why and context; nothing vital lives only in the body.
  • Explicit button labels answering the title: ❌ "Yes" / "No" / "Cancel" ✅ "Discard draft" / "Keep editing." Users must know what each button does without reading anything else.
  • Maximum two action buttons. A third ("Learn more") leaks users out of the decision.
  • Never blame or shame in opt-out labels ("No thanks, I hate saving money" → dark-patterns flag).

Dismissal is a right, not a feature

  • Multiple visible exits: Close/Cancel button + the × in the corner + Esc on desktop / Back on mobile.
  • Click/tap outside closes it — when no entered data would be lost; suppress only when dismissal would destroy work.
  • Never stack modals. A modal on a modal is a hostage situation with extra steps.

Focus and attention mechanics

  • Dark overlay behind the modal — focuses attention, blocks outside interaction, doubles as a close target.
  • Keyboard focus moves into the modal on open (onto the primary action); all controls keyboard-reachable.
  • Centered placement — dead-center on mobile; horizontally centered and slightly above center on desktop (stable under window resizing).
  • Critical alerts look critical: red accents and an alert icon for destructive/urgent confirmations, so habituated users don't dismiss on autopilot.

The context-dependent decisions (surface, don't auto-apply)

DecisionApply whenAvoid / adapt whenDefault recommendation
Popup modalThe standard high-stakes interrupt over dimmed contentContent that needs a whole pageDefault modal type
Fullscreen modalComplex focused tasks: multi-step forms, payments, T&Cs, mobile spotlight momentsSimple confirmations (overkill); anything users may need to escape fast — make dismissal obviousOnly when the task genuinely fills a screen
PopoverExtra detail/options anchored to an element, without blocking the pageCritical information (too easy to miss)The non-modal default for contextual help
LightboxImage/video magnification with navigation, captions, zoomNon-media contentMedia-rich products only
Bottom / action sheet (mobile)Lists of related actions or share targets, per OS conventionCritical confirmations (use an alert/dialog)Android bottom sheet / iOS action sheet for action lists
Success feedbackInline or on-page statesSuccess modals — interrupting to say "it worked"Modal success only if users must acknowledge before continuing
Permission requestsIn context, at the moment the feature needs it; primed with a pre-permission explainer; one permission at a time; a compelling reason (+81% grant likelihood)At first launch, in batches, with "Recommended" pressure labels, or mid-taskPrime → contextual ask → graceful path to reverse a denial
System-initiated modalsTruly urgent: session expiry, security, data lossSubscription nags, timed promos, rating begsAlmost never; use banners/badges instead

Validate the result (orchestration)

Hand-offs name each lens by its installable skill name. Invoke one only if that skill is installed; if it isn't, this skill's own core already carries these rules — proceed without it rather than blocking.

After generating or revising, hand the result to the audit lenses rather than declaring it done. These are candidate lenses — posture is set by docs/orchestration-policy.md, or route the whole thing through ux-design-review. Here, `heuristics`, `microcopy`, and `dark-patterns` are Tier A (auto-run); `accessibility`, `aesthetics`, and `mobile-responsiveness` are Tier B (offered) — under an existing design system aesthetics is suppressed and accessibility narrows to usage; mobile-responsiveness applies only on mobile. If the user invoked this skill for one specific thing, respect that scope.

  • `ux-heuristics-audit` (Tier A) — user control and freedom (exits), error prevention (explicit confirmations), match to expectations (platform conventions).
  • `ux-accessibility-audit` (Tier B — offer; narrow under a design system) — focus trap correctness, keyboard dismissal, screen-reader announcement, contrast of overlay content.
  • `ux-aesthetics-audit` (Tier B — offer; suppress under a design system) — modal visual hierarchy, overlay treatment, alert-styling restraint.
  • `ux-microcopy-audit` (Tier A) — title clarity, button explicitness, body brevity, permission-reason wording.
  • `ux-dark-patterns-audit` (Tier A) — this skill's interruptions are prime dark-pattern territory: nagging system modals, shame opt-outs, permission pressure, hard-to-find dismissal.
  • `ux-mobile-responsiveness-audit` (Tier B — offer; applies only on mobile) — when the context is mobile: sheet conventions, dismissal gestures, fullscreen behavior.

If the audits surface a conflict (e.g., growth wants a signup modal on page load vs. user control), resolve back toward the primary task: the user was doing something — the modal must either protect that task or get out of its way.


Common do/don't patterns

❌ Don't✅ Do
Modal for a success message or a tipInline state / toast; modals for high-stakes only
Timed subscription popup mid-readingUser-initiated modals; system interrupts only for urgency
"Are you sure?" → Yes / No"Discard draft?" → "Discard" / "Keep editing"
Three+ buttons including "Learn more"Two actions, aligned to the title
No × , no Esc, no outside clickClose button + Esc/Back + outside click (when safe)
Modal opens on top of another modalOne modal at a time, ever
Vital info buried in body textThe title carries the message
Permission batch on first launchPrimed, contextual, one-at-a-time requests with reasons
"No thanks, I like missing out"Neutral, respectful opt-out labels
Focus stays on the page behindFocus moves into the modal, onto the primary action
Ship without checkingHand off to heuristics + accessibility + aesthetics + microcopy + dark-patterns

Source lessons (Uxcel)

タスクに関連する項目

同じリポジトリから

関連する Skills

すべての Skills
uxcel-lab
コミュニティ

ux-tables

Design or critique data tables and lists — scannable structure, alignment rules (left for text, right for numbers), sorting/filtering, row interactions, and the right list type for the content. Trigger when the user asks to design or review a data table, data grid, admin table, list view, email/feed list, or asks how to present tabular or structured data.

導入数
1
GitHub Stars
34
更新日
7月2日
uxcel-lab
コミュニティ

pm-analytics

Run a product-analytics analysis that produces a decision, not a dashboard — start from the question, pick actionable over vanity metrics, separate signal from noise, segment (averages lie), pair quant with qual, and end in an insight→impact→action story. Catches the defaults Claude misses: vanity metrics, correlation-as-causation, reacting to small samples/short windows, survivorship/selection bias, unsegmented averages. Trigger when asked to analyze product data/metrics, plan what to measure,

導入数
1
GitHub Stars
27
更新日
7月2日
uxcel-lab
コミュニティ

pm-gtm-plan

Build a go-to-market plan that's a stage-appropriate system — customers, channels, pricing, timing, and partnerships that fit the company's maturity — not a generic launch checklist. Gates on GTM readiness (validated demand) and company stage, picks the right channel and entry timing, and treats the buyer journey as non-linear. Catches the defaults Claude misses: GTM-as-one-time-launch, stage-skipping, channel/timing blindness, funnel-forcing, partnerships-as-shortcut. Trigger when asked to crea

導入数
1
GitHub Stars
27
更新日
7月2日
uxcel-lab
コミュニティ

pm-product-review

Orchestrated review of a PM artifact (spec, PRD, OKRs, roadmap, prioritization, strategy). Routes by artifact type to the right audits, auto-runs the always-relevant assumption check, and returns one prioritized report. Trigger when the user asks for a full review of a PM document, "review my spec/roadmap/OKRs", "is this PRD solid", or general PM feedback — but NOT when they name a single specific audit.

導入数
1
GitHub Stars
27
更新日
7月2日