Generate a verifiable GitHub Wrapped year-in-review as a single-file HTML (raw gh API JSON saved, Python-built dataset embedded), with a Bilibili-style narrative, smooth transitions, and mobile-friendly paged mode. Requires gh CLI to be authenticated.
This skill generates a GitHub “Year in Review / Wrapped” as a single self-contained HTML file with a Bilibili-style narrative (scroll/page scenes, cinematic transitions, share card). The non-negotiable requirement is verifiability: every number must be traceable to saved gh api raw responses committed alongside the report.
— and explain the limitation in-page.raw/ folder containing the original JSON (and the GraphQL queries used)..html: no runtime gh calls; embed a dataset into the HTML.YEAR (default: current year)USER (default: gh api user --jq .login)Asia/Shanghai for CN users)data/github-wrapped-$YEAR/
raw/ # verifiable gh API responses (JSON)
processed/ # dataset.json derived from raw/
frontend/standalone/
github-wrapped-$YEAR.html
gh api (always paginate)Pagination rules:
--paginate --slurp--paginateMinimum raw set (recommended filenames):
raw/user.json (profile, createdAt)raw/contributions.json (GraphQL contributionsCollection(from,to))raw/user_repos.json (REST repos list; stars/forks are snapshots)raw/starred_repos_pages.json (GraphQL starred repos ordered by STARRED_AT, includes topics/language)raw/prs_${YEAR}_pages.json (GraphQL Search: merged PRs in the year; additions/deletions)raw/contributed_repos_pages.json (GraphQL repositoriesContributedTo)raw/events_90d.json (optional; REST events; 90-day limit; only for best-effort easter eggs)Bundled templates (open only what you need):
scripts/collect_raw.shscripts/queries/*.graphqlreferences/data_sources.mdreferences/single_file_engineering.mdWrite a builder that reads only raw/*.json and outputs processed/dataset.json:
meta.dataProvenance.notes[].Template: scripts/build_dataset_template.py
Schema guidance: references/dataset_schema.md
For larger analysis recipes (stars-by-month scatter points, timezone-safe hour buckets, holiday detection, category heuristics), see cookbook/python/.
dataset.json into the HTML (no runtime fetch)Your HTML must contain a stable anchor:
<script id="dataset" type="application/json">{}</script>
Embed rules:
< as \u003c before writing into the HTML.Template: scripts/embed_dataset_into_html_template.py
Single-file cinematic reports get long fast. To stay correct and maintainable, ship in iterations:
dataset.json schema and render placeholders (show — for missing fields).data-mhide="paged" + bottom-sheet that moves DOM nodes).Keep this file (SKILL.md) high-level. Put long code samples and analysis recipes into cookbook/ and implementation notes into references/ to avoid prompt bloat.
paged (wheel/keys, plus touch swipe on mobile) and free (normal scroll).data-mhide="paged" and open them in a bottom-sheet that moves existing DOM nodes (avoid duplicate IDs).See references/single_file_engineering.md for deeper patterns.
The page is one file, but it’s effectively two products: desktop cinematic and mobile slide deck. Treat responsive work as surgically isolated changes to avoid regressions.
--maxw as a clamp()), and reduce --gutter slightly on short viewports (e.g. 768px height) instead of shrinking typography.aspect-ratio and draw in CSS pixels.@media (max-width: 620px) and (pointer: coarse) (width-only rules can accidentally affect small desktop windows).paged mode, avoid inner scrolling in scenes; hide heavy blocks with data-mhide="paged" and expose them via a bottom-sheet modal that moves the existing DOM node (so IDs and event listeners remain valid).For implementation patterns (bottom sheet node-moving, draggable HUD controls, canvas DPR sizing, and stacking-context pitfalls), see references/responsive_ui_patterns.md.
Design as a storyboard: each scene answers one question, then transitions.
Suggested pacing:
Interaction rules:
transform/opacity.stargazers_count/forks_count are current snapshots, not year-increment.See references/debug_checklist.md for the full checklist. Common root causes:
const, missing ))scripts/: reusable collection/build/embed templates (execute without loading into context)cookbook/: analysis recipes and larger Python snippets (open only what you need)references/: schema + storyboard + debugging notes (open only the specific file you need)Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer