with one click
form
Work on form UI components
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Work on form UI components
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Synchronise Nix deps hash after changing deps.edn
Diagnose and fix CI build failures
Create atomic commits from all unstaged changes
Create atomic commits from session changes only
Create a new Clojure component
Run Kaocha tests
| name | form |
| description | Work on form UI components |
| allowed-tools | Read, Edit, Write, Grep, Glob, Bash(just css, just tailwind, just fmt), mcp__clojure-mcp__* |
Work on form UI components. Before starting, read docs/forms.org.
Forms communicate through physical metaphor:
BANNED:
form-error, rejected?| Pristine field + blur | No validation | | Touched field + blur | Validate on blur | | Field with error + input | Validate immediately (debounced) | | Form submission | Validate all, shake if invalid |
Use data structures for classes:
;; Good: Data structures with Winnow
:class (tw/merge-classes ["h-5" "flex" "items-center"
(if message "opacity-100" "opacity-0")])
;; Good: Use with-defaults
[:input (tw/with-defaults attrs ["w-full" "rounded-lg" ring-class])]
BANNED: Hiccup class shorthand
;; BANNED
[:label.block.text-xs "Email"]
;; REQUIRED
[:label {:class "block text-xs"} "Email"]
After modifying dev-resources/templates/tailwind.css.selmer:
just css
Watch for class changes:
just tailwind
Always use qualified keywords:
:bits.form/pristine
:bits.form/advisory
:bits.form/error
$ARGUMENTS