Skip to content

feat(skills): add gsap-effects skill with typewriter pattern#158

Merged
vanceingalls merged 5 commits intomainfrom
feat/gsap-effects-typewriter
Mar 31, 2026
Merged

feat(skills): add gsap-effects skill with typewriter pattern#158
vanceingalls merged 5 commits intomainfrom
feat/gsap-effects-typewriter

Conversation

@vanceingalls
Copy link
Copy Markdown
Collaborator

@vanceingalls vanceingalls commented Mar 31, 2026

Summary

  • Adds a new gsap-effects skill directory for reusable GSAP animation patterns
  • First effect: typewriter — character-by-character text reveal using GSAP TextPlugin
  • References the new skill from compose-video

Typewriter patterns included

  • Basic typewriter — type text at a steady characters-per-second rate
  • Blinking cursor — cursor blinks while idle, holds steady during typing
  • Word rotation — type/clear/type cycle for taglines
  • Appending words — build a sentence word by word
  • Timing guide — cps ranges for different feels (dramatic, conversational, energetic)

Test plan

  • Verify skill linter passes
  • Verify compose-video reference points to the new skill correctly
Screen.Recording.2026-03-31.at.11.30.19.AM.mov

🤖 Generated with Claude Code

vanceingalls and others added 5 commits March 31, 2026 10:38
Distills typewriter text animation into a reusable reference:
basic typewriter, blinking cursor, word rotation, appending words,
and a characters-per-second timing guide. Uses GSAP TextPlugin.

Also references the new skill from compose-video.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two key rules added to the typewriter skill:
1. Cursor must blink in every idle state (after typing, after clearing,
   during hold pauses) — a solid idle cursor looks broken.
2. No whitespace between text and cursor elements in HTML — any gap
   between the last character and the caret looks wrong.

Also adds cursor-hide state for multi-line handoffs and updates word
rotation example to include cursor state management.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
TextPlugin's text:{value:""} removes characters from the front,
which looks wrong. Added a backspace helper that steps through
substrings from right to left using tl.call(). Updated word
rotation example to use it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two lessons from testing:
1. Cursor handoffs need a blink pause — going hide→solid directly
   skips the idle state. Pattern: hide→blink→pause→solid→type→blink.
2. Use margin-left on a wrapper span for spacing between static and
   dynamic text. Flex gap spaces the cursor away, trailing spaces
   collapse.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Only one cursor may be visible at a time. Multiple cursors on
screen looks broken. Every other cursor must be cursor-hide.
Promoted to rule #1 in the cursor section.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

For PiP, title cards, and slide show patterns, see [patterns.md](./patterns.md).
For data, stats, and infographics, see [data-in-motion.md](./data-in-motion.md).
For typewriter text and other GSAP animation effects, see the `gsap-effects` skill.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only caveat I'm not sure if you can reference skills like this in other skills safely

@vanceingalls vanceingalls merged commit e7283e5 into main Mar 31, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants