ScriptsAnimated Art
Animated Art
CSS-animated SVGs seeded from paginated commit history.
Modules
scripts/animated_art.py— top-level orchestratorscripts/art/animate.py— animation primitives and CSS keyframe generationscripts/art/shared.py— shared seed utilities
How it works
fetch_historypaginates the GitHub commit history →history.json(time-series)- The commit cadence is used as the entropy source for
seed_hash() - CSS keyframe animations are generated inline — no JavaScript required
- Light and dark variants are written separately
CLI
# Fetch history first
uv run python -m scripts.fetch_history \
--owner wyattowalsh \
--repo wyattowalsh \
--output /tmp/history.json
# Generate animated SVGs
uv run python -m scripts.cli generate animated \
--history-path /tmp/history.jsonOutput files
| File | Description |
|---|---|
.github/assets/img/animated-activity.gif | GitHub-safe animated activity art preview (light) |
.github/assets/img/animated-activity-dark.gif | GitHub-safe animated activity art preview (dark) |
.github/assets/img/animated-activity.svg | Animated activity art (light) |
.github/assets/img/animated-activity-dark.svg | Animated activity art (dark) |
.github/assets/img/animated-community.gif | GitHub-safe animated community art preview (light) |
.github/assets/img/animated-community-dark.gif | GitHub-safe animated community art preview (dark) |
.github/assets/img/animated-community.svg | Animated community art (light) |
.github/assets/img/animated-community-dark.svg | Animated community art (dark) |
Animation approach
The source assets use CSS @keyframes and SMIL embedded directly in the SVG. For GitHub README compatibility, the CLI also renders timeline-matched GIF previews from snapshot frames generated by the same reveal logic.
Dev profiles
scripts/art/_dev_profiles.py contains a PROFILES dict of mock metrics used for local testing without a live GitHub token:
from scripts.art._dev_profiles import PROFILES
mock_metrics = PROFILES["high_activity"]Use dev profiles to test art generation locally without a GITHUB_TOKEN. Available profiles include various activity levels and repo compositions.