Design Style
Castor6/tactus
A skill your agent uses whenever the user asks to build, create, design, develop, improve, or style any frontend interface or visual element.
Builds Frappe-style interfaces from the frappe-ui Vue 3 components and semantic Tailwind tokens instead of hand-rolled controls.
$ npx skills add frappe/drive --skill frappe-ui -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install frappe/drive frappe-ui --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/frappe/drive.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/frappe-ui .claude/skills/frappe-ui && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "frappe-ui" agent skill from https://github.com/frappe/drive/tree/develop/.agents/skills/frappe-ui into .claude/skills/frappe-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frappe-ui", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/frappe/drive/tree/develop/.agents/skills/frappe-uiType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add frappe/drive --skill frappe-ui -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install frappe/drive frappe-ui --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/frappe/drive.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/frappe-ui .agents/skills/frappe-ui && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "frappe-ui" agent skill from https://github.com/frappe/drive/tree/develop/.agents/skills/frappe-ui into .agents/skills/frappe-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frappe-ui", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add frappe/drive --skill frappe-ui -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install frappe/drive frappe-ui --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/frappe/drive.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/frappe-ui .cursor/skills/frappe-ui && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "frappe-ui" agent skill from https://github.com/frappe/drive/tree/develop/.agents/skills/frappe-ui into .cursor/skills/frappe-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frappe-ui", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/frappe/drive.git --path .agents/skills/frappe-ui--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add frappe/drive --skill frappe-ui -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install frappe/drive frappe-ui --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/frappe/drive.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/frappe-ui .gemini/skills/frappe-ui && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "frappe-ui" agent skill from https://github.com/frappe/drive/tree/develop/.agents/skills/frappe-ui into .gemini/skills/frappe-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frappe-ui", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install frappe/drive frappe-uiInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add frappe/drive --skill frappe-ui -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/frappe/drive.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/frappe-ui .github/skills/frappe-ui && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "frappe-ui" agent skill from https://github.com/frappe/drive/tree/develop/.agents/skills/frappe-ui into .github/skills/frappe-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frappe-ui", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add frappe/drive --skill frappe-ui -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install frappe/drive frappe-ui --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/frappe/drive.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/frappe-ui .opencode/skills/frappe-ui && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "frappe-ui" agent skill from https://github.com/frappe/drive/tree/develop/.agents/skills/frappe-ui into .opencode/skills/frappe-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frappe-ui", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
frappe-uiBuilds Frappe-style interfaces from the frappe-ui Vue 3 components and semantic Tailwind tokens instead of hand-rolled controls.
The agent composes pages, forms, dialogs and lists in Frappe-based apps from frappe-ui components, and does not write its own buttons, inputs or dropdowns. It also applies when you mention frappe-ui or Frappe Cloud, Gameplan, Desk, Drive or Insights styling. It checks COMPONENTS.md first, with raw HTML kept for layout only, and styles with semantic tokens such as bg-surface, text-ink and border-outline in place of raw gray utility colors.
Component color follows a two-axis rule: a variant (solid, outline, subtle or ghost) plus a theme (gray, blue, green, red or orange), and no invented props like intent or severity. State binds with v-model, with v-model:open for overlays. Inputs take label, description, error and required props, and slot names stay within a fixed set such as prefix, suffix, trigger, empty, header and footer.
Icons render as Lucide CSS classes, one-shot confirmations and notices use the imperative dialog and toast helpers, and every Frappe API call goes through useCall, useList or useDoc rather than fetch or axios. Four reference files cover components, patterns, setup and tokens. The excerpt is cut off at the reference list.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f12393e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
ui.frappe.ioFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Frappe UI Interface Builder loads about 1.5k tokens when it runs. Until then it costs about 86 tokens; SKILL.md has 621 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from frappe/drive at commit f12393e, republished under its AGPL-3.0 licence (© frappe). 621 words, ~1,528 tokens.
.claude/skills/frappe-ui/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Build UIs that look and feel like Frappe products by composing frappe-ui components and styling with the library's semantic Tailwind tokens. Never hand-roll buttons, inputs, dialogs, dropdowns, etc. — pick the right component first.
<script setup>
import { Button, Dialog, TextInput, FormControl } from 'frappe-ui'
import { ref } from 'vue'
const open = ref(false)
const name = ref('')
</script>
<template>
<div class="p-4 bg-surface-white text-ink-gray-9">
<Button variant="solid" theme="gray" @click="open = true">New Task</Button>
<Dialog v-model:open="open" title="Create Task">
<FormControl v-model="name" label="Title" required />
</Dialog>
</div>
</template>COMPONENTS.md — if any entry fits, use it. Only fall back to raw HTML for layout (grids, flex containers).bg-gray-100, text-gray-900, border-gray-300. Use bg-surface-*, text-ink-*, border-outline-*. See TOKENS.md.variant (solid | outline | subtle | ghost) + theme (gray | blue | green | red | orange). Never invent intent, kind, severity, appearance.v-model. Overlays use v-model:open. Inputs use v-model. Comboboxes use v-model + v-model:query. Never :value + @change.label, description, error, required — use these instead of placeholder hacks or separate <label> elements.#prefix, #suffix, #trigger, #empty, #header, #footer, #default. Scoped per-item slots: #item-prefix, #item-suffix. No #icon-left / #avatar-right.<span class="lucide-<name> size-4" aria-hidden="true" />. For frappe-ui props that accept an icon (e.g. Button.icon, Dropdown option icon), pass the namespaced string "lucide-edit". Never import per-icon Vue components.dialog.confirm, dialog.alert, dialog.prompt, toast.success/error/info — don't manually mount <Dialog> for confirmations.useCall. Use the useCall composable (or useList / useDoc for higher-level shapes) for every Frappe API call. Never fetch / axios directly. immediate: false + submit(params) for writes; default behavior auto-fetches on mount. See COMPONENTS.md → Data & resources.vite.config.js, Tailwind, PostCSS, CSS entry, plugin vs provider. Read this first when bootstrapping from scratch.ink-*, surface-*, outline-*), typography, spacing, radii.When the bundled refs don't answer a specific API question, fetch the official LLM-friendly index:
Prefer the upstream llms.txt over guessing — it lists every component's docs page and the canonical design-system / data-fetching pages.
npm create vite and using whatever versions it gives you — current defaults (Vite 8 + Tailwind v4) are incompatible with frappe-ui 0.1.x. See SETUP.md.'frappe-ui/tailwind/preset' or 'frappe-ui/src/style.css' — these paths are not in the package's exports map. Use 'frappe-ui/tailwind' and 'frappe-ui/style.css'.optimizeDeps.exclude: ['frappe-ui'] — esbuild's prebundler will choke on the package's ~icons/lucide/* virtual imports before any Vite plugin runs.app.use(FrappeUI) because you only saw <FrappeUIProvider> mentioned — both are required. Plugin handles app-level injections; provider mounts the imperative dialog/toast portals.vue-router for single-page prototypes — <Button> injects Symbol(router) and warns on every render without it.<button class="bg-blue-500 ..."> instead of <Button>.gray-, blue-) outside the semantic tokens.intent="warning" / appearance="primary" / kind="success" props — collapse to variant + theme.triggerClass, contentClass). Use the component's data-slot / data-state attributes from CSS instead.<Dialog> just to ask "are you sure?" — use dialog.confirm.v-model on <Dialog> for visibility — use v-model:open.TextInput / Select / DatePicker — pass label.fetch / axios for API calls — use useCall (or useList / useDoc).createResource / createListResource / createDocumentResource in new code — those are legacy v1 APIs; the v3 composables (useCall, useList, useDoc) are the recommended path.When in doubt about an API, start at https://ui.frappe.io/llms.txt and follow the link for the component or topic in question. Source lives in the frappe/frappe-ui GitHub repo (src/components/<Name>/, plus PHILOSOPHY.md and CONTEXT.md at the repo root).
© frappe, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files in .agents/skills/frappe-ui of frappe/drive.
Open the folder on GitHubat commit f12393e
Frappe UI Interface Builder next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Frappe UI Interface Builder this skillfrappe/drive | 738 | — | ~1.5k | Automated safety check: Pass | AGPL-3.0 | |
| Design StyleCastor6/tactus | 376 | 1 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Bryl Minimal Designbryllim/bryl-minimal-design | 115 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Using Ouds Web Version Major MinorOrange-OpenSource/Orange-Boosted-Bootstrap | 222 | — | ~4.2k | Automated safety check: Pass | MIT | |
| Frontend Designjjyaoao/HelloAgents | 3.2k | 1 repos | ~7k | Automated safety check: Pass | MIT | |
| Frontend UI Foundryjiushiwon/wg-skills | 114 | — | ~1.4k | Automated safety check: Pass | Apache-2.0 |
Castor6/tactus
A skill your agent uses whenever the user asks to build, create, design, develop, improve, or style any frontend interface or visual element.
bryllim/bryl-minimal-design
Apply the bryl-minimal design language — a monochrome, typography-driven minimal aesthetic with halftone dot textures, pixel-font display headings, tiny uppercase monospace labels, soft large-radius…
Orange-OpenSource/Orange-Boosted-Bootstrap
Provides comprehensive knowledge of the OUDS Web library (Orange Unified Design System for Web), a Bootstrap-based CSS/JS framework for building Orange-branded web interfaces.
jjyaoao/HelloAgents
Transform UI style requirements into production-ready frontend code with systematic design tokens, accessibility compliance, and creative execution.
jiushiwon/wg-skills
A skill your agent uses when generating UI for a specific scenario (mobile/PC/官网/管理端/营销页/文档/金融/原生/3D), when refactoring an existing HTML/Vue/React project to a unified design system, when extracting…
Light0305/Light-skills
Light 按需工程技能·前端设计:把模糊的「做个好看的界面」落成能跑的 React/Tailwind/shadcn 代码 + 设计决策说明—— 有视觉记忆点(signature element)、风格自洽(design tokens 一致)、适配场景(学术海报/数据大屏/管理后台/移动端/营销 landing 信息密度各不同)、反「一眼 AI」(紫蓝渐变/Inter/16px 圆角/巨型…
Works with
Categories
Builds Frappe-style interfaces from the frappe-ui Vue 3 components and semantic Tailwind tokens instead of hand-rolled controls. The agent composes pages, forms, dialogs and lists in Frappe-based apps from frappe-ui components, and does not write its own buttons, inputs or dropdowns. It also applies when you mention frappe-ui or Frappe Cloud, Gameplan, Desk, Drive or Insights styling.
Frappe UI Interface Builder fits situations like: scaffolding a page, form, dialog or list in a Frappe-based app; replacing hand-written controls with frappe-ui components; choosing semantic color tokens instead of raw Tailwind colors; wiring Frappe API calls into a Vue component.
Run `npx skills add frappe/drive --skill frappe-ui -a claude-code`. Or copy the skill folder (.agents/skills/frappe-ui in frappe/drive) into .claude/skills/frappe-ui in your project. Claude Code loads it when a task matches its description.
Run `npx skills add frappe/drive --skill frappe-ui -a codex`. Or copy the skill folder (.agents/skills/frappe-ui in frappe/drive) into .agents/skills/frappe-ui in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add frappe/drive --skill frappe-ui -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/frappe-ui, .gemini/skills/frappe-ui, .github/skills/frappe-ui and .opencode/skills/frappe-ui in your project.
Going by SKILL.md and its folder, Frappe UI Interface Builder needs the command-line tools its instructions call (npm). Our summary lists: A Vue 3 project using the frappe-ui library and Tailwind.
SKILL.md names 1 domain. As links in the text: ui.frappe.io. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Frappe UI Interface Builder is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.5k tokens (SKILL.md is roughly 6.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Frappe UI Interface Builder: Design Style (Castor6/tactus, 376 stars), Bryl Minimal Design (bryllim/bryl-minimal-design, 115 stars), Using Ouds Web Version Major Minor (Orange-OpenSource/Orange-Boosted-Bootstrap, 222 stars) and Frontend Design (jjyaoao/HelloAgents, 3.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
frappe (a GitHub organization) maintains it in frappe/drive, which has 738 GitHub stars. The repository was last updated on October 1, 2026.
Source: frappe/drive on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.