.cursor/skills/propkit/SKILL.md
Guides creation and refinement of Figma-style property panel patterns ("PropKit") using FigUI3 components. Applies when building or modifying property fields in the playground app (`/propkit` route), generating consistent field prompts, composing horizontal `fig-field` rows, or tuning panel UX for controls like image, color, fill, slider, switch, dropdown, segmented control, easing, and angle.
npx skillsauth add rogie/figui3 propkitInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Patterns for composing clean, production-ready Figma property panels with FigUI3.
IMPORTANT: Favor composition and consistency over custom one-off controls. Build panels from existing
fig-*elements first.
!`node -e "const fs=require('fs'); const ok=fs.existsSync('playground/src/main.tsx'); console.log(JSON.stringify({playground:ok, route:'/propkit', example:'horizontal fig-field + label + fig-* control'},null,2))" 2>/dev/null || echo '{"error":"context unavailable"}'`
fig-field direction="horizontal".fig-input-fill, fig-slider, fig-dropdown, fig-switch, etc.~240px panel blocks in demos).import "@rogieking/figui3/fig.css";await import("@rogieking/figui3/fig.js");main.tsx / main.jsx), not scattered across feature components.import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
export default defineConfig({
plugins: [react()],
});
webgpu-effects) is explicit async bootstrap:import "@rogieking/figui3/fig.css";
const bootstrap = async () => {
await import("@rogieking/figui3/fig.js");
createRoot(document.getElementById("app")!).render(<App />);
};
bootstrap();
<fig-field direction="horizontal"> + <label> + one primary fig-* control.<dialog is="fig-popup"> / <dialog is="fig-dialog">), use class, not className.input, change) for reliable control updates.fig-field.full where property controls should stretch within row constraints.Use a horizontal fig-field...With a label of ...fig-image with upload, fit, and aspect-ratio where needed.fig-input-color with text="true" and optional alpha.fig-input-fill for multi-mode fills; keep value JSON valid.range, opacity, hue, stepper, delta) and include units/transform intentionally.fig-dropdown; include sensible default options.fig-switch; avoid using dropdowns for true/false.fig-segmented-control + fig-segment.fig-easing-curve with/without presets depending on context.fig-input-angle with text="true" for precision workflows.type="range" for generic numeric properties (opacity %, size, spacing, intensity).type="opacity" when color context is needed (set color and usually units="%").type="hue" only for hue selection workflows.type="stepper" for discrete snap points (include a datalist with valid stops).type="delta" for offset/relative adjustments around a neutral point (typically include default, and often symmetric min/max).text="true" for precision-critical properties; omit it for compact/simplified rows.transform when internal value scale differs from UI display (example: internal 0..1, display 0..100%).variant="minimal" for visually quieter contexts.variant="neue" only where explicitly requested for that panel's style.min, max, and step (and units where applicable) to keep behavior predictable.fig-slider for scrub-friendly continuous values (opacity, intensity, scale, blur amount).fig-input-number for precise direct entry (sizes, coordinates, exact typed values).text="true") when users need both quick scrubbing and precise adjustment.fig-segmented-control for small discrete sets (2-5 fixed options).fig-dropdown for larger or less frequently switched option sets.fig-switch for binary state, never slider/dropdown for pure on/off.<!-- Canonical PropKit row -->
<fig-field direction="horizontal">
<label>Opacity</label>
<fig-slider value="75" min="0" max="100" text="true" units="%" full></fig-slider>
</fig-field>
<!-- Non-horizontal (stacked/default column) field -->
<fig-field>
<label>Opacity</label>
<fig-slider value="75" min="0" max="100" text="true" units="%"></fig-slider>
</fig-field>
<!-- Fill + blend pair -->
<fig-field direction="horizontal">
<label>Fill</label>
<fig-input-fill value='{"type":"solid","color":"#667eea"}' experimental="modern"></fig-input-fill>
</fig-field>
<fig-field direction="horizontal">
<label>Blend</label>
<fig-dropdown full experimental="modern">
<option selected>Normal</option>
<option>Multiply</option>
</fig-dropdown>
</fig-field>
Prompt pattern:
Use a horizontal fig-field, with a fig-slider, min=0 max=100 text=true units=%. With a label of Opacity.
<!-- Slider type/variant examples -->
<fig-field direction="horizontal">
<label>Opacity</label>
<fig-slider type="opacity" value="0.75" color="#0D99FF" units="%" text="true" full></fig-slider>
</fig-field>
<fig-field direction="horizontal">
<label>Hue</label>
<fig-slider type="hue" value="180" text="true" variant="minimal" full></fig-slider>
</fig-field>
<fig-field direction="horizontal">
<label>Offset</label>
<fig-slider type="delta" value="0" default="0" min="-5" max="5" step="0.25" text="true" full></fig-slider>
</fig-field>
fig-field, then label + control.input/change and behave well in keyboard workflows.value, min, max, step, units, type, variant as needed).playground/src/data/sections.ts still mirror recommended patterns in this skill.Common PropKit controls:
- fig-image
- fig-input-color
- fig-input-fill
- fig-slider
- fig-switch
- fig-dropdown
- fig-segmented-control
- fig-easing-curve
- fig-input-angle
playground/src/data/sections.ts - canonical PropKit examples and prompt-copy behaviorfig.js - control behavior and emitted eventscomponents.css - visual treatment and layout constraintsREADME.md - component API details and usagedevelopment
Guides creation and refinement of Figma-style property panel patterns ("PropKit") using FigUI3 components. Applies when building or modifying property fields in the playground app (`/propkit` route), generating consistent field prompts, composing horizontal `fig-field` rows, or tuning panel UX for controls like image, color, fill, slider, switch, dropdown, segmented control, easing, and angle.
tools
Guides development and maintenance of the FigUI3 web components library for Figma-style plugin UIs. Applies when adding or modifying `fig-*` custom elements, updating docs/demo pages, adjusting theme tokens, improving accessibility, or debugging component behavior in `fig.js`, `components.css`, `index.html`, and `README.md`.
development
Implements CSS nesting and advanced selectors with progressive enhancement and maintainable specificity. Use when writing or refactoring nested CSS, or when the user mentions :has, :is, :where, :not, or complex selector composition.
tools
Guides development and maintenance of the FigUI3 web components library for Figma-style plugin UIs. Applies when adding or modifying `fig-*` custom elements, updating docs/demo pages, adjusting theme tokens, improving accessibility, or debugging component behavior in `fig.js`, `components.css`, `index.html`, and `README.md`.