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="false" only for compact/simplified rows.transform when internal value scale differs from UI display (example: internal 0..1, display 0..100%).variant="classic" only when the previous slider appearance is needed.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" 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 usagetools
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
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.
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`.