This project has pre-generated docs. At the start of every session, read docs/INDEX.md first — it points to the relevant detail docs so you don't need to re-scan the whole codebase.
After completing any feature or bugfix:
- Update only the sections of
docs/that changed — do not rewrite entire files. - Update
docs/changelog.mdwith a dated entry describing what changed. - If an architectural decision was made, add a new ADR to
docs/decisions.md. - Do not update docs after every small edit — only at natural checkpoints (before commit, before PR, or when explicitly asked).
Use $ui-animations (/Users/TT/.codex/skills/ui-animations/SKILL.md) for all animation decisions in this app.
- Animate only when motion clarifies state, preserves spatial continuity, prevents jarring changes, or gives direct feedback.
- Prefer CSS transitions over keyframes for interactive UI so motion can be interrupted cleanly.
- Animate
transformandopacityonly; avoid layout-affecting properties such as width, height, margin, and padding. - Use exact transition properties, not
transition: all. - Keep everyday UI motion under 300ms; use 100-160ms for press feedback and 150-250ms for small popovers/dropdowns.
- Use the UI animation curves: spring
cubic-bezier(0.34, 1.56, 0.64, 1), smoothcubic-bezier(0.16, 1, 0.3, 1), and fastcubic-bezier(0.4, 0, 0.2, 1). - Add subtle
:active { transform: scale(0.97); }feedback to pressable controls unless it would fight a larger interaction. - Gate hover motion with
@media (hover: hover) and (pointer: fine). - Respect
prefers-reduced-motionby removing movement and disabling repeated motion.