Gumroad Prod Console
antiwork/gumroad
Execute read-only Ruby/Rails commands against Gumroad's production database for debugging and investigation.
Audit asdf-installed Ruby versions against project pins and remove unreferenced ones.
$ npx skills add joshukraine/dotfiles --skill ruby-gc -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install joshukraine/dotfiles ruby-gc --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/joshukraine/dotfiles.git skills-src && mkdir -p .claude/skills && cp -r skills-src/claude/.claude/skills/ruby-gc .claude/skills/ruby-gc && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ruby-gc" agent skill from https://github.com/joshukraine/dotfiles/tree/master/claude/.claude/skills/ruby-gc into .claude/skills/ruby-gc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ruby-gc", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/joshukraine/dotfiles/tree/master/claude/.claude/skills/ruby-gcType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add joshukraine/dotfiles --skill ruby-gc -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install joshukraine/dotfiles ruby-gc --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joshukraine/dotfiles.git skills-src && mkdir -p .agents/skills && cp -r skills-src/claude/.claude/skills/ruby-gc .agents/skills/ruby-gc && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ruby-gc" agent skill from https://github.com/joshukraine/dotfiles/tree/master/claude/.claude/skills/ruby-gc into .agents/skills/ruby-gc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ruby-gc", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add joshukraine/dotfiles --skill ruby-gc -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install joshukraine/dotfiles ruby-gc --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joshukraine/dotfiles.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/claude/.claude/skills/ruby-gc .cursor/skills/ruby-gc && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ruby-gc" agent skill from https://github.com/joshukraine/dotfiles/tree/master/claude/.claude/skills/ruby-gc into .cursor/skills/ruby-gc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ruby-gc", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/joshukraine/dotfiles.git --path claude/.claude/skills/ruby-gc--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add joshukraine/dotfiles --skill ruby-gc -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install joshukraine/dotfiles ruby-gc --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joshukraine/dotfiles.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/claude/.claude/skills/ruby-gc .gemini/skills/ruby-gc && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ruby-gc" agent skill from https://github.com/joshukraine/dotfiles/tree/master/claude/.claude/skills/ruby-gc into .gemini/skills/ruby-gc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ruby-gc", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install joshukraine/dotfiles ruby-gcInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add joshukraine/dotfiles --skill ruby-gc -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/joshukraine/dotfiles.git skills-src && mkdir -p .github/skills && cp -r skills-src/claude/.claude/skills/ruby-gc .github/skills/ruby-gc && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ruby-gc" agent skill from https://github.com/joshukraine/dotfiles/tree/master/claude/.claude/skills/ruby-gc into .github/skills/ruby-gc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ruby-gc", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add joshukraine/dotfiles --skill ruby-gc -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install joshukraine/dotfiles ruby-gc --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joshukraine/dotfiles.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/claude/.claude/skills/ruby-gc .opencode/skills/ruby-gc && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ruby-gc" agent skill from https://github.com/joshukraine/dotfiles/tree/master/claude/.claude/skills/ruby-gc into .opencode/skills/ruby-gc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ruby-gc", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ruby-gcAudit asdf-installed Ruby versions against project pins and remove unreferenced ones.
Ruby Gc is an agent skill from joshukraine/dotfiles. Audit asdf-installed Ruby versions against project pins and remove unreferenced ones. Dry-run by default.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with Ruby. The repository describes itself as: :roundpushpin: My dotfiles for macOS using Neovim, Zsh, and Ghostty + Tmux. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b59ad5b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
rubyasdfpythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ruby Gc loads about 2.2k tokens when it runs. Until then it costs about 28 tokens; SKILL.md has 1,147 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from joshukraine/dotfiles at commit b59ad5b, republished under its MIT licence (© joshukraine). 1,147 words, ~2,241 tokens.
.claude/skills/ruby-gc/SKILL.md (or your agent's skills folder).Garbage-collect asdf-installed Ruby versions that nothing on the system references.
Dry-run by default. Without --apply, this is a read-only report and you must not uninstall anything.
$ARGUMENTS — pass --apply to enable the uninstall step. Absent that flag, stop after the report.--apply enables deletion; it does not authorize it. You still show the full table and get an explicit yes first.These are non-negotiable. The cost of a wrong delete is a broken app plus a slow rebuild; the cost of a wrong keep is a few hundred MB.
~/.tool-versions.asdf list ruby
du -sh ~/.asdf/installs/ruby/*cat ~/.tool-versionsThis is a symlink into ~/dotfiles/asdf/.tool-versions (the real dotfiles). Note that ~/code/my_repos/dotfiles/ and ~/dotfiles.bak/ are stale clones carrying outdated pins — ignore them as authorities on the global version, though their pins still count under rule 2 until the user cleans them up.
find ~ -type f \( -name .tool-versions -o -name .ruby-version \) \
-not -path '*/node_modules/*' -not -path '*/.git/*' \
-not -path '*/Library/*' -not -path '*/.Trash/*' \
-not -path '*/vendor/*' -not -path '*/.asdf/*' \
-not -path '*/.local/share/nvim/*' -not -path '*/.local/share/zap/*' \
-not -path '*/.local/share/neobean/*' \
-exec grep -H . {} + 2>/dev/nullDo not add -maxdepth. Projects nest deeper than seems reasonable — code/active/eto/ComixDistroBase/comix_distro/ is five levels below ~/code, and a -maxdepth 4 scan silently misses it while still returning plenty of plausible-looking output.
Scan all of ~, not just ~/code. Real projects live in ~/Sites/ too — that's where the legacy ETO sites pinning Ruby 2.7.4 are.
The plugin-directory exclusions are deliberate: nvim and zsh plugins vendor their own .tool-versions (bullets.vim pins ruby 3.1.0, neotest-rspec pins 3.1.1, a zap plugin pins 2.5.3). Those are library artifacts, not projects, and shouldn't hold an install hostage.
~/dotfiles/asdf/.asdfrc sets legacy_version_file = yes, and asdf-ruby's bin/list-legacy-filenames echoes .ruby-version Gemfile. So a Gemfile is a version pin on this system, exactly like a .ruby-version. Verify both facts each run rather than trusting this note — if legacy_version_file is ever turned off, Gemfiles stop counting.
find ~ -type f -name Gemfile \
-not -path '*/node_modules/*' -not -path '*/.git/*' \
-not -path '*/Library/*' -not -path '*/.Trash/*' \
-not -path '*/vendor/*' -not -path '*/.asdf/*' \
-not -path '*/.local/share/*' \
-exec grep -HE '^\s*ruby\s' {} + 2>/dev/nullRule 4 is only enforceable against a known-good baseline. Measured 2026-07-17, immediately after a cleanup run:
| Signal | Baseline | Treat as a broken scan if... |
|---|---|---|
.ruby-version + .tool-versions files found | 58 | fewer than ~40 |
.tool-versions carrying a ruby line | 21 | fewer than ~14 |
Gemfiles with any ruby line | 113 | fewer than ~80 |
| Gemfiles with an exact ruby pin | 10 | zero |
Counts drift as projects come and go, so treat them as an order-of-magnitude check, not an assertion — a 20% wobble is normal, a 60% drop is a bug. The landmark checks below are the real test, because they fail loudly rather than plausibly:
~/Sites/ — 13 ruby pins live there, including the legacy ETO sites on 2.7.4. Zero hits under ~/Sites means the scan never left ~/code.~/code/active/eto/ComixDistroBase/comix_distro/. Missing it means a depth limit crept in.~ (~/code/active/eto/ETOWebReboot/legacy/*/.tool-versions). Any -maxdepth silently truncates this.Note the Gemfile ratio: 113 files carry a ruby line but only 10 are real pins. That gap is the ~100 prag-studio Gemfiles pinning ruby '>= 3.0.0'. If exact pins ever approach the total, the parse is wrongly counting range specifiers — that inflates the keep list and makes the skill useless rather than dangerous. Both failure directions are worth catching.
Five formats, all present on this system:
| File | Example contents | Extract |
|---|---|---|
.ruby-version | ruby-4.0.6 | strip the ruby- prefix → 4.0.6 |
.ruby-version | 3.1.2 | use as-is |
.tool-versions | ruby 3.1.2 | the ruby line only — the file also carries nodejs, python, lua, neovim |
Gemfile | ruby "3.1.2" | → 3.1.2 — a real pin |
Gemfile | ruby '>= 3.0.0' or ruby file: ".ruby-version" | not a pin — ignore |
A .tool-versions line may list multiple fallback versions (python 3.12.4 2.7.18); if a ruby line ever does, every version listed counts as pinned.
Only an exact Gemfile version pins anything. parse-legacy-file's sed pipeline ends with /^[^0-9]/d, which drops any result not starting with a digit — so >= 3.0.0 yields nothing, and file: ".ruby-version" defers to the .ruby-version already scanned in step 3. This matters: ~100 prag-studio Gemfiles say ruby '>= 3.0.0', and counting them would wrongly pin versions nothing uses. Mirror the plugin's real behavior; don't invent stricter or looser rules.
Sort delete candidates into two tiers, and present them separately:
~/code/archives/), throwaway sandboxes (~/code/rails/, ~/code/fly/), other people's dotfiles (~/code/nathan/, ~/code/kelsie/), or stale dotfile copies. Technically pinned, plausibly disposable — the user decides, per version, every run. Never fold these into the safe tier.Show a table: version, size, keep/delete, and the concrete reason (a pin path, or "no pins found"). Include the total reclaimable.
Also report pins referencing versions that aren't installed (e.g. 3.3.4 has pins but no install). It means those projects are already broken, and it's a useful signal that a pin doesn't prove a project is alive.
State the known gaps every run, so the user can calibrate:
~ is scanned — anything on an external volume is invisible..ruby-version, .tool-versions, and Gemfile. A project selecting its Ruby some other way (a wrapper script, a Docker image, direnv) would not show up.CHECKPOINT: stop here unless --apply was passed. Report and end.
--apply + explicit confirmation)Confirm the exact list with the user, then per version:
asdf uninstall ruby <version>Report each result. Afterwards, re-run asdf list ruby and du -sh ~/.asdf/installs/ruby to show the new state and actual space reclaimed.
/create-bump/create-bump is a project-local skill in the asdf working repo (~/code/active/asdf/.claude/skills/create-bump/), not part of dotfiles — it won't appear in this repo.
It uninstalls only the single MRI version it installed for testing — safe, because it created that version minutes earlier and nothing can be pinned to it yet. It must not call this skill or do fleet-wide cleanup; a routine ruby-build bump should never be able to delete an app's Ruby. Run /ruby-gc deliberately, on its own.
That constraint is enforced where it binds — in /create-bump's own step 8, since a skill can only follow rules written in the file it reads. The note here is orientation, not enforcement. If /create-bump is ever rewritten, re-check that its step 8 still carries the no-fleet-cleanup rule.
© joshukraine, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in claude/.claude/skills/ruby-gc of joshukraine/dotfiles.
Open the folder on GitHubat commit b59ad5b
Ruby Gc next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ruby Gc this skilljoshukraine/dotfiles | 429 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Gumroad Prod Consoleantiwork/gumroad | 9.8k | — | ~2.9k | Automated safety check: Notes | MIT | |
| Fastlane Pull Request Reviewfastlane/fastlane | 42k | — | ~550 | Automated safety check: Pass | MIT | |
| Antipattern Preventiondoorkeeper-gem/doorkeeper | 5.5k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Mutantmbj/mutant | 2.2k | — | ~2k | Automated safety check: Pass | Proprietary | |
| Evaluating Pegslineofflight/frankfurter | 2k | — | ~1.6k | Automated safety check: Pass | MIT |
antiwork/gumroad
Execute read-only Ruby/Rails commands against Gumroad's production database for debugging and investigation.
fastlane/fastlane
Reviews a fastlane pull request against its linked issue and the project guides, separating blocking from non-blocking findings and handling vulnerabilities privately.
doorkeeper-gem/doorkeeper
Avoid common Ruby and Rails antipatterns that degrade maintainability and performance.
mbj/mutant
Run mutant, read mutation reports, fix alive mutations, and verify coverage.
lineofflight/frankfurter
A skill your agent uses when adding, evaluating, or removing an entry in db/seeds/pegs/, when the user mentions a pegged or fixed currency, or when an issue suggests we should "pin" or "lock" a…
swig/swig
Reproduce a GitHub Actions Linux CI failure locally when it does not happen on your machine: a podman/docker image that mirrors the ubuntu-22.04 runner by reusing the real Tools/CI-linux-.sh install…
joshukraine/dotfiles
Manage Todoist tasks, projects, labels, filters, sections, comments, reminders, and workspaces via the td CLI.
joshukraine/dotfiles
Vet open issues for autonomous resolution and queue the qualifying ones with the autopilot-queued label — the start-of-day "fill the queue" half of the triage → run split.
joshukraine/dotfiles
Quick 2-minute status update on current phase, completed work, blockers, and health check.
joshukraine/dotfiles
Create a pull request with auto-generated description, issue linking, ROADMAP updates, and PR-metadata validation.
joshukraine/dotfiles
Detailed technical walkthrough covering architecture, test coverage, product tour, and key design decisions.
joshukraine/dotfiles
Pre-PR advisory check for deviations from the project spec. An agent skill from joshukraine/dotfiles.
Works with
Audit asdf-installed Ruby versions against project pins and remove unreferenced ones. Ruby Gc is an agent skill from joshukraine/dotfiles. Audit asdf-installed Ruby versions against project pins and remove unreferenced ones.
Run `npx skills add joshukraine/dotfiles --skill ruby-gc -a claude-code`. Or copy the skill folder (claude/.claude/skills/ruby-gc in joshukraine/dotfiles) into .claude/skills/ruby-gc in your project. Claude Code loads it when a task matches its description.
Run `npx skills add joshukraine/dotfiles --skill ruby-gc -a codex`. Or copy the skill folder (claude/.claude/skills/ruby-gc in joshukraine/dotfiles) into .agents/skills/ruby-gc in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add joshukraine/dotfiles --skill ruby-gc -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ruby-gc, .gemini/skills/ruby-gc, .github/skills/ruby-gc and .opencode/skills/ruby-gc in your project.
Going by SKILL.md and its folder, Ruby Gc needs the command-line tools its instructions call (ruby, asdf and python). Our summary lists: Python 3; Node.js; Docker.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Ruby Gc is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Ruby Gc: Gumroad Prod Console (antiwork/gumroad, 9.8k stars), Fastlane Pull Request Review (fastlane/fastlane, 42k stars), Antipattern Prevention (doorkeeper-gem/doorkeeper, 5.5k stars) and Mutant (mbj/mutant, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
joshukraine (a GitHub user) maintains it in joshukraine/dotfiles, which has 429 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 6, 2026.
Source: joshukraine/dotfiles on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.