wyattowalsh docs

GitHub Actions Workflows

The Unified Profile Updater workflow runs every generator job on a daily schedule.

Workflow file

.github/workflows/profile-updater.yml

Triggers: push to main/master/dev, daily at 01:00 UTC, workflow_dispatch.

Job graph

update-starred-lists


generate-assets ──────────────────────────────┐
        │                                     │
update-readme-wakatime                        │
        │                                     │
update-readme-blog                            │
        │                                     │
        ▼                                     │
update-skills (needs all three above)         │

generate-profile-metrics (independent)        │
generate-event-art (independent) ─────────────┘

Job details

update-starred-lists

Uses the starred CLI to rebuild .github/assets/topics.md and .github/assets/languages.md from your GitHub stars.

uv run starred --username wyattowalsh --sort \
  --filename .github/assets/languages.md
uv run starred --username wyattowalsh --sort --topic --topic_limit 500 \
  --filename .github/assets/topics.md

Commits both files with chore(data): update awesome-stars lists.

generate-assets

Depends on update-starred-lists. Generates:

  • QR code — generate qr
  • Word cloud by topic — generate word-cloud --from-topics-mdwordcloud_metaheuristic-anim_by_topics.svg
  • Word cloud by language — generate word-cloud --from-languages-mdwordcloud_metaheuristic-anim_by_languages.svg
  • SVG banner — generate banner
  • Skills badges — generate skills

Commits to .github/assets/img/.

update-readme-wakatime

Uses anmol098/waka-readme-stats to inject WakaTime coding stats. Requires WAKATIME_API_KEY secret.

update-readme-blog

Uses gautamkrishnar/blog-post-workflow to inject latest posts from https://w4w.dev/feed.xml.

generate-profile-metrics

Uses lowlighter/metrics to generate:

  • metrics.svg — personal metrics (lines, isocalendar, languages, habits, notable, topics)
  • metrics.additional.svg — music (Spotify), activity, stargazers, featured repos

Requires METRICS_TOKEN secret (GitHub PAT with read:user, public_repo). Falls back gracefully to a placeholder SVG if the token is missing or auth fails.

generate-event-art

Fetches live metrics + history via scripts/fetch_metrics.py and scripts/fetch_history.py, then generates generative and animated SVGs. The animated CLI entry point is scripts/animated_art.py, which is a compatibility shim over generators in scripts/art/*.

Requires GITHUB_TOKEN (automatically provided by Actions).

update-skills

Depends on generate-assets, update-readme-wakatime, update-readme-blog. Runs:

  • generate readme-sections — assembles all dynamic README sections
  • generate skills — re-renders skills badges

Commits README.md + .github/assets/img/readme/*.svg.

Required secrets

SecretUsed byNotes
GITHUB_TOKENAll jobsAuto-provided by Actions
METRICS_TOKENgenerate-profile-metricsPAT with read:user, public_repo
WAKATIME_API_KEYupdate-readme-wakatimeWakaTime API key
SPOTIFY_CLIENT_IDgenerate-profile-metricsSpotify OAuth
SPOTIFY_CLIENT_SECRETgenerate-profile-metricsSpotify OAuth
SPOTIFY_REFRESH_TOKENgenerate-profile-metricsSpotify OAuth