Skip to main content

code-islands

This skill should be used when someone asks for a video, animation, timelapse, year in review or "wrapped" of their commits, contributions or agentic coding history, across one or many repos. Renders each repo as a separate floating island that grows with their work, with a stats HUD and AI release timeline, plus a share cut that blurs private repo names.

Source facts

Repository
dreamiurg/code-islands
Last source activity
November 6, 2026 at 23:21
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
5 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
code-islands
description
This skill should be used when someone asks for a video, animation, timelapse, year in review or "wrapped" of their commits, contributions or agentic coding history, across one or many repos. Renders each repo as a separate floating island that grows with their work, with a stats HUD and AI release timeline, plus a share cut that blurs private repo names.
# Code Islands Turn one person's commits across all their repos into a 1080p video. Works on macOS and Linux. Scripts live in `${CLAUDE_PLUGIN_ROOT}/scripts`. Run every command from the workspace folder, written below as `cd <workspace> && ...`, because each script reads `config.json` and `build/` from the current directory. ## 1. Set up Run `sh "${CLAUDE_PLUGIN_ROOT}/scripts/doctor.sh"` and fix what it reports. Run `gh auth setup-git` so private repos can be cloned. Ask for anything that cannot be worked out: - **Workspace folder.** Default `~/code-islands`. It holds full clones, so it can take gigabytes. - **Start date.** Suggest a round date. Offer the first AI co-authored commit once `collect.py` has reported it. - **Timezone.** Sets the hour-of-day chart and day boundaries. - **Length in seconds.** Default 90. Pacing follows from the length. - **Sound.** An audio file, or silent. See `references/music.md`. Write `config.json` in the workspace, following `examples/config.json`. Only `since` and `authors` are required. `authors` are case-insensitive regexes matched against `name|email` of each commit. Start from `gh api user` (login, name) and `git config user.email`, and wrap names in `\b` so `dan` does not match `daniel`. Ask for old names and emails, since they split history. Save a square avatar of at least 128px as `avatar.png`: ```sh cd <workspace> && curl -sL "https://github.com/<login>.png?size=200" -o avatar.png ``` ## 2. Choose repos List repos without cloning anything: ```sh cd <workspace> && python3 "${CLAUDE_PLUGIN_ROOT}/scripts/discover.py" ``` Show the list. Ask which employer, client or other sensitive repos to leave out, and add those to `exclude_repos` as `owner/name`. Add repos that are not on GitHub to `local_repos`. Those always count as private. ## 3. Gather ```sh cd <workspace> && python3 "${CLAUDE_PLUGIN_ROOT}/scripts/discover.py" clone && python3 "${CLAUDE_PLUGIN_ROOT}/scripts/prs.py" && python3 "${CLAUDE_PLUGIN_ROOT}/scripts/collect.py" ``` `prs.py` waits between requests because GitHub search is rate limited, so run long ranges in the background and let the chain finish before step 5. Show the totals and top repos. Look for missed name variants, and for wrong people caught by a loose regex. Rerun `collect.py` after any `config.json` change. After moving `since` earlier, rerun all three commands. ## 4. AI releases `${CLAUDE_PLUGIN_ROOT}/data/ai_releases.json` drives the left panel and the heatmap ticks. Search the web for releases newer than its last entry, then write the full list to `ai_releases.json` in the workspace, which takes priority. Entries are `{"date", "name", "vendor"}`. `anthropic` draws orange, `openai` blue, and any other vendor purple. Check dates against the vendors' own announcements. ## 5. Preview Check a real frame before the full render. Use a time late in the video: ```sh cd <workspace> && python3 "${CLAUDE_PLUGIN_ROOT}/scripts/islands.py" test 60 && python3 "${CLAUDE_PLUGIN_ROOT}/scripts/hud.py" test 60 build/isl_60.png ``` This writes `build/hud_60.png`. View it. `R0` and `EXP` at the top of `islands.py` set island size. `SAFE` is the area the HUD leaves free. ## 6. Render Run as one background job, because both cuts share `build/islands.mp4`: ```sh cd <workspace> && sh "${CLAUDE_PLUGIN_ROOT}/scripts/render.sh" && VARIANT=share sh "${CLAUDE_PLUGIN_ROOT}/scripts/render.sh" && sh "${CLAUDE_PLUGIN_ROOT}/scripts/scan.sh" ``` Files land in `out/` at 1080p and 720p. `DUR=10 OUT=/tmp/try` in front of `render.sh` makes a short test. `scan.sh` needs `tesseract` and both cuts. It reads one frame per second with OCR, using the full cut as its control. It fails if a private name shows in the share cut, or if it cannot read names at all. Skip the share cut and the scan if the video stays private. ## Before anyone shares a cut Tell the user plainly: - The share cut blurs a random fake name, so de-blurring reveals nothing. Public repos keep their real names. - Totals, activity patterns and the size of each island stay visible. Someone who knows the user may guess a large project. - `scan.sh` samples frames and skips names under four characters, so it is a check and not a proof. View the video too. - Nothing in `repos/` or `build/` should be published. Those folders hold private history. ## Additional resources - `references/metrics.md`: what each number counts. Consult when a total looks wrong or the user asks. - `references/music.md`: where to get a track, plus a prompt for AI music tools. - `examples/config.json`: every config option. - `examples/music-elevenlabs.py`: generating a track through one API.
View on GitHub