# Produced Skill

> Test fixture — produced SKILL.md sets a `data-*-color-scheme` attribute in the root-entry-file code block. Hard Rules cites `shell/mode-attribute-no-theme-import` to pair the attribute with a theme import, but no row appears in produced anti-patterns.md. Cross-check must FAIL.

- Skill: `vercel-labs/produced-skill-12` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add vercel-labs/produced-skill-12`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vercel-labs/produced-skill-12/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Vercel Labs (https://skillmd.com/u/vercel-labs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vercel-labs/produced-skill-12

---


## Setup

Source: `<reference-project>` @ `src/app/layout.tsx`

```tsx
import { ThemeProvider, BaseSurface } from 'ds-react'
import './globals.css'

export default function RootLayout({ children }) {
  return (
    <html lang="en" data-ds-color-scheme="dark">
      <body>
        <ThemeProvider>
          <BaseSurface style={{ backgroundColor: 'var(--ds-surface-default)' }}>
            {children}
          </BaseSurface>
        </ThemeProvider>
      </body>
    </html>
  )
}
```

### Companion CSS — src/app/globals.css

```css
@import "ds-themes/light.css";

body {
  background-color: var(--ds-surface-default);
  color: var(--ds-text-default);
}
```

## When to Load References

| Trigger | Files to load | Notes |
|---|---|---|
| button asks | references/components/button.md | per-component file |

## Hard rules

- The body/root MUST paint with `var(--ds-surface-default)` via the `<BaseSurface style>` prop OR `body { background-color: ... }` in `globals.css`. A token-painted component on an unpainted shell is the canonical mode-mismatch bug — see `references/anti-patterns.md` `shell/unpainted-body`.
- `<html data-ds-color-scheme="<mode>">` MUST be paired with the matching theme CSS import (`@import "ds-themes/<mode>.css";`). The attribute sets the resolution context; the import provides the values — see `shell/mode-attribute-no-theme-import`.
- Any prop, variant, token, or asset the agent cannot ground in source gets a literal `[VERIFY]` marker inline.

## Final checks

After generating UI: cite each component used; confirm shell parity.

In scope: tokens, assets, component descriptions, component APIs.

