Agent skill

Frappe UI Interface Builder

by frappe in frappe/drive

Builds Frappe-style interfaces from the frappe-ui Vue 3 components and semantic Tailwind tokens instead of hand-rolled controls.

AGPL-3.0Auto-check passedFrontend & Design

Install Frappe UI Interface Builder

skills CLI
$ npx skills add frappe/drive --skill frappe-ui -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install frappe/drive frappe-ui --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
frappe-ui
GitHub stars
738
Token cost
~1.5k tokens
SKILL.md length
621 words
Files
5
Skills in repo
1
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Builds Frappe-style interfaces from the frappe-ui Vue 3 components and semantic Tailwind tokens instead of hand-rolled controls.

  • Works in 9 steps: Pick the component, don't build one.… → Use semantic tokens, not raw colors. No… → Follow the two-axis color rule.… → …
  • Scaffolding a page, form, dialog or list in a Frappe-based app
  • SKILL.md covers Quick start, Workflow, Reference files and Authoritative upstream docs, plus 1 more section
  • Calls npm

What it does

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.

When your agent uses it

  • 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

Example prompts

  • “Build a settings dialog for this Frappe app using frappe-ui components.”
  • “Replace the hand-written buttons and inputs on this page with frappe-ui equivalents and semantic tokens.”
  • “Add a task list view that loads its data through useList.”

Requirements

  • A Vue 3 project using the frappe-ui library and Tailwind

Workflow steps

9 steps, taken from the first numbered list in SKILL.md.

  1. Pick the component, don't build one. Consult COMPONENTS.md — if any entry fits, use it. Only fall back to raw HTML for layout (grids, flex…
  2. Use semantic tokens, not raw colors. No bg-gray-100, text-gray-900, border-gray-300. Use bg-surface-*, text-ink-*, border-outline-*. See…
  3. Follow the two-axis color rule. Component color = variant (solid | outline | subtle | ghost) + theme (gray | blue | green | red | orange)…
  4. Wire two-way state with v-model. Overlays use v-model:open. Inputs use v-model. Comboboxes use v-model + v-model:query. Never :value +…
  5. Use the labeling contract on inputs. Every input control accepts label, description, error, required — use these instead of placeholder…
  6. Slot vocabulary is fixed. #prefix, #suffix, #trigger, #empty, #header, #footer, #default. Scoped per-item slots: #item-prefix…
  7. Icons are CSS classes. Render an icon as size-4" aria-hidden="true" />. For frappe-ui props that accept an icon (e.g. Button.icon…
  8. Imperative for one-shot UI. Use dialog.confirm, dialog.alert, dialog.prompt, toast.success/error/info — don't manually mount for…
  9. API calls go through useCall. Use the useCall composable (or useList / useDoc for higher-level shapes) for every Frappe API call. Never…

What it can do on your machine

Read from SKILL.md and the folder at commit f12393e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • ui.frappe.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~86
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from frappe/drive at commit f12393e, republished under its AGPL-3.0 licence (© frappe). 621 words, ~1,528 tokens.

Download SKILL.mdSave it as .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.
name
frappe-ui
description
Build consistent Frappe-style user interfaces using the frappe-ui Vue 3 component library and its design tokens. Use when scaffolding pages, forms, dialogs, lists, or any UI inside a Frappe-based app, when the user mentions frappe-ui, Frappe Cloud / Gameplan / Desk / Drive / Insights styling, or asks to "use frappe-ui components".

frappe-ui

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.

Quick start

vue
<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>

Workflow

  1. Pick the component, don't build one. Consult COMPONENTS.md — if any entry fits, use it. Only fall back to raw HTML for layout (grids, flex containers).
  2. Use semantic tokens, not raw colors. No bg-gray-100, text-gray-900, border-gray-300. Use bg-surface-*, text-ink-*, border-outline-*. See TOKENS.md.
  3. Follow the two-axis color rule. Component color = variant (solid | outline | subtle | ghost) + theme (gray | blue | green | red | orange). Never invent intent, kind, severity, appearance.
  4. Wire two-way state with v-model. Overlays use v-model:open. Inputs use v-model. Comboboxes use v-model + v-model:query. Never :value + @change.
  5. Use the labeling contract on inputs. Every input control accepts label, description, error, required — use these instead of placeholder hacks or separate <label> elements.
  6. Slot vocabulary is fixed. #prefix, #suffix, #trigger, #empty, #header, #footer, #default. Scoped per-item slots: #item-prefix, #item-suffix. No #icon-left / #avatar-right.
  7. Icons are CSS classes. Render an icon as <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.
  8. Imperative for one-shot UI. Use dialog.confirm, dialog.alert, dialog.prompt, toast.success/error/info — don't manually mount <Dialog> for confirmations.
  9. API calls go through 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.

Reference files

  • SETUP.md — scaffolding a fresh Vite + Vue 3 + frappe-ui project: version pinning, vite.config.js, Tailwind, PostCSS, CSS entry, plugin vs provider. Read this first when bootstrapping from scratch.
  • COMPONENTS.md — component catalog: when to reach for each one, key props, common pitfalls.
  • TOKENS.md — semantic color tokens (ink-*, surface-*, outline-*), typography, spacing, radii.
  • PATTERNS.md — recipes: form pages, list pages, settings panels, empty states, confirmation flows.

