Run WCAG 2.2 Level AA accessibility audits against generated UI. Use when a story has ui:true or when asked to audit accessibility.
中文简介正在准备中。当前显示原文说明。
Scaffold high-fidelity UI component mockups using the project UI stack consuming approved wireframes. Use when implementing approved wireframes.
中文简介正在准备中。当前显示原文说明。
查看安装方法安装前可以查看交给 AI 代理的指令内容。
Scaffold high-fidelity UI component mockups using the project's declared UI stack (Mantine, Tailwind/shadcn, or plain HTML). Mockups consume approved wireframes and design tokens. Output is runnable code — not a design file. Human approval required before the mockup is treated as the implementation target.
| Field | Source | Example |
|---|---|---|
story_file | path to story markdown | docs/stories/auth-reset-0001.md |
wireframe_file | path to approved wireframe | docs/design/wireframes/auth-reset-0001.wireframe.md |
tokens_file | canonical token file | docs/design/identity/tokens.json |
stack | project.config.yaml | react-mantine | react-tailwind | html |
| Stack value | Framework | Token source |
|---|---|---|
react-mantine | @mantine/core | mantine.theme.ts |
react-tailwind | Tailwind CSS + shadcn/ui | tailwind.tokens.js |
react-shadcn | shadcn/ui + Tailwind | tailwind.tokens.js |
html | Vanilla HTML + tokens.css | tokens.css |
| File | Location | Targets |
|---|---|---|
<story-id>.mockup.md | docs/design/mockups/ | web + tui — metadata + approval (tui: also the terminal render + lipgloss styles) |
<story-id>.mockup.tsx | docs/design/mockups/ | web only — React stacks |
<story-id>.mockup.html | docs/design/mockups/ | web only — html stack |
design.target (project.config.yaml, default web):
.tsx/.html) for the configured ui_library, plus .mockup.md.<id>.mockup.md: a fenced monospace terminal render at the target width
covering default/selected/empty/error/loading states, followed by a "Styles" section mapping each
region to lipgloss Foreground/Background/Border/Padding taken from
docs/design/identity/terminal-theme.json. Skip the stack detector and the React templates below.Before generating:
WIREFRAME="docs/design/wireframes/${STORY_ID}.wireframe.md"
TOKENS="docs/design/identity/tokens.json"
# 1. Wireframe must be approved
STATUS=$(python3 -c "
import re
m = re.search(r'^status:\s*(\w+)', open('$WIREFRAME').read(), re.MULTILINE)
print(m.group(1) if m else 'draft')
")
[ "$STATUS" = "approved" ] || { echo "BLOCKED: wireframe not approved"; exit 1; }
# 2. Tokens must exist
[ -f "$TOKENS" ] || { echo "BLOCKED: tokens.json missing — run visual-identity skill first"; exit 1; }
// AUTO-GENERATED MOCKUP — docs/design/mockups/{story-id}.mockup.tsx
// Story: {story title}
// Wireframe: {wireframe file}
// Tokens: mantine.theme.ts
// Status: draft — awaiting approval
import { MantineProvider, Stack, TextInput, Button, Text, Alert } from '@mantine/core';
import { theme } from '../../docs/design/identity/mantine.theme';
import { IconAlertCircle } from '@tabler/icons-react';
interface Props {
error?: string;
onSubmit: (email: string) => void;
}
export function {ComponentName}({ error, onSubmit }: Props) {
const [email, setEmail] = useState('');
return (
<MantineProvider theme={theme}>
<Stack gap="md" maw={400} mx="auto" mt="xl">
<Text fw={700} size="xl">{Screen Title}</Text>
<TextInput
label="Email"
placeholder="you@example.com"
value={email}
onChange={(e) => setEmail(e.target.value)}
error={error}
/>
{error && (
<Alert icon={<IconAlertCircle />} color="red" variant="light">
{error}
</Alert>
)}
<Button fullWidth onClick={() => onSubmit(email)}>
Send Reset Link
</Button>
</Stack>
</MantineProvider>
);
}
// AUTO-GENERATED MOCKUP — docs/design/mockups/{story-id}.mockup.tsx
import { useState } from 'react';
interface Props {
error?: string;
onSubmit: (email: string) => void;
}
export function {ComponentName}({ error, onSubmit }: Props) {
const [email, setEmail] = useState('');
return (
<div className="max-w-sm mx-auto mt-16 space-y-4">
<h1 className="text-2xl font-bold text-foreground">{Screen Title}</h1>
<div>
<label className="block text-sm font-medium mb-1">Email</label>
<input
type="email"
className={`w-full border rounded-md px-3 py-2 text-sm ${error ? 'border-error' : 'border-border'}`}
placeholder="you@example.com"
value={email}
onChange={(e) => setEmail(e.target.value)}
/>
{error && <p className="text-error text-sm mt-1">{error}</p>}
</div>
<button
className="w-full bg-brand-primary text-white rounded-md py-2 font-medium hover:opacity-90"
onClick={() => onSubmit(email)}
>
Send Reset Link
</button>
</div>
);
}
Always write a .mockup.md alongside the code file:
---
story_id: "{story_id}"
wireframe: "docs/design/wireframes/{story_id}.wireframe.md"
stack: "{stack}"
status: draft # draft | approved | rejected
approved_by: null
approved_at: null
---
## Mockup: {story title}
### States
- Default
- Error: {describe}
- Success: {describe}
- Loading: {describe if applicable}
### Token Usage
- Primary action: `color.brand.primary`
- Error text: `color.semantic.error`
- Border: `color.surface.border`
### Approval
- [ ] Matches approved wireframe
- [ ] Design tokens applied correctly
- [ ] All interaction states present
- [ ] Approved by product owner / UX lead
| Condition | Action |
|---|---|
| Wireframe not approved | Stop. Output BLOCKED. Do not generate mockup. |
tokens.json missing | Stop. Run visual-identity first. |
Stack unknown | Default to html. Log warning. |
Mockup exists and is approved | Do not overwrite. Log SKIP — approved mockup locked. |
| Component name collision | Append story ID suffix to component name. |
[mockup] CREATE docs/design/mockups/auth-reset-0001.mockup.tsx stack=react-mantine
[mockup] CREATE docs/design/mockups/auth-reset-0001.mockup.md status=draft
[mockup] BLOCKED auth-reset-0001 wireframe not approved
[mockup] SKIP auth-reset-0001 mockup approved — locked
还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Run WCAG 2.2 Level AA accessibility audits against generated UI. Use when a story has ui:true or when asked to audit accessibility.
中文简介正在准备中。当前显示原文说明。
Generate a complete component file tree wired to design tokens with tests and Gherkin spec. Use when scaffolding a new UI component.
中文简介正在准备中。当前显示原文说明。
Extract Gherkin scenarios from story markdown files into runnable .feature files and generate step definition stubs. Use when syncing stories to test suites.
中文简介正在准备中。当前显示原文说明。
Read and write design tokens in W3C DTCG format (tokens.json) and emit CSS, Tailwind, and Mantine outputs. Use when modifying or generating design tokens.
中文简介正在准备中。当前显示原文说明。
Apply Docker and Docker Compose best practices for containerising services. Use when writing or reviewing Dockerfiles and compose configs.
中文简介正在准备中。当前显示原文说明。
Identify and annotate cloud cost implications of architectural decisions. Use when reviewing infrastructure changes or designing new services.
中文简介正在准备中。当前显示原文说明。