progressive-disclosure

Reduce complexity by revealing information progressively. Use when designing onboarding, complex forms, feature-rich interfaces, or any experience where showing everything at once would overwhelm users.

210 stars

Best use case

progressive-disclosure is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Reduce complexity by revealing information progressively. Use when designing onboarding, complex forms, feature-rich interfaces, or any experience where showing everything at once would overwhelm users.

Teams using progressive-disclosure should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/progressive-disclosure/SKILL.md --create-dirs "https://raw.githubusercontent.com/flpbalada/my-opencode-config/main/skills/progressive-disclosure/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/progressive-disclosure/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How progressive-disclosure Compares

Feature / Agentprogressive-disclosureStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Reduce complexity by revealing information progressively. Use when designing onboarding, complex forms, feature-rich interfaces, or any experience where showing everything at once would overwhelm users.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Progressive Disclosure - Show the Right Thing at the Right Time

Progressive Disclosure is an interaction design technique that sequences
information and actions across time, showing users only what they need when they
need it. It reduces cognitive load by deferring complexity until the user is
ready for it.

## When to Use This Skill

- Designing onboarding for complex products
- Simplifying feature-rich interfaces
- Creating multi-step forms and wizards
- Building admin panels and settings pages
- Introducing new features to existing users
- Reducing support requests and confusion

## Core Concepts

### The Hierarchy of Disclosure

```
Level 0: Essential (always visible)
    |
    v
Level 1: Important (one click away)
    |
    v
Level 2: Useful (accessible but hidden)
    |
    v
Level 3: Advanced (buried intentionally)
```

### 80/20 Rule Applied

80% of users need 20% of features. Show that 20% prominently, progressively
reveal the rest.

```
+------------------------------------------+
|  Primary Actions (20%)                   |
|  [Action 1] [Action 2]                   |
+------------------------------------------+
|  v Advanced Options                      |
|    +------------------------------------+|
|    | Secondary (30%)                    ||
|    | [Option 3] [Option 4]              ||
|    +------------------------------------+|
|    |  v More Options                    ||
|    |    +------------------------------+||
|    |    | Tertiary (50%)              |||
|    |    | [Rare settings...]          |||
|    |    +------------------------------+||
|    +------------------------------------+|
+------------------------------------------+
```

### Types of Progressive Disclosure

| Type                 | Mechanism            | Example               |
| -------------------- | -------------------- | --------------------- |
| **Click to reveal**  | Expand/collapse      | "Show more" sections  |
| **Hover to reveal**  | Tooltip/popover      | Help text on hover    |
| **Scroll to reveal** | Below the fold       | Long-form content     |
| **Time-based**       | Delayed introduction | Feature announcements |
| **Skill-based**      | Unlock with usage    | Advanced features     |
| **Role-based**       | Permission levels    | Admin controls        |

## Analysis Framework

### Step 1: Audit Current Interface

List all elements users see:

| Element     | User Need | Frequency           | Current Visibility        |
| ----------- | --------- | ------------------- | ------------------------- |
| [Element 1] | [Need]    | [Daily/Weekly/Rare] | [Always/Sometimes/Hidden] |
| [Element 2] | [Need]    | [Daily/Weekly/Rare] | [Always/Sometimes/Hidden] |

### Step 2: Categorize by Priority

```
                    HIGH
                     |
    +----------------+----------------+
    |                |                |
    |  ESSENTIAL     |  CONTEXTUAL    |
    |  Always show   |  Show when     |
    |                |  relevant      |
FREQUENCY           |                NEED
    |                |                |
    |  ACCESSIBLE    |  HIDE          |
    |  One click     |  Deep menus    |
    |  away          |                |
    +----------------+----------------+
                     |
                    LOW
```

### Step 3: Design Disclosure Pattern

| Stage        | What to Show         | How to Reveal Next   |
| ------------ | -------------------- | -------------------- |
| Initial view | [Core elements]      | [Trigger to Level 1] |
| Level 1      | [Secondary elements] | [Trigger to Level 2] |
| Level 2      | [Advanced elements]  | [Trigger to Level 3] |

### Step 4: Test Understanding

- Can users complete primary tasks without expanding?
- Can users find advanced features when needed?
- Is the "expand" affordance clear?

## Output Template

```markdown
## Progressive Disclosure Design

**Interface:** [Name] **Date:** [Date]

### Element Inventory

| Element | Priority  | Disclosure Level | Reveal Trigger |
| ------- | --------- | ---------------- | -------------- |
| [E1]    | Essential | Always visible   | -              |
| [E2]    | Important | Level 1          | [Trigger]      |
| [E3]    | Advanced  | Level 2          | [Trigger]      |

### Disclosure Hierarchy

**Level 0 (Always visible):**

- [Element list]

**Level 1 (One interaction):**

- Trigger: [How user reveals]
- Contents: [Element list]

**Level 2 (Two interactions):**

- Trigger: [How user reveals]
- Contents: [Element list]

### User Flow

1. User sees: [Initial state]
2. To access [feature], user: [Action]
3. System reveals: [New state]

### Success Metrics

| Metric               | Before  | After Target |
| -------------------- | ------- | ------------ |
| Task completion rate | [X%]    | [Y%]         |
| Time to complete     | [X sec] | [Y sec]      |
| Support tickets      | [X/mo]  | [Y/mo]       |
```