Authoritative upstream docs

When the bundled refs don't answer a specific API question, fetch the official LLM-friendly index:

  • https://ui.frappe.io/llms.txt — curated index of every component doc, design-system tokens page, and data-fetching guide. Always current with the published library; follow the links inside for full details on a specific component.

Prefer the upstream llms.txt over guessing — it lists every component's docs page and the canonical design-system / data-fetching pages.

Show full SKILL.md (233 more words)Show less

Anti-patterns to flag

  • Scaffolding a fresh project with 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.
  • Importing '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'.
  • Omitting optimizeDeps.exclude: ['frappe-ui'] — esbuild's prebundler will choke on the package's ~icons/lucide/* virtual imports before any Vite plugin runs.
  • Forgetting app.use(FrappeUI) because you only saw <FrappeUIProvider> mentioned — both are required. Plugin handles app-level injections; provider mounts the imperative dialog/toast portals.
  • Skipping vue-router for single-page prototypes — <Button> injects Symbol(router) and warns on every render without it.
  • Hand-rolled <button class="bg-blue-500 ..."> instead of <Button>.
  • Raw Tailwind palette colors (gray-, blue-) outside the semantic tokens.
  • intent="warning" / appearance="primary" / kind="success" props — collapse to variant + theme.
  • Class-injection props (triggerClass, contentClass). Use the component's data-slot / data-state attributes from CSS instead.
  • Manually mounting <Dialog> just to ask "are you sure?" — use dialog.confirm.
  • Bare v-model on <Dialog> for visibility — use v-model:open.
  • Placeholder-as-label on TextInput / Select / DatePicker — pass label.
  • Raw 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

Files

SKILL.md and 4 other files in .agents/skills/frappe-ui of frappe/drive.

  • SKILL.md
  • COMPONENTS.md
  • PATTERNS.md
  • SETUP.md
  • TOKENS.md

Open the folder on GitHubat commit f12393e

Compare with similar skills

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.

Frappe UI Interface Builder compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Frappe UI Interface Builder this skillfrappe/drive738—~1.5kAutomated safety check: PassAGPL-3.0
Design StyleCastor6/tactus3761 repos~2.1kAutomated safety check: PassApache-2.0
Bryl Minimal Designbryllim/bryl-minimal-design115—~2.9kAutomated safety check: PassMIT
Using Ouds Web Version Major MinorOrange-OpenSource/Orange-Boosted-Bootstrap222—~4.2kAutomated safety check: PassMIT
Frontend Designjjyaoao/HelloAgents3.2k1 repos~7kAutomated safety check: PassMIT
Frontend UI Foundryjiushiwon/wg-skills114—~1.4kAutomated safety check: PassApache-2.0

Similar skills

  • 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.

    376 GitHub starsUsed in 1 repo~2.1k tokens
    Frontend & DesignAuto-check passed
  • Bryl Minimal Design

    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…

    115 GitHub stars~2.9k tokensUpdated 3 mo ago
    Frontend & DesignAuto-check passed
  • Using Ouds Web Version Major Minor

    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.

    222 GitHub stars~4.2k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Frontend Design

    jjyaoao/HelloAgents

    Transform UI style requirements into production-ready frontend code with systematic design tokens, accessibility compliance, and creative execution.

    3.2k GitHub starsUsed in 1 repo~7k tokens
    Frontend & DesignAuto-check passed
  • Frontend UI Foundry

    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…

    114 GitHub stars~1.4k tokensUpdated 3 days ago
    Frontend & DesignAuto-check passed
  • Light Frontend Design

    Light0305/Light-skills

    Light 按需工程技能·前端设计:把模糊的「做个好看的界面」落成能跑的 React/Tailwind/shadcn 代码 + 设计决策说明—— 有视觉记忆点(signature element)、风格自洽(design tokens 一致)、适配场景(学术海报/数据大屏/管理后台/移动端/营销 landing 信息密度各不同)、反「一眼 AI」(紫蓝渐变/Inter/16px 圆角/巨型…

    640 GitHub stars~3.1k tokensUpdated 3 mo ago
    Frontend & DesignAuto-check passed

Questions about Frappe UI Interface Builder

What does Frappe UI Interface Builder do?

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.

When should I use Frappe UI Interface Builder?

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.

How do I install Frappe UI Interface Builder in Claude Code?

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.

How do I install Frappe UI Interface Builder in Codex?

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.

Can I use Frappe UI Interface Builder in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Frappe UI Interface Builder need to run?

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.

Does Frappe UI Interface Builder access the network?

SKILL.md names 1 domain. As links in the text: ui.frappe.io. This is read from the text; nothing was executed.

Is Frappe UI Interface Builder safe to install?

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.

What licence does Frappe UI Interface Builder use?

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.

How many tokens does Frappe UI Interface Builder use?

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.

What are the alternatives to Frappe UI Interface Builder?

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.

Who maintains Frappe UI Interface Builder?

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.