generate command
Generate any profile asset — banner, QR, word cloud, art, skills, or README.
Synopsis
uv run python -m scripts.cli generate ENTITY_TYPE [OPTIONS]ENTITY_TYPE is case-insensitive.
Common options
| Option | Applies to | Notes |
|---|---|---|
--config-path | Most | Path to config.yaml (default: ./config.yaml) |
--output-path | Most generators | Override the command's output path |
generate banner
Generates a light-mode SVG banner and automatically derives a dark-mode variant.
uv run python -m scripts.cli generate banner \
--config-path ./config.yaml \
--output-path .github/assets/img/banner.svg \
--title "My Name" \
--subtitle "Developer" \
--width 1200 \
--height 630| Option | Notes |
|---|---|
--title | Overrides banner_settings.title |
--subtitle | Overrides banner_settings.subtitle |
--width | Overrides banner_settings.width |
--height | Overrides banner_settings.height |
--optimize-banner/--no-optimize-banner | Toggle SVGO post-processing |
CLI options take precedence over config values. Calls generate_banner(cfg=BannerConfig(...)) twice — once for light, once for dark.
generate qr
uv run python -m scripts.cli generate qr \
--config-path ./config.yaml \
--output-path .github/assets/img/qr.png \
--qr-scale 25 \
--qr-background-path .github/assets/img/icon.svg| Option | Notes |
|---|---|
--qr-scale | Module size in pixels |
--qr-background-path | SVG to embed behind QR modules |
generate word-cloud
uv run python -m scripts.cli generate word-cloud \
--config-path ./config.yaml \
--from-topics-md \
--output-path .github/assets/img/wordcloud_typographic_by_topics.svg| Option | Notes |
|---|---|
--techs-path | Custom markdown file with technology data |
--output-path | Output SVG path |
--prompt | Optional LLM prompt for keyword curation |
--from-topics-md | Generate from .github/assets/topics.md |
--from-languages-md | Generate from .github/assets/languages.md |
generate living-art
Generates the canonical living-art timelapse surface:
.github/assets/img/living-*.gif.github/assets/img/living-art-manifest.jsonand.github/assets/img/living-art-preview.htmldocs/public/showcase/living-*.gif,docs/public/showcase/living-art-manifest.json, anddocs/public/showcase/living-art-preview.htmlwhen the docs site is present
uv run python -m scripts.cli generate living-art \
--metrics-path /tmp/metrics.json \
--history-path /tmp/history.json \
--profile wyattowalsh| Option | Notes |
|---|---|
--profile | Profile label used for timelapse labeling |
--frames | Alias for --max-frames |
--max-frames | Maximum frames per GIF |
--size | GIF render size in px |
--only | Restrict to one style: inkgarden, topo, genetic, physarum, lenia, or ferrofluid |
--metrics-path | Required metrics JSON for live data |
--history-path | Required history JSON for chronology |
--workers | Parallel render workers |
generate timelapse
Produces the same day-by-day living-art GIF contract as generate living-art. Document these commands as aliases in practice unless the implementation diverges again later.
uv run python -m scripts.cli generate timelapse \
--metrics-path /tmp/metrics.json \
--history-path /tmp/history.json \
--only physarum \
--max-frames 120| Option | Notes |
|---|---|
--profile | Owner/label for daily snapshot generation |
--metrics-path | Required metrics JSON from fetch_metrics |
--history-path | Required history JSON from fetch_history |
--max-frames | Upper bound on frames per GIF |
--size | Output frame size in px |
--only | Restrict to one style: inkgarden, topo, genetic, physarum, lenia, or ferrofluid |
--workers | Parallel render workers |
`generate all` is conditional here
The living-art step inside generate all is skipped unless both --metrics-path and --history-path are provided. The supplemental metrics step is also skipped unless a GitHub token is present in METRICS_TOKEN, GITHUB_TOKEN, or GH_TOKEN.
generate generative
Generates Lorenz-attractor / neural-network / flow-field SVG art seeded from GitHub metrics.
uv run python -m scripts.cli generate generative \
--metrics-path /tmp/metrics.jsonProduces generative-activity.svg, generative-activity-dark.svg, generative-community.svg, generative-community-dark.svg in .github/assets/img/.
generate skills
Renders skills.yaml into shields.io badge rows and injects them into the README.
uv run python -m scripts.cli generate skills \
--skills-path skills.yamlgenerate readme-sections
Assembles all dynamic README sections and writes them to README.md via marker blocks.
uv run python -m scripts.cli generate readme-sections \
--config-path ./config.yamlThis command also refreshes the featured-project card contract:
.github/assets/img/readme/featured-card-*.svg.github/assets/img/readme/featured-projects.manifest.jsondocs/public/showcase/featured-projects/featured-card-*.svgwhen the docs app existsdocs/public/showcase/featured-projects.manifest.jsonwhen the docs app exists
It also renders the additive Metrics section from whichever validated assets are present:
metrics.svgmetrics.additional.svgmetrics-habits.svgmetrics-activity.svgmetrics-music.svgmetrics-posts.svg
Optional supplemental cards are omitted automatically when their assets are missing or invalid.
generate supplemental-metrics
Generates the repo-owned supplemental metrics cards that replace the upstream-brittle habits, activity, music, and tweets panels.
uv run python -m scripts.cli generate supplemental-metrics \
--owner wyattowalsh \
--repo wyattowalsh \
--output-dir .github/assets/img \
--manifest-path .github/assets/img/metrics-supplemental.manifest.json \
--x-handle wyattowalshProduces:
.github/assets/img/metrics-habits.svg.github/assets/img/metrics-activity.svg.github/assets/img/metrics-music.svgwhen Spotify secrets are complete and valid.github/assets/img/metrics-posts.svgwhen the full X OAuth 1.0a secret quartet is set and valid.github/assets/img/metrics-supplemental.manifest.json
Required runtime secrets:
- GitHub token in
METRICS_TOKEN,GITHUB_TOKEN, orGH_TOKEN
Optional runtime secrets:
SPOTIFY_CLIENT_ID,SPOTIFY_CLIENT_SECRET,SPOTIFY_REFRESH_TOKENX_API_KEY,X_API_KEY_SECRET,X_ACCESS_TOKEN,X_ACCESS_TOKEN_SECRET
Use uv run readme auth spotify-refresh-token once on a local machine to mint a fresh SPOTIFY_REFRESH_TOKEN for CI.