## Real-World Examples

### Example 1: Gmail Compose

**Level 0**: To, Subject, Body, Send **Level 1**: CC, BCC (click "Cc" to reveal)
**Level 2**: Formatting toolbar (click "A" to reveal) **Level 3**: Confidential
mode, schedule send (menu)

Most users never need CC/BCC, so it's hidden by default.

### Example 2: Notion Properties

**Level 0**: Page title and content **Level 1**: Basic properties (click to
expand) **Level 2**: Add property, configure property **Level 3**: Database
views, relations, rollups

New users see a simple page; power users unlock complexity.

### Example 3: iPhone Camera

**Level 0**: Shutter button, switch camera **Level 1**: Swipe for modes (Video,
Portrait, etc.) **Level 2**: Tap for exposure/focus controls **Level 3**:
Settings app for advanced options

## Best Practices

### Do

- Make primary actions immediately visible
- Use clear affordances for expanding ("Show more", arrows)
- Remember user preferences for disclosure state
- Provide search/filter for deeply hidden features
- Test with both new and experienced users

### Avoid

- Hiding essential functionality
- Requiring many clicks for common tasks
- Inconsistent disclosure patterns across the product
- Mystery meat navigation (unclear expand triggers)
- Over-hiding to the point of unfindability

### Disclosure Affordances

| Pattern          | When to Use                 |
| ---------------- | --------------------------- |
| "Show more" link | Text content, lists         |
| Chevron/arrow    | Expandable sections         |
| "..." menu       | Actions, options            |
| Tabs             | Parallel content categories |
| Hover reveal     | Tooltips, secondary actions |
| Modal/drawer     | Complex sub-flows           |

## Integration with Other Methods

| Method              | Combined Use                         |
| ------------------- | ------------------------------------ |
| **Hick's Law**      | Reduce visible choices at each level |
| **Cognitive Load**  | Manage working memory limits         |
| **Halo Effect**     | Polish the essential elements first  |
| **Jobs-to-be-Done** | Organize by user jobs                |

## Resources

- [Progressive Disclosure - Nielsen Norman Group](https://www.nngroup.com/articles/progressive-disclosure/)
- [Designing Web Interfaces - Bill Scott](https://www.amazon.com/Designing-Web-Interfaces-Principles-Interactions/dp/0596516258)

Related Skills

what-not-to-do-as-product-manager

210
from flpbalada/my-opencode-config

Anti-patterns and mistakes to avoid as a product manager. Use when evaluating leadership behaviors, improving team dynamics, reflecting on management practices, or onboarding new product managers.

visual-cues-cta-psychology

210
from flpbalada/my-opencode-config

Design effective CTAs using visual attention and gaze psychology principles. Use when designing landing pages, button hierarchies, conversion elements, or optimizing user attention flow through interfaces.

vercel-sandbox

210
from flpbalada/my-opencode-config

Run agent-browser + Chrome inside Vercel Sandbox microVMs for browser automation from any Vercel-deployed app. Use when the user needs browser automation in a Vercel app (Next.js, SvelteKit, Nuxt, Remix, Astro, etc.), wants to run headless Chrome without binary size limits, needs persistent browser sessions across commands, or wants ephemeral isolated browser environments. Triggers include "Vercel Sandbox browser", "microVM Chrome", "agent-browser in sandbox", "browser automation on Vercel", or any task requiring Chrome in a Vercel Sandbox.

value-realization

210
from flpbalada/my-opencode-config

Analyze if end users discover clear value. Use when evaluating product concepts, analyzing adoption, or uncertain about direction.

user-story-fundamentals

210
from flpbalada/my-opencode-config

Capture requirements from user perspective with structured user stories. Use when writing backlog items, defining acceptance criteria, prioritizing features, or communicating requirements between product and development.

typescript-satisfies-operator

210
from flpbalada/my-opencode-config

Guides proper usage of TypeScript's satisfies operator vs type annotations. Use this skill when deciding between type annotations (colon) and satisfies, validating object shapes while preserving literal types, or troubleshooting type inference issues.

typescript-interface-vs-type

210
from flpbalada/my-opencode-config

Guides when to use interface vs type in TypeScript. Use this skill when defining object types, extending types, or choosing between interface and type aliases.

typescript-best-practices

210
from flpbalada/my-opencode-config

Guides TypeScript best practices for type safety, code organization, and maintainability. Use this skill when configuring TypeScript projects, deciding on typing strategies, writing async code, or reviewing TypeScript code quality.

typescript-advanced-types

210
from flpbalada/my-opencode-config

Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications. Use when implementing complex type logic, creating reusable type utilities, or ensuring compile-time type safety in TypeScript projects.

trust-psychology

210
from flpbalada/my-opencode-config

Build trust signals that reduce perceived risk and enable user action. Use when designing landing pages, checkout flows, onboarding experiences, or any conversion point where user hesitation is a barrier.

theme-epic-story

210
from flpbalada/my-opencode-config

Structure product work hierarchically using themes, epics, and stories. Use when organizing backlogs, planning releases, communicating with stakeholders, or breaking down large initiatives into manageable work.

tailwind-v4-configuration

210
from flpbalada/my-opencode-config

Configure Tailwind CSS v4 with CSS-first approach. Use when installing, migrating from v3, setting up build tools (Vite/PostCSS/CLI), customizing themes with @theme, or configuring plugins.