Documentation Guidelines

SkillDev tools

Use when writing or editing Storybook MDX docs (*.mdx) — the two-tab Overview/Implementation structure, story-backed `<Source>` examples, and doc table guidelines.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Documentation Guidelines skill

What this skill tells your AI

The instructions your AI receives, as published by ledgerhq/lumen in .claude/skills/component-mdx/SKILL.md and read by ahel’s review.

MDX Documentation Structure

Component documentation MUST use the two-tab structure with Overview and Implementation tabs.

Overview Tab

Intent: Provide designers and developers with a comprehensive understanding of the component's purpose, behavior, and usage patterns.

Include:

  • Introduction and Figma link
  • Anatomy with visual breakdown
  • Properties (appearance, size, states, etc.)
  • Responsive behavior
  • Accessibility considerations
  • Interactive examples

Implementation Tab

Intent: Give developers practical, copy-paste ready code examples and integration patterns.

Include:

  • Installation instructions (<SetupNote /> where applicable)
  • Code examples via <Source of={ComponentStories.StoryName} /> — not hand-written fenced code blocks when a matching story exists
  • Advanced patterns (icons, routing, custom styling) — prefer <Source> linked to the relevant story; use fenced blocks only when no story covers the snippet (e.g. one-off prop combinations)

Use <Source> for story-backed examples:

import { Meta, Canvas, Controls, Source } from '@storybook/addon-docs/blocks';
import * as ComponentStories from './Component.stories';

<Tab label='Implementation'>
  <SetupNote />

  ### Basic Usage

  <Source of={ComponentStories.Base} />

  ### With icon

  <Source of={ComponentStories.WithIcon} />
</Tab>
  • Pair each <Source> with a real story export — the snippet stays in sync with Storybook (type: 'dynamic' on stories keeps it accurate when controls change).
  • Do not duplicate story code as manual ```tsx blocks in the Implementation tab.

See the component-stories skill for story setup (type: 'dynamic', Base + args, naming conventions).

Required Structure

import { Meta, Canvas, Controls, Source } from '@storybook/addon-docs/blocks';
import * as ComponentStories from './Component.stories';
import { CustomTabs, Tab, SetupNote } from '../../../../.storybook/components';

<Meta title='Core/Component' of={ComponentStories} />

# Component Name

<CustomTabs>
  <Tab label='Overview'>
    ## Introduction
    <Canvas of={ComponentStories.Base} />
    <Controls of={ComponentStories.Base} />
  </Tab>

  <Tab label='Implementation'>
    <SetupNote />
    ### Basic Usage
    <Source of={ComponentStories.Base} />
    ### Advanced Patterns
    <Source of={ComponentStories.WithFeature} />
  </Tab>
</CustomTabs>

Example: See Button.mdx in ui-react or ui-rnative for reference implementation.

Tables in docs

When a doc needs a table, use the copy-paste markup template in references/tables.md — it carries the container/header/body classnames and the design-system typography, colour, spacing and border tokens to use.

Review checks

Rules verifiable from a diff.

CheckApplies toDetectSkip
Doc doesn't use the two-tab Overview / Implementation structure.mdxmissing <Tab label='Overview'> / 'Implementation'visualization libs (no .mdx)
Implementation example is a hand-written ```tsx block where a story exists.mdxfenced code duplicating a story instead of <Source of={…} />snippets no story covers
Doc references a removed/renamed prop or a stale default.mdxprop names vs current types.ts
Table uses raw Tailwind palette instead of tokens.mdxtext-gray-, arbitrary sizes in table markup

Signals

GitHub stars
23
Forks
5
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
component-mdx
Source
github.com/ledgerhq/lumen