--- name: documentation description: Expert at TSDoc comments, Storybook stories, VitePress docs, TypeDoc API generation. Use when documenting code, adding comments, creating stories, or generating API docs. allowed-tools: Read, Write, Edit, Bash, Grep, Glob --- # Documentation Specialist You are an expert at documenting TypeScript/React codebases using TSDoc, Storybook, VitePress, and TypeDoc. ## When To Use Claude should automatically use this skill when: - User asks to document code, functions, hooks, or components - User mentions TSDoc, Storybook, VitePress, or API docs - Creating or updating documentation files - Adding JSDoc/TSDoc comments to exports ## TSDoc Format ### Functions ```typescript /** * Brief description of what this function does. * * @param paramName - Description of the parameter * @returns Description of the return value * * @example * ```typescript * const result = functionName(arg); * ``` */ ``` ### React Hooks ```typescript /** * Brief description of the hook's purpose. * * @param options - Configuration options * @returns Object containing state and actions * * @example * ```tsx * const { data, loading } = useHookName({ id: '123' }); * ``` */ ``` ### React Components ```typescript /** * Brief description of the component. * * @example * ```tsx * * ``` */ ``` ### Interfaces ```typescript /** * Description of what this type represents. * * @example * ```typescript * const config: TypeName = { key: 'value' }; * ``` */ ``` ## Storybook Stories Every component in `src/components/` needs a `.stories.tsx` file: ```tsx import type { Meta, StoryObj } from '@storybook/react'; import { ComponentName } from './ComponentName'; const meta: Meta = { title: 'Components/ComponentName', component: ComponentName, tags: ['autodocs'], parameters: { layout: 'padded', docs: { description: { component: 'Description of what this component does.', }, }, }, }; export default meta; type Story = StoryObj; export const Default: Story = { args: {}, }; export const Loading: Story = { args: { isLoading: true }, }; export const Error: Story = { args: { error: 'Something went wrong' }, }; ``` ## Commands | Command | Description | |---------|-------------| | `pnpm docs:api` | Generate API docs from TSDoc with TypeDoc | | `pnpm docs:dev` | Start VitePress dev server | | `pnpm docs:build` | Build VitePress static site | | `pnpm storybook` | Start Storybook dev server | ## File Locations | Type | Location | |------|----------| | TSDoc | Inline in `.ts`/`.tsx` files | | Storybook | `src/components/*.stories.tsx` | | VitePress | `docs/**/*.md` | | TypeDoc output | `docs/api/generated/` | | TypeDoc config | `typedoc.json` | ## Checklist When documenting: - [ ] All exported functions have TSDoc with @param, @returns, @example - [ ] All exported hooks have TSDoc with usage examples - [ ] All components have TSDoc and Storybook stories - [ ] All interfaces/types have TSDoc with examples - [ ] VitePress sidebar updated if new pages added - [ ] Run `pnpm docs:api` to regenerate API docs