Repo Readme Assets — README + animated SVG header/footer
Use this skill to create or update a repository README and its visual header/footer
with local animated SVG assets. Zero external services: no capsule-render, no shields
generators, no URL banners. Animation is SMIL only (<animate>, <animateTransform>)
so it works inside <img> on GitHub without scripts or network requests.
When to use
- A repository needs a README with a header/footer banner (local animated SVG).
- Major change happened and the README must reflect the current project state.
- User asks for "readme header", "animated svg", "waving svg", "svg banner",
"readme assets", "readme visual", "smil animation".
Do NOT use
- README is already current and the user did not request changes — do not "improve".
- A single tiny fix (e.g. one badge) — edit directly, no skill needed.
- For legal/community files (LICENSE, CONTRIBUTING, SECURITY) — use
repo-community-files.
- For description/topics/Pages/community-health — use
repo-metadata-health.
- For the social preview PNG — use
repo-social-preview.
Files
SKILL.md — this file
scripts/generate_assets.py — deterministic generation of assets/header.svg + assets/footer.svg
scripts/extract_context.py — auto-detect name/desc/stack/colors/username from git remote
scripts/validate_svg.py — validate SVG against skill rules (SMIL, mask, morphing)
references/svg-animation.md — full SVG animation spec + header/footer templates
references/svg-presets.md — the four presets
references/color-tokens.md — detected values (USERNAME/PROJECT_NAME/COLD/WARM)
references/canonical-patterns.md — canonical references and gaps
Scripts
| Script |
Purpose |
Call |
generate_assets.py |
Deterministic assets/header.svg + assets/footer.svg (presets: --preset default|minimal|dark-first|monochrome) |
python3 scripts/generate_assets.py --name X --desc Y --user Z --cold #HEX --warm #HEX [--preset default] |
extract_context.py |
Auto-detect generation context from git remote |
python3 scripts/extract_context.py [--path DIR] [--gh-repo owner/repo] [--text] |
validate_svg.py |
Validate SVG rules (SMIL, mask, d-path morphing) |
python3 scripts/validate_svg.py assets/ |
Reports are JSON; exit codes 0/1 (CI-friendly).
README — required elements
- Header: project name, one-line description, live badge links (3–6, one style).
- Status block: current check numbers (typecheck/contract/integration).
- Quick start: install, infra, run.
- Repo structure: full tree (include new dirs/services).
- Stack/events/checks sections — kept in sync with real code.
- GitHub Pages link (if enabled):
https://<user>.github.io/<repo>/ + homepage in About.
- Language switcher:
**🌐 Versions:** [English](README.md) · [Русский](README.ru.md) · [Website](…).
- Hashtags/keywords for search (description + topics).
Rules:
README.md is always English (GitHub international standard).
README.<lang>.md is a localized mirror: propagate English changes 1:1 (headings, numbers, statuses).
- Diverged localizations are a typical anti-pattern — run a programmatic heading-diff before release.
- Avoid "AI-slop" wording: "seamless", "unleash", "empower", emoji overload.
- Prefer relative links to repo files (absolute links break in clones).
- GitHub auto-generates TOC — no manual table of contents needed.
Animated SVG header/footer
By default each repo gets assets/header.svg (start of README) and assets/footer.svg
(end of README), required in both language versions.
Principle: zero external services. Animation is SMIL only.
Key techniques: "background wave" effect (a black wave in <mask> cuts color → page
background shows through), d-path morphing across 4 frames (crest Q+T, identical
command sequence in every frame), 30% wave desync, a highlight pass once ~16s, a
twinkling speck in the footer.
- Full spec + templates →
references/svg-animation.md
- Detected values →
references/color-tokens.md
- Presets →
references/svg-presets.md
Preset choice: default (animated gradient) by default; minimal (static gradient, no
waves) for docs/stable tools; dark-first (deep dark backdrop, GitHub dark theme);
monochrome (b/w, no SMIL) for books/print/specs. Ask the user, else take default.
How to generate (recommended path)
By script (deterministic, then validate):
python3 scripts/generate_assets.py \
--name "Project Name" --desc "Short description" --user "username" \
--cold "#0ABAB5" --warm "#F64A8A"
python3 scripts/validate_svg.py assets/ # expect: all passed
Manually (when the script is unavailable): read references/svg-animation.md, substitute
COLD, WARM, PROJECT_NAME, PROJECT_DESC, FONTCOLOR, USERNAME into the templates,
create assets/, add the links (see "Insert into README.md" in the reference).
Generation safety
- Do not generate without confirming
USERNAME when it is not obvious.
- Do not overwrite existing
.svg without an explicit request.
- Do not touch README content between header and footer.
- Do not add header/footer if they already exist (only on request).
- SVG: no
<script>, no base64, SMIL only; mask with a white <rect> covering the canvas.
1---2name: repo-readme-assets3description: README.md (EN) + localized mirror + local animated SVG header/footer for a repository. Generates assets/header.svg and assets/footer.svg with SMIL animation (4 presets: default/minimal/dark-first/monochrome), zero external services. Scripts: generate_assets.py, validate_svg.py, extract_context.py. Triggers: 'readme header', 'animated svg', 'waving svg', 'svg banner', 'readme assets', 'readme visual', 'smil animation', 'repo header', 'readme footer', 'readme generator', 'update readme', 'readme badges'.4license: MIT5---67# Repo Readme Assets — README + animated SVG header/footer89Use this skill to **create or update a repository README and its visual header/footer**10with local animated SVG assets. Zero external services: no capsule-render, no shields11generators, no URL banners. Animation is SMIL only (`<animate>`, `<animateTransform>`)12so it works inside `<img>` on GitHub without scripts or network requests.1314## When to use1516- A repository needs a README with a header/footer banner (local animated SVG).17- Major change happened and the README must reflect the current project state.18- User asks for "readme header", "animated svg", "waving svg", "svg banner",19 "readme assets", "readme visual", "smil animation".2021## Do NOT use2223- README is already current and the user did not request changes — do not "improve".24- A single tiny fix (e.g. one badge) — edit directly, no skill needed.25- For legal/community files (LICENSE, CONTRIBUTING, SECURITY) — use `repo-community-files`.26- For description/topics/Pages/community-health — use `repo-metadata-health`.27- For the social preview PNG — use `repo-social-preview`.2829## Files3031- `SKILL.md` — this file32- `scripts/generate_assets.py` — deterministic generation of `assets/header.svg` + `assets/footer.svg`33- `scripts/extract_context.py` — auto-detect name/desc/stack/colors/username from git remote34- `scripts/validate_svg.py` — validate SVG against skill rules (SMIL, mask, morphing)35- `references/svg-animation.md` — full SVG animation spec + header/footer templates36- `references/svg-presets.md` — the four presets37- `references/color-tokens.md` — detected values (USERNAME/PROJECT_NAME/COLD/WARM)38- `references/canonical-patterns.md` — canonical references and gaps3940## Scripts4142| Script | Purpose | Call |43|---|---|---|44| `generate_assets.py` | Deterministic `assets/header.svg` + `assets/footer.svg` (presets: `--preset default\|minimal\|dark-first\|monochrome`) | `python3 scripts/generate_assets.py --name X --desc Y --user Z --cold #HEX --warm #HEX [--preset default]` |45| `extract_context.py` | Auto-detect generation context from git remote | `python3 scripts/extract_context.py [--path DIR] [--gh-repo owner/repo] [--text]` |46| `validate_svg.py` | Validate SVG rules (SMIL, mask, d-path morphing) | `python3 scripts/validate_svg.py assets/` |4748Reports are JSON; exit codes 0/1 (CI-friendly).4950## README — required elements51521. **Header**: project name, one-line description, live badge links (3–6, one style).532. **Status block**: current check numbers (typecheck/contract/integration).543. **Quick start**: install, infra, run.554. **Repo structure**: full tree (include new dirs/services).565. **Stack/events/checks sections** — kept in sync with real code.576. **GitHub Pages link** (if enabled): `https://<user>.github.io/<repo>/` + homepage in About.587. **Language switcher**: `**🌐 Versions:** [English](README.md) · [Русский](README.ru.md) · [Website](…)`.598. **Hashtags/keywords** for search (description + topics).6061Rules:62- `README.md` is **always English** (GitHub international standard).63- `README.<lang>.md` is a localized **mirror**: propagate English changes 1:1 (headings, numbers, statuses).64- Diverged localizations are a typical anti-pattern — run a programmatic heading-diff before release.65- Avoid "AI-slop" wording: "seamless", "unleash", "empower", emoji overload.66- Prefer **relative** links to repo files (absolute links break in clones).67- GitHub auto-generates TOC — no manual table of contents needed.6869## Animated SVG header/footer7071By default each repo gets `assets/header.svg` (start of README) and `assets/footer.svg`72(end of README), required in both language versions.7374**Principle: zero external services.** Animation is SMIL only.7576Key techniques: "background wave" effect (a black wave in `<mask>` cuts color → page77background shows through), `d`-path morphing across 4 frames (crest `Q`+`T`, identical78command sequence in every frame), 30% wave desync, a highlight pass once ~16s, a79twinkling speck in the footer.8081- Full spec + templates → `references/svg-animation.md`82- Detected values → `references/color-tokens.md`83- Presets → `references/svg-presets.md`8485Preset choice: `default` (animated gradient) by default; `minimal` (static gradient, no86waves) for docs/stable tools; `dark-first` (deep dark backdrop, GitHub dark theme);87`monochrome` (b/w, no SMIL) for books/print/specs. Ask the user, else take `default`.8889### How to generate (recommended path)9091By script (deterministic, then validate):9293```bash94python3 scripts/generate_assets.py \95 --name "Project Name" --desc "Short description" --user "username" \96 --cold "#0ABAB5" --warm "#F64A8A"97python3 scripts/validate_svg.py assets/ # expect: all passed98```99100Manually (when the script is unavailable): read `references/svg-animation.md`, substitute101`COLD`, `WARM`, `PROJECT_NAME`, `PROJECT_DESC`, `FONTCOLOR`, `USERNAME` into the templates,102create `assets/`, add the links (see "Insert into README.md" in the reference).103104### Generation safety105106- Do not generate without confirming `USERNAME` when it is not obvious.107- Do not overwrite existing `.svg` without an explicit request.108- Do not touch README content between header and footer.109- Do not add header/footer if they already exist (only on request).110- SVG: no `<script>`, no base64, SMIL only; mask with a white `<rect>` covering the canvas.