Help us improve
Share bugs, ideas, or general feedback.
From cre8
Agent-to-UI schema for CRE8 Web Components (@tmorrow/cre8-wc). Use when building vanilla JS/HTML UIs with CRE8/Innovexa design system using cre8-* custom elements, creating static landing pages, or integrating with non-React frameworks. Triggers on requests mentioning CRE8 web components, cre8-wc, cre8-* elements, Lit components, or vanilla HTML with CRE8 design system. For React projects, use cre8-a2ui-react instead.
npx claudepluginhub tmorrowdev/cre8-pluginHow this skill is triggered — by the user, by Claude, or both
Slash command
/cre8:cre8-a2uiThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Web Components (Lit) library for the CRE8 design system. Uses custom elements with `cre8-` prefix.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Web Components (Lit) library for the CRE8 design system. Uses custom elements with cre8- prefix.
You MUST follow this workflow for all CRE8 UI generation tasks:
Before writing any code, validate the UI design:
/ui-designer skill or UI design validator to review the proposed interfaceGenerate the HTML/CSS using CRE8 web components following this schema.
After code generation is complete, you MUST perform visual and DevTools testing before marking the task as complete.
Option A: Use /chrome skill (if available)
/chrome
Then navigate to the generated HTML file and verify rendering.
Option B: Use Chrome DevTools MCP
If the user doesn't have browser automation configured, help them add this to their MCP settings:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest"]
}
}
}
Then use Chrome DevTools MCP to:
Before marking complete, confirm:
DO NOT mark the task as complete until visual testing confirms the UI renders correctly.
library: "@tmorrow/cre8-wc"
framework: Web Components (Lit)
baseClass: Cre8Element
formBaseClass: Cre8FormElement
prefix: cre8-
naming: kebab-case (cre8-button, cre8-card, etc.)
Both the design tokens CSS and the web components script are required:
<!-- 1. Design Tokens (REQUIRED) - must load before components -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@cre8_dev/cre8-design-tokens@1.0.3/lib/web/brands/cre8/css/tokens_cre8.css"/>
<!-- 2. CRE8 Web Components -->
<script type="module" src="https://cdn.jsdelivr.net/npm/@tmorrow/cre8-wc@1.0.26/cdn/cre8-wc.esm.js"></script>
Important: The design tokens stylesheet provides all CSS custom properties (--cre8-*) that components depend on. Without it, components will render without proper styling.
<!-- Use components as custom elements -->
<cre8-button text="Submit" variant="primary"></cre8-button>
| Web Component | React Component | Category |
|---|---|---|
<cre8-button> | <Cre8Button> | Actions |
<cre8-danger-button> | <Cre8DangerButton> | Actions |
<cre8-field> | <Cre8Field> | Forms |
<cre8-select> | <Cre8Select> | Forms |
<cre8-card> | <Cre8Card> | Layout |
<cre8-grid> | <Cre8Grid> | Layout |
<cre8-heading> | <Cre8Heading> | Typography |
<cre8-alert> | <Cre8Alert> | Feedback |
<cre8-modal> | <Cre8Modal> | Disclosure |
<cre8-table> | <Cre8Table> | Data |
<cre8-layout>
<cre8-header>
<cre8-global-nav>
<cre8-global-nav-item href="/">Home</cre8-global-nav-item>
</cre8-global-nav>
</cre8-header>
<main>
<cre8-layout-container>
<!-- Content -->
</cre8-layout-container>
</main>
<cre8-footer></cre8-footer>
</cre8-layout>
<cre8-card>
<cre8-heading type="h2">Sign In</cre8-heading>
<cre8-field label="Email" type="email"></cre8-field>
<cre8-field label="Password" type="password"></cre8-field>
<cre8-button text="Sign In" variant="primary" full-width></cre8-button>
</cre8-card>
<cre8-hero>
<cre8-layout-container>
<cre8-heading type="h1">Welcome</cre8-heading>
<cre8-text-passage>
<p>Build amazing things.</p>
</cre8-text-passage>
<cre8-button text="Get Started" variant="primary"></cre8-button>
</cre8-layout-container>
</cre8-hero>
full-width, error-note)@event-name in Lit or addEventListener<!-- Boolean true -->
<cre8-button text="Save" disabled></cre8-button>
<!-- Boolean false (omit attribute) -->
<cre8-button text="Save"></cre8-button>
<!-- String/enum values -->
<cre8-button text="Cancel" variant="secondary"></cre8-button>
<cre8-button text="Click Me" @click="${handleClick}"></cre8-button>
<!-- Or vanilla JS -->
<script>
document.querySelector('cre8-button').addEventListener('click', handleClick);
</script>
Component details match the React version with kebab-case naming:
Use Web Components (cre8-a2ui) when:
Use React (cre8-a2ui-react) when: