forms-inputs — Claude Code skill: form and input animation
A skill that tells your agent how to animate inputs, textareas and selects: timings, field states and CSS for clear feedback.
npx skills add dylantarre/animation-principles --skill forms-inputs -a claude-codeWhat forms-inputs does
The skill maps Disney's twelve animation principles onto form elements and shows what each one does in practice. An input can grow slightly on focus, a submit button compresses on click, a checkbox bounces on toggle. The floating label rises before typing starts, and the focus ring shows up ahead of the content, so the user sees where input will land.
Timings are spelled out per transition: focus border 100–150ms, label float 150–200ms, validation feedback 200ms, error shake 300ms across 3–4 cycles, success check 250ms. Focus transitions use ease-out, validation uses ease-in-out, the label uses cubic-bezier(0.4, 0, 0.2, 1). Ready CSS is included: transitions on border-color and box-shadow, a label shift via translateY(-24px) scale(0.85), and a @keyframes shake that offsets by 5px.
Fields get six defined states — default, focus, filled, valid, invalid, disabled — with smooth transitions between them. If your project already has an animation system with its own curves and durations, these numbers will need reconciling with it, otherwise the forms will sit at a different rhythm than the rest of the interface.
What it helps with
- give clear feedback when a field takes focus
- make a validation error impossible to miss
- pick timings for the floating label and focus border
- define every field state from empty to invalid
- add a response to checkbox toggles and form submits
Example prompts for the agent
- animate the input field and floating label using the forms-inputs skill
- add a shake on validation error and a green pulse on success
- lay out the timings for focus, filled and invalid form states
How to install forms-inputs
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill forms-inputs -a claude-code2Manually: put the files in place
~/.claude/skills/forms-inputs/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/forms-inputs/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill forms-inputs -a codex2Manually: put the files in place
.agents/skills/forms-inputs/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill forms-inputs -a cursor2Manually: put the files in place
.cursor/skills/forms-inputs/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dylantarre/animation-principles forms-inputs2Manually: put the files in place
.github/skills/forms-inputs/SKILL.md1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill forms-inputs -a gemini-cli2Platform CLI
gemini skills install https://github.com/dylantarre/animation-principles --path skills/07-by-ui-element/forms-inputsManually: put the files in place
.devin/skills/forms-inputs/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill forms-inputs -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about forms-inputs
How do I install forms-inputs in Claude?
Run npx skills add dylantarre/animation-principles --skill forms-inputs -a claude-code. The skill file then lands at ~/.claude/skills/forms-inputs/SKILL.md.
What does forms-inputs do?
It gives the agent rules for form animation: field states, transition timings, easing curves and CSS for floating labels, error shakes and success checks.
Which platforms can run this skill?
Beyond Claude there are install commands for Codex, Cursor, GitHub Copilot, Gemini CLI and OpenCode, each with its own command and skill file path.
Source text
SKILL.md · MIT
---
name: forms-inputs
description: Use when animating form fields, inputs, textareas, selects, or interactive form elements to improve usability and feedback
---
# Form & Input Animation Principles
Apply Disney's 12 principles to forms for clear feedback and delightful interactions.
## Principles Applied to Form Elements
### 1. Squash & Stretch
Input fields can subtly expand on focus (1-2px height). Submit button compresses on click. Checkboxes bounce on toggle.
### 2. Anticipation
Label floats up before user types. Focus ring appears before content entry. Prepares user for input action.
### 3. Staging
Focused input should be visually prominent: border color, shadow, label position. Other fields can slightly dim. Guide attention.
### 4. Straight Ahead & Pose to Pose
Define input states: default, focus, filled, valid, invalid, disabled. Clear poses for each state with smooth transitions.
### 5. Follow Through & Overlapping Action
Floating label settles after reaching final position. Validation icon can bounce slightly. Character counter updates with subtle motion.
### 6. Ease In & Ease Out
Focus transitions: `ease-out`. Validation feedback: `ease-in-out`. Label float: `cubic-bezier(0.4, 0, 0.2, 1)`.
### 7. Arcs
Floating labels should arc slightly during upward movement, not straight line. Adds organic feel to mechanical action.
### 8. Secondary Action
While border highlights (primary), label floats (secondary), helper text appears (tertiary). Coordinate without overwhelming.
### 9. Timing
- Focus border: 100-150ms
- Label float: 150-200ms
- Validation feedback: 200ms
- Error shake: 300ms (3-4 cycles)
- Success check: 250ms
- Checkbox toggle: 150ms
### 10. Exaggeration
Error states can shake (4-6px, 2-3 times). Success states can pulse green briefly. Invalid inputs deserve clear, noticeable feedback.
### 11. Solid Drawing
Maintain border-radius consistency. Label typography should stay crisp during transform. Icons should scale proportionally.
### 12. Appeal
Responsive forms feel modern. Micro-animations guide users. Satisfying feedback reduces form abandonment. Worth the investment.
## CSS Implementation
```css
.input-field {
transition: border-color 150ms ease-out,
box-shadow 150ms ease-out;
}
.floating-label {
transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1),
font-size 200ms ease-out,
color 150ms ease-out;
}
.input-field:focus + .floating-label {
transform: translateY(-24px) scale(0.85);
}
@keyframes shake {
0%, 100% { transform: translateX(0); }
25% { transform: translateX(-5px); }
75% { transform: translateX(5px); }
}
```
## Key Properties
- `transform`: translateY (label), translateX (shake)
- `border-color`: state indication
- `box-shadow`: focus rings
- `color`: label/text states
- `opacity`: helper text, icons
© dylantarre · MIT · dylantarre/animation-principles