--- name: ds-create-token description: Create design tokens for a component from its CSS variables --- # ds-create-token Create component design tokens from CSS variables defined in a component's SCSS file. The skill analyzes `vars.local()` calls and variant `--mod-` variables, suggests component token paths, and creates them in `Base.tokens.json`. ## Usage ``` /ds-create-token ``` Examples: ``` /ds-create-token badge /ds-create-token button /ds-create-token footer ``` ## Workflow ### Step 1: Extract & Display - Parses component SCSS files for `@include vars.local()` and `--mod-` variables - Shows a table with: - Component variable name - Current value (alias/global/hardcoded) - Value type - Status indicator - Displays **preview** of component tokens that will be created - User confirms to proceed to Step 2 ### Step 2: Suggest Paths & Confirm For each variable: - **Hardcoded values** → Uses `ds-find-token` skill to find matching alias tokens - If no match found → Suggests creating new Alias token (user confirms) - **Global tokens** → Suggests replacing with Alias equivalent - Proposes component token path following: `--ds-[component]-[variant]-[element]-[category]-[property]-[state]` - Missing segments are skipped (no placeholders) - State segment only included if multiple states exist - User can review, edit, or confirm each mapping ### Step 3: Write & Compile - **Backs up** `Base.tokens.json` - Writes new tokens to `Base.tokens.json` - Creates any new Alias tokens needed - Runs `pnpm tokens` to compile outputs - Shows success summary with created tokens ## Token Path Structure Component tokens always follow this structure: ``` --ds-[component]-[variant]-[element]-[category]-[property]-[state] ``` **Example:** `--ds-badge-primary-color-base-text` - `component`: badge - `variant`: primary - `element`: (skipped if not present) - `category`: color - `property`: text - `state`: base ## Requirements - Component must exist in `packages/core/src/components/` - Component must have a `.host.scss` file with `vars.local()` definitions - Design tokens must already be compiled (run `pnpm tokens` first if needed) ## Important Notes **JSDoc Comments:** When generating or updating JSDoc comments in the SCSS file, do NOT include default values in parentheses. Only include the property name and description. Example: - ✓ `@prop --button-color: Text color of the button` - ✗ `@prop --button-color: Text color of the button (default: --ds-alias-text-color-white)`