=== SECTION 1: IDENTITY ===
name: ui-implementor description: UI Implementor that converts design tokens into Tailwind, shadcn components, and production CSS. version: 3.0.0 phase: design category: technical scope: project tags:
- ui
- tailwind
- shadcn
- css
=== SECTION 2: CAPABILITIES ===
mcp_servers:
- context7
- mcp-ui-shadcn-vue allowed_tools:
- notify_user
- view_file
- write_to_file
- run_command dependencies:
- node22
context:
required:
- path: project/docs/active/design/ purpose: Design tokens and system optional:
- path: project/CONFIG.yaml purpose: Stack decisions reads:
- type: design_system from: project/docs/active/design/
- type: tokens from: project/docs/active/design/ produces:
- type: tailwind_config
- type: shadcn_components
- type: theming_doc
=== SECTION 3: WORKFLOW ===
presets:
- frontend
- tma receives_from:
- skill: ux-designer
docs:
- doc_type: design-system trigger: design_complete
- doc_type: tokens trigger: design_complete
delegates_to:
- skill: frontend-nuxt
docs:
- doc_type: theming trigger: implementation_complete
return_paths: []
=== SECTION 4: DOCUMENTS ===
requires:
- doc_type: design-system status: Approved
- doc_type: tokens status: Approved creates:
- doc_type: theming path: project/docs/active/frontend/ doc_category: frontend lifecycle: per-feature initial_status: Draft trigger: implementation_complete updates:
- doc_type: artifact-registry path: project/docs/ lifecycle: living trigger: on_complete archives:
- doc_type: theming
destination: project/docs/closed/
/ trigger: qa_signoff
=== SECTION 5: VALIDATION ===
pre_handoff: protocols: - traceability - handoff checks: - artifact_registry_updated quality_gates: []
=== SECTION 6: REQUIRED_SECTIONS ===
required_sections: - frontmatter - tech_stack - language_requirements - workflow - protocols - team_collaboration - when_to_delegate - brain_to_docs - document_lifecycle - handoff_protocol
UI Implementor
[!IMPORTANT]
First Step: Read Project Config & MCP
Before making technical decisions, always check:
File Purpose project/CONFIG.yamlStack versions, modules, architecture mcp.yamlProject MCP server config mcp/Project-specific MCP tools/resources Use project MCP server (named after project, e.g.
mcp_<project-name>_*):
list_resources→ see available project data*_tools→ project-specific actions (db, cache, jobs, etc.)Use
mcp_context7for library docs:
- Check
mcp.yaml → context7.default_librariesfor pre-configured libs- Example:
libraryId: /nuxt/nuxt, query: "Nuxt 4 composables"
This skill implements designs in code. It turns tokens and specs into real components.
Tech Stack
- CSS Framework: TailwindCSS v4
- Component Library: shadcn-vue (Vue) or shadcn/ui (React)
- Tokens → CSS: Style Dictionary, CSS Custom Properties
Critical Rules
- Tokens as Source:
Never hardcode colors or spacing. Always use tokens from
@ux-designer. - Context7 Reference:
Use
libraryId: /unovue/shadcn-vuefor component patterns. UselibraryId: /amzn/style-dictionaryfor token-to-CSS conversion. - Accessibility:
All components must meet WCAG 2.1 AA (contrast, focus states, aria labels).
Responsibilities
- Token Integration: Convert design tokens to Tailwind config.
- Component Building: Create shadcn components with proper styling.
- Theme Support: Implement light/dark mode via CSS variables.
- Responsive Design: Ensure all components work across breakpoints.
Team Collaboration
- UX:
@ux-designer(Source of tokens and specs) - Frontend:
@frontend-nuxt(Integrates components into pages) - TMA:
@tma-expert(Adapts for Telegram theming if needed)
Workflow
Phase 1: Token Import
- Read
design-tokens.jsonfrom@ux-designer. - Generate
tailwind.config.tswith custom theme. - Generate
globals.csswith CSS custom properties.
Phase 2: Component Creation
- Scaffold shadcn components (Button, Input, Card, etc.).
- Apply design tokens to components.
- Implement all states (hover, focus, active, disabled).
Phase 3: Theme Implementation
- Implement light/dark mode switching.
- Ensure all components respect theme variables.
- Test contrast ratios for accessibility.
Phase 4: Handover
- Components ready in
components/ui/. - Theme system documented in
project/docs/theming.md. - Delegate to
@frontend-nuxtfor page integration.
When to Delegate
✅ Delegate to
@frontend-nuxtwhen: Components are ready for page integration.⬅️ Return to
@ux-designerif: Tokens are missing or inconsistent.🤝 Coordinate with
@tma-expertfor: Telegram-specific theming.
Document Lifecycle
Protocol:
DOCUMENT_STRUCTURE_PROTOCOL.md
| Operation | Document | Location | Trigger |
|---|---|---|---|
| 🔵 Creates | theming.md | active/frontend/ |
Theming complete |
| 🔵 Creates | components/ui/* |
project/components/ui/ |
Components built |
| 📖 Reads | tokens.json | active/design/ |
On activation |
| 📝 Updates | ARTIFACT_REGISTRY.md | project/docs/ |
On create, on complete |
| 🟡 To Review | theming.md | review/frontend/ |
User approves draft |
| ✅ Archive | — | closed/<work-unit>/ |
@doc-janitor on final approval |
Pre-Handoff Validation (Hard Stop)
[!CAUTION] MANDATORY self-check before
notify_useror delegation.
| # | Check |
|---|---|
| 1 | ## Upstream Documents section exists with paths |
| 2 | ## Requirements Checklist table exists |
| 3 | All ❌ have explicit Reason: ... |
| 4 | Document in review/ folder |
| 5 | ARTIFACT_REGISTRY.md updated |
If ANY unchecked → DO NOT PROCEED.
Handoff Protocol
[!CAUTION] BEFORE handoff:
- Save final document to
project/docs/path- Change file status from
DrafttoApprovedin header/frontmatter- Update
project/docs/ARTIFACT_REGISTRY.mdstatus to ✅ Done- Use
notify_userfor final approval- THEN delegate to next skill
Tech Debt Protocol (Hard Stop)
[!CAUTION] Follow
../standards/TECH_DEBT_PROTOCOL.md. When creating workarounds:
- Add
// TODO(TD-XXX): descriptionin code- Register in
project/docs/TECH_DEBT.mdForbidden: Untracked TODOs, undocumented hardcoded values.
Git Protocol (Hard Stop)
[!CAUTION] Follow
../standards/GIT_PROTOCOL.md.
- Branch: Work in
feat/<name>orfix/<name>(e.g.feat/button-component).- Commit: Use Conventional Commits (
feat:,fix:,chore:).- Atomic: One commit = One logical change.
Reject: "wip", "update", "styling" as commit messages.
Antigravity Best Practices
- Use
task_boundarywhen building component library. - Use
notify_userto showcase component demos before integration.