ui-motion
Skill2 starsChanged 52 days agoMITView on GitHub
Use when designing, implementing, or polishing CSS transitions, FLIP animations, gesture feedback, spring physics, or delight choreography. Don't use for layout styling (use frontend-design), accessibility audits (use ui-ux-review), interactive mockups (use prototype), React render optimization (use react), or multi-task execution plans (use agent-planning).
9 other projects use a version of this.
Adopted by
Most recently taken up by
- whoamnesia/astudio-motiontheir own version, first seen Nov 8, 2026
- linyi-ui/ui-motion-skilltheir own version, first seen Nov 8, 2026
- neijix/AICodeFactorytheir own version, first seen Nov 1, 2026
- qxryz/workflowgeneratortheir own version, first seen Oct 25, 2026
- thewyattbrocato/design-and-copy-skillstheir own version, first seen Oct 17, 2026
- adnanrahim110/ui-motion-skilltheir own version, first seen Oct 15, 2026
Other versions9 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 9
- qxryz/workflowgenerator★ 48same name
- linyi-ui/ui-motion-skill★ 42same name
- thakur698/universal-ui-skills★ 5same name
- Adhamxon/claude-code-skills★ 2same name
- thewyattbrocato/design-and-copy-skills★ 2same name
- designhouseme/AdvancedSkills★ 1same name
- whoamnesia/astudio-motion★ 1same name
- adnanrahim110/ui-motion-skill★ 0same name
- neijix/AICodeFactory★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository35 other files it gives its agents.
- agent-planningSkill
- brainstormingSkill
- codebase-designSkill
- code-reviewSkill
- conventional-commitSkill
- copy-web-designSkill
- executing-plansSkill
- frontend-designSkill
- i18nSkill
- laravelSkill
- prototypeSkill
- pull-requestSkill
- reactSkill
- recursive-researchSkill
- reflect-to-skillSkill
- review-a-skillSkill
- s13nSkill
- schema-migrationSkill
- security-auditSkill
- skill-testingSkill
- summarizeSkill
- systematic-debuggingSkill
- t3-operational-guardrailSkill
- technical-writingSkill
- testing-patternsSkill
- ui-ux-reviewSkill
- unslopSkill
- upsert-codebase-docsSkill
- verification-before-completionSkill
- vibe-wiseSkill
- web-advisor-promptSkill
- wizardSkill
- workspace-onboardingSkill
- writing-for-agentsSkill
- writing-plansSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
22 rules. 0 are common, 13 are distinctive, and 9 are very specific to this project.
0
Common
Most of the 8 edited versions we read keep these.
13
Distinctive
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 28
Authoring animations from scratch: Follow the build sequence below to gate necessity, select tools, and pick exact tokens.
- Distinctive: line 30
Refining tactile micro-interactions: Add active press feedback, anchor popovers to trigger coordinates, eliminate secondary tooltip delays, …
- Distinctive: line 32
Codebase audits and refactor planning: When called with an audit request (e.g.
- Distinctive: line 60
Avoid these core failure modes:
- Very specific: line 63
Animating keyboard-initiated actions: Never animate actions triggered by keyboard shortcuts (Cmd+Space, Esc, Tab).
- Distinctive: line 64
Preserve state feedback when motion is disabled: Never eliminate state registration when animations are turned off.
- Very specific: line 67
Using incorrect motion properties: Avoid ease-in on interactive entrances, scale(0) on mounting elements, keyframes on rapidly triggered …
- Very specific: line 69
Altering source code during audits: When auditing repositories, generate structured plans under docs/superpowers/plans/ without mutating …
- Distinctive: line 70
Animating bulk historical data during initial load: Never bind entrance animations to message histories or bulk collection renders.
- Very specific: line 71
Tearing down ephemeral elements without exit choreography: Never call element.remove() synchronously on live activity indicators.
- Distinctive: line 87
If the request fails this gate, state the decision directly and do not write animation code.
- Distinctive: line 103
If no purpose applies, halt and do not write animation code.
- Distinctive: line 121
Never run two animation engines on the exact same property simultaneously.
- Very specific: line 131
Mount and exit orchestration: Use @starting-style for mount frames.
- Very specific: line 148
Use ease-out for entering elements.
- Very specific: line 149
Use ease-in-out for elements already on screen changing position or morphing.
- Very specific: line 150
Use linear for scroll timelines (animation-timeline: view()) and hold-to-confirm progress indicators.
- Distinctive: line 156
Follow this duration budget reference:
- Distinctive: line 167
Keep functional UI animations under 300ms.
- Very specific: line 187
Never branch conditionally on useReducedMotion() in JSX before initial hydration.
- Distinctive: line 203
When reviewing or proposing UI micro-interaction changes, format findings using an exact table with Before, After, and Why columns:
- Distinctive: line 217
Verify code against this checklist before delivering.
“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
UI motion engineering
Design, build, audit, and optimize hardware-accelerated user interface motion.
Overview
UI motion engineering delivers hardware-accelerated, physically grounded interface motion that preserves utility, improves spatial orientation, and avoids decorative bloat. Motion copies nature to establish spatial consistency (an internal map of where intangible things live in software). Because physical nature is slow, high-frequency actions demand restraint: keyboard shortcuts execute in 0ms, ease-out curves front-load velocity, gestures remain interruptible mid-flight, and state feedback persists even when motion is disabled. Consult deep reference documents in references/ for recipes, gesture physics, platform standards, and audit playbooks.
<HARD-GATE>
Write-Target Boundary. In Author mode, write only to component files containing motion, transition, or animation styling. In Audit mode, write only to `docs/superpowers/plans/` for audit plans and `.agents/state/ui-motion/` for findings. Never modify application state logic, backend calls, or accessibility roles. Any change to `prefers-reduced-motion` handlers requires explicit user approval.
</HARD-GATE>Modes
Select an execution mode before Step 1:
- Author mode (default). Implement choreographies, transitions, and gesture physics.
- Audit mode. Inspect animation performance, check frame drops, and verify reduced-motion compliance without editing styles.
Workflow router
Identify user intent and route execution immediately:
- Authoring animations from scratch. Follow the build sequence below to gate necessity, select tools, and pick exact tokens. Consult references/recipes.md for pre-built component patterns.
- Mental models, time perception, and personality. Consult references/mental-models-and-perception.md for spatial continuity, the Wise artificial delay paradox, Android touch prediction, personality calibration, and the Pokémon state feedback invariant.
- Refining tactile micro-interactions. Add active press feedback, anchor popovers to trigger coordinates, eliminate secondary tooltip delays, apply context menu blink exits, and format reviews using the Before, After, Why table.
- Fluid gestures and spring physics. Consult references/physics-and-gestures.md for Apple momentum decay projection, rubber band boundaries, pointer capture, mid-flight retargeting, and velocity handoffs.
- Codebase audits and refactor planning. When called with an audit request (e.g.
/ui-motion audit <target>), follow references/audit-and-plans.md to inspect the repository against motion failure modes and generate structured refactor plans underdocs/superpowers/plans/without mutating source files. - Mobile web and native platform motion. Consult references/mobile-web-and-native.md for mobile Safari viewport sizing (
100dvh), 300ms tap delay elimination, 16px input auto-zoom prevention, touch overscroll boundaries, and React Native Reanimated worklet UI thread isolation. - Translating informal animation vocabulary. Consult references/vocabulary.md when the user describes an animation informally or by sensation rather than technical names.
- Browser compositor and Google rendering standards. Consult references/google-standards.md when diagnosing Chromium layer explosion, auditing Core Web Vitals (INP and CLS) frame budgets, adopting Material Design 3 motion tokens, or implementing Android physics-based fling and spring animations.
- Desktop native and platform motion. Consult references/desktop-and-platform.md for Windows 11 DWM compositor tokens, Mica backdrop rules, macOS AppKit
NSAnimationContextatomic batching, Electron and Tauri non-client title bar dragging without IPC loop latency, and Linux Wayland buffer sync. - Kinetic typography and shimmer. Consult references/kinetic-typography-and-shimmer.md for character stagger sequences, blur filter boundaries, text-clip gradient shimmer, webfont loading synchronization, and CDP visual test capture timing.
- Creative and editorial storytelling. Consult references/creative-and-editorial.md for RAF LERP pointer inertia, dynamic spotlight cards, windowed parallax, clip-path curtain wipes, dimensional multi-plane hero layering, and SVG grain.
- Canvas scrubbing and smooth scroll. Consult references/canvas-and-scroll-scrubbing.md for Lenis synchronization, 2D canvas frame sequences, dense GOP video scrub encoding, DPR capping, predictive caching, and sliding pill tabs.
Reference quick routing
| Motion domain | Reference module | Scope |
| Animation & delight | references/animation-and-delight.md | Micro-interactions, spring physics, & delight choreography |
| Component recipes | references/recipes.md | Pre-built component animations & transitions |
| Physics & gestures | references/physics-and-gestures.md | Apple momentum decay, rubber-banding, & gestures |
| Mobile & native | references/mobile-web-and-native.md | Mobile Safari viewport, 100dvh, & touch latency |
| Desktop & platform | references/desktop-and-platform.md | Windows Mica, macOS AppKit, & Electron frame timing |
| Google standards | references/google-standards.md | Material 3 motion tokens & Core Web Vitals INP/CLS |
| Kinetic typography | references/kinetic-typography-and-shimmer.md | Character stagger sequences & gradient shimmer |
| Canvas & scroll | references/canvas-and-scroll-scrubbing.md | Smooth scroll sync & canvas frame scrubbing |
| Creative & editorial | references/creative-and-editorial.md | RAF LERP pointer inertia, spotlight cards, & wipes |
| Mental models | references/mental-models-and-perception.md | Spatial continuity & time perception calibration |
| Vocabulary | references/vocabulary.md | Informal motion descriptions to technical tokens |
| Audit playbooks | references/audit-and-plans.md | Performance inspection & non-destructive audit plans |
Execution invariants
Avoid these core failure modes:
- Animating elements that must stay static. The frequency gate below intentionally produces zero lines of code when motion degrades utility. Deliver an instant state toggle instead.
- Animating keyboard-initiated actions. Never animate actions triggered by keyboard shortcuts (
Cmd+Space,Esc,Tab). Users know the outcome; animation forces waiting. Deliver an instant 0ms state change. - Preserve state feedback when motion is disabled. Never eliminate state registration when animations are turned off. Preserve instant tactile or visual cues such as selection blinks or high-contrast flashes; never use shake as shake is a vestibular trigger.
- Locking user input during animation. Transitions must remain interruptible and retargetable mid-flight. Never apply
pointer-events: noneto transforming elements. - Using instant transitions on high-stakes operations (The Wise paradox). Completing financial or irreversible actions in 0ms induces user distrust. Use an artificial 350ms to 450ms confirmation animation to close the perception delta.
- Using incorrect motion properties. Avoid
ease-inon interactive entrances,scale(0)on mounting elements, keyframes on rapidly triggered elements, or sluggish durations above 300ms. - Approximating motion values. Take every curve, duration, and spring parameter from the reference tables. Never invent arbitrary cubic-bezier coordinates.
- Altering source code during audits. When auditing repositories, generate structured plans under
docs/superpowers/plans/without mutating source files. - Animating bulk historical data during initial load. Never bind entrance animations to message histories or bulk collection renders. Render historical logs instantly without motion, and gate animations behind reactive flags (
isNew: boolean) for live events. - Tearing down ephemeral elements without exit choreography. Never call
element.remove()synchronously on live activity indicators. Apply an exit transition (opacity: 0,scale(0.95)) over 120ms before removing nodes from the DOM.
The build sequence
Step 1. Frequency gate
Evaluate interaction frequency before writing motion code:
| Frequency | Decision |
| 100+ times per day (keyboard shortcuts, command palette, core navigation) | Disqualify motion immediately. Use an instant 0ms state toggle. |
| Context menus and right-click actions | Open instantly in 0ms; animate selection blink and 120ms fade-out on exit only. |
| Tens of times per day (hover effects, list navigation, frequent toggles) | Limit to subtle transitions under 160ms or disqualify. |
| Occasional (modals, drawers, toasts, settings dialogs) | Eligible for standard transitions (150ms to 250ms). |
| Rare or high-stakes (onboarding, task completion, financial settlement) | Permitted for expressive feedback or artificial trust confirmation (up to 450ms). |
If the request fails this gate, state the decision directly and do not write animation code. Deliver the non-motion alternative instead.
Completion criterion. The interaction frequency is classified and confirmed eligible for motion, or disqualified in favor of an instant 0ms state toggle.
Step 2. Sanctioned purpose selection
Name exactly one sanctioned purpose before writing code:
- Feedback. Confirm that the interface registered user interaction.
- Spatial consistency. Show element origin and departure points to build an internal map of where controls live.
- State indication. Make a state transition legible.
- Preventing a jarring change. Bridge content that would otherwise jump instantaneously.
- Explanation. Demonstrate how an onboarding or marketing flow operates.
- Trust calibration. Bridge the perception delta during instantaneous high-stakes operations (such as payments or deletions).
- Delight. Permitted only at the rare or first-time tier.
If no purpose applies, halt and do not write animation code. Data tables, financial graphs, and reading content must remain stationary.
Completion criterion. Exactly one sanctioned purpose declared before writing animation code.
Step 3. Tool selection
Walk down this table in order and select the first matching tool:
| Need | Tool |
| Hover, press, color, class toggle | CSS transition |
| Mount/exit animation without JS runtime | CSS @starting-style + transition-behavior: allow-discrete |
| Shared-element & DOM state morphs | document.startViewTransition(() => flushSync(fn)) with dynamic view-transition-name cleanup |
| Scroll-tied reveal or progress | CSS Scroll-driven animations (animation-timeline: view()) |
| Predetermined motion off main thread | CSS animation |
| Programmatic interrupts with CSS performance | WAAPI (element.animate()) with composite: "add" (commitStyles + cancel on finish; cap at 8 instances) |
| Springs, layout transitions, exit animations, gestures | Motion (motion.dev) |
Never run two animation engines on the exact same property simultaneously.
Completion criterion. The cheapest capable tool is selected with compositor CSS transitions prioritized over JavaScript animation libraries.
Step 4. Hardware acceleration and property scoping
- Animate
transformandopacityexclusively; never animatewidth,height,margin,padding,top, orleft. Transforms and opacity run directly on the compositor thread without layout recalculation. Accordions usegrid-template-rows: 0fr -> 1frorinterpolate-size: allow-keywords. Allowclip-path: inset()on creative editorial curtain reveals. - Start entry transitions from
scale(0.95)with zero opacity; never usescale(0). - Set
transform-originwith fallback at the trigger. Anchor popovers, dropdowns, and tooltips usingvar(--transform-origin, center)with trigger coordinates. Modals remain exempt and stay centered viamargin: auto. - Provide tactile press feedback on all touch and pointer surfaces. Gate
:hoverstrictly by@media (hover: hover) and (pointer: fine). Apply:activetransform: scale(0.97)withtouch-action: manipulationdirectly to pressable targets. - Mount and exit orchestration: Use
@starting-stylefor mount frames. Gate exit unmounting ontransitionend(verifyinge.target === e.currentTarget),transitioncancel, and a deterministic(duration + 34ms)fallback watchdog timer. - View Transitions pseudo-elements: Set
pointer-events: noneon::view-transition-group(*). Lockheight: 100%andobject-fit: noneon::view-transition-old/newduring container aspect-ratio morphs. Scope uniqueview-transition-nametokens dynamically to active elements only and remove on completion.
Completion criterion. Motion styles animate transform and opacity exclusively with valid trigger-anchored transform origins and orchestrated exit transitions.
Step 5. Easing curves, spring physics, and ProMotion synchronization
--ease-out: cubic-bezier(0.23, 1, 0.32, 1); /* strong ease-out front-loading velocity for UI entries */
--ease-in: cubic-bezier(0.32, 0, 0.67, 0); /* fast acceleration for UI exits */
--ease-in-out: cubic-bezier(0.77, 0, 0.175, 1); /* on-screen repositioning and curtain wipes */
--ease-drawer: cubic-bezier(0.32, 0.72, 0, 1); /* iOS drawer curve */
--ease-quintic: cubic-bezier(0.22, 1, 0.36, 1); /* weighted editorial presentations, hero entries */
--ease-expo: cubic-bezier(0.16, 1, 0.3, 1); /* kinetic text stagger, high-velocity reveals */Apply these easing and personality selection rules:
- Use
ease-outfor entering elements. Exits may useease-into accelerate off-screen. Never useease-inon interactive entrances or press feedback. - Use
ease-in-outfor elements already on screen changing position or morphing. - Use
linearfor scroll timelines (animation-timeline: view()) and hold-to-confirm progress indicators. - Calibrate springs: UI uses
{ stiffness: 300, damping: 30 }(critically damped, zero bounce); active press uses{ stiffness: 400, damping: 17 }. - Mid-flight retargeting mutates the target coordinate on a single stateful solver inheriting live instantaneous velocity
v(t)and positionx(t)without resetting state. - Gesture flick velocity filtering computes release velocity across samples in a rolling 40ms ring buffer, zeros velocity if idle over 45ms, and clamps release velocity to
[-3500, 3500]px/s. - ProMotion RAF loops integrate physics via timestamp deltas clamped to
dt <= 0.032swith4ms(240Hz) internal sub-stepping to prevent tunneling or explosion after tab throttling.
Follow this duration budget reference:
| Element | Target duration |
| Button press feedback | 100 to 160ms |
| Tooltips and small popovers | 125 to 200ms |
| Dropdowns and selects | 150 to 250ms |
| Modals and sheet drawers | 200 to 400ms |
| High-stakes trust confirmation | 350 to 450ms |
| Creative editorial storytelling | 600 to 1400ms |
Keep functional UI animations under 300ms. Reserve 600 to 1400ms for creative editorial entrances.
Completion criterion. Custom cubic bezier tokens and duration budgets assigned without using ease-in on entrances.
Step 6. Accessibility, fallback feedback, and SSR hydration
@media (prefers-reduced-motion: reduce) {
*, ::before, ::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
@media (hover: hover) and (pointer: fine) {
.element:hover { transform: scale(1.04); }
}Never branch conditionally on useReducedMotion() in JSX before initial hydration. Tag swapping triggers React 19 hydration mismatches and traps server-rendered opacity: 0 in permanent invisibility. Use identical DOM trees with [data-motion-enter] attribute contracts and CSS !important overrides.
Disable spatial motion deltas without overriding structural layout transforms (translate3d(x,y,0) and translate(-50%, -50%)). Never apply transform: none !important globally under reduced motion because it breaks positioning transforms. Collapse animation durations and replace spatial entrances with opacity fades.
Preserve state feedback under reduced motion (The Pokémon principle). Replace spatial motion with an instant border flash, selection blink, or background tint pulse so users register state changes without motion sickness. Never preserve shake; shake is a vestibular trigger.
Defer mobile focus past transition completion. Delay .focus({ preventScroll: true }) until the entry transition completes (duration + 10ms). Never auto-focus text inputs on touch viewports (pointer: coarse or < 640px) to prevent virtual keyboard layout jumps. Focus the container or close button instead.
Completion criterion. Styles include @media (prefers-reduced-motion: reduce) overrides with preserved non-motion feedback and zero conditional JSX tag branching.
Boundary isolation
Confine animation rules strictly to motion timing, CSS transforms, and gesture hooks. Never alter core application state logic, backend API calls, or accessibility roles in the name of animation.
Review format
When reviewing or proposing UI micro-interaction changes, format findings using an exact table with Before, After, and Why columns:
| Before | After | Why |
transition: all 300ms | transition: transform 200ms ease-out | Specify exact properties to avoid expensive style recalculations |
transform: scale(0) | transform: scale(0.95); opacity: 0 | Physical objects never emerge from absolute zero |
ease-in on dropdown entrance | ease-out with custom curve | ease-in on entrance delays initial motion and feels sluggish |
| Missing active press feedback | transform: scale(0.97) on active press | Pressable targets must provide immediate tactile feedback |
transform-origin: center on popover | var(--transform-origin, center) | Popovers scale from trigger origin, while dialog modals remain centered |
| 400ms enter on keyboard shortcut | Instant 0ms toggle | Keyboard actions reflect deliberate user intent and require zero waiting |
| Removing state feedback on reduced motion | Instant border flash or selection blink | Retain state impact proof when motion is disabled via instant border flash or selection blink |
Quick audit checklist
Verify code against this checklist before delivering. Every item represents an automatic rejection:
| Title | Pattern description | Why it fails | Concrete fix |
| Transition all | transition: all shorthand in stylesheet | Animates expensive layout and paint properties causing jank | Name the exact properties (transform, opacity) |
| Scale-zero entrance | transform: scale(0) used as entrance mount state | Objects cannot physically emerge from a dimensionless point | Use scale(0.95) paired with zero opacity |
| Ease-in entrance | ease-in applied to interactive entrances | Slow initial acceleration feels unresponsive and sluggish | Use ease-out token (reserve ease-in strictly for exits) |
| Generic ease-out | Browser default ease-out on deliberate UI | Lacks distinct personality and natural deceleration | Use custom curve cubic-bezier(0.23, 1, 0.32, 1) |
| Keyboard animation | Animation on keyboard actions or shortcuts | User already anticipates outcome; motion forces idle waiting | Apply instant 0ms state toggle |
| Context menu animation | Sliding or expanding context menu entrance animation | Blocks instant command execution | Use instant 0ms entry, selection blink, and 120ms exit fade |
| Motionless feedback drop | Eliminating state feedback when motion is disabled | Leaves user uncertain whether action registered | Retain instant blink, border pulse, or color flash; never shake |
| Input lock during motion | Non-interruptible animation or blocked pointer events | Traps user interaction mid-flight | Retarget live presentation transforms mid-flight |
| Instant high-stakes action | 0ms transition on irreversible or high-stakes operations | Induces user distrust from lack of perceptible processing | Use 350ms to 450ms confirmation to close perception delta |
| Excessive duration | Functional UI animation duration over 300ms | Drags interactive rhythm and wastes user time | Bound duration strictly between 150ms and 250ms |
| Unguarded transform-origin | transform-origin declared without dynamic fallback | Scales popovers from arbitrary viewport locations | Declare var(--transform-origin, center) |
| Rapid element keyframes | CSS keyframes on rapidly triggered elements | Keyframe animations cannot be interrupted cleanly | Use CSS transitions or spring physics |
| Layout property animation | Animating width, height, margin, padding, top, or left | Triggers expensive layout recalculations on main thread | Animate transform and opacity (accordions use grid rows) |
| Main-thread script loops | Non-accelerated JS transform loops | Stalls main thread during concurrent script execution | Use WAAPI compositor execution or CSS transitions |
| Ungated hover motion | Hover animation triggered on touch devices | Creates sticky persistent hover states on mobile | Wrap in @media (hover: hover) and (pointer: fine) |
| Destructive reduced-motion | Global transform: none !important under reduced motion | Breaks layout positioning transforms like centering | Collapse durations to 0.01ms; preserve structural transforms |
| Unguarded unmount | Unmounting without transitionend guard or fallback | Leaves orphaned DOM nodes when transitions cancel | Filter e.target === e.currentTarget, listen to transitioncancel |
| Unclamped physics step | Unclamped delta-time in RAF physics loops | Causes spring physics explosion on background tab wake | Clamp dt <= 0.032s with 4ms internal sub-stepping |
| Duplicate view-transition | Duplicate view-transition-name tokens in DOM | Invalidates entire document view transition | Scope tokens dynamically during active transition |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

