Merge Master
keybase/client
A skill your agent uses when periodically merging upstream master commits into a long-running refactor branch where code has moved, been renamed, or restructured — guiding careful per-commit…
Find where a codebase actually costs time by mining its git history (Tornhill hotspot analysis).
$ npx skills add lexler/skill-factory --skill hotspots -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install lexler/skill-factory hotspots --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/lexler/skill-factory.git skills-src && mkdir -p .claude/skills && cp -r skills-src/output_skills/practices/hotspots .claude/skills/hotspots && 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 "hotspots" agent skill from https://github.com/lexler/skill-factory/tree/main/output_skills/practices/hotspots into .claude/skills/hotspots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hotspots", 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/lexler/skill-factory/tree/main/output_skills/practices/hotspotsType 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 lexler/skill-factory --skill hotspots -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install lexler/skill-factory hotspots --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lexler/skill-factory.git skills-src && mkdir -p .agents/skills && cp -r skills-src/output_skills/practices/hotspots .agents/skills/hotspots && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "hotspots" agent skill from https://github.com/lexler/skill-factory/tree/main/output_skills/practices/hotspots into .agents/skills/hotspots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hotspots", 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 lexler/skill-factory --skill hotspots -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install lexler/skill-factory hotspots --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lexler/skill-factory.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/output_skills/practices/hotspots .cursor/skills/hotspots && 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 "hotspots" agent skill from https://github.com/lexler/skill-factory/tree/main/output_skills/practices/hotspots into .cursor/skills/hotspots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hotspots", 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/lexler/skill-factory.git --path output_skills/practices/hotspots--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 lexler/skill-factory --skill hotspots -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install lexler/skill-factory hotspots --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lexler/skill-factory.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/output_skills/practices/hotspots .gemini/skills/hotspots && 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 "hotspots" agent skill from https://github.com/lexler/skill-factory/tree/main/output_skills/practices/hotspots into .gemini/skills/hotspots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hotspots", 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 lexler/skill-factory hotspotsInstalls 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 lexler/skill-factory --skill hotspots -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/lexler/skill-factory.git skills-src && mkdir -p .github/skills && cp -r skills-src/output_skills/practices/hotspots .github/skills/hotspots && 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 "hotspots" agent skill from https://github.com/lexler/skill-factory/tree/main/output_skills/practices/hotspots into .github/skills/hotspots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hotspots", 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 lexler/skill-factory --skill hotspots -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install lexler/skill-factory hotspots --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lexler/skill-factory.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/output_skills/practices/hotspots .opencode/skills/hotspots && 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 "hotspots" agent skill from https://github.com/lexler/skill-factory/tree/main/output_skills/practices/hotspots into .opencode/skills/hotspots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hotspots", 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.
hotspotsFind where a codebase actually costs time by mining its git history (Tornhill hotspot analysis).
Hotspots is an agent skill from lexler/skill-factory. Find where a codebase actually costs time by mining its git history (Tornhill hotspot analysis). Produces ranked refactoring targets with evidence, change-coupling seams, and a do-not-refactor list; re-run after refactoring to verify it paid off.
Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts and reference files (for example `references/interpretation.md`, `scripts/coupling.py` and `scripts/gitlog.py`).
It sits in Development, covering Refactoring and Git workflow. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8017333. 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.
Ships 3 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
uvgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv and git, which can reach the network depending on how they are called.
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.
Hotspots loads about 1.2k tokens when it runs, and up to ~2.1k if it reads all its reference files. Until then it costs about 64 tokens; SKILL.md has 608 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); the scripts in this folder are not scanned.
The full file from lexler/skill-factory at commit 8017333, republished under its Apache-2.0 licence (© lexler). 608 words, ~1,206 tokens.
.claude/skills/hotspots/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.STARTER_CHARACTER = 🔥
Hotspot analysis ranks files by change frequency × complexity. Code that is both complicated and changed often is where refactoring pays; complicated but stable code is not — "if it never changes, it's not costing us money." The scripts compute every number deterministically; your job is scoping, validation, and interpretation. A hotspot is a pointer to where to look, never a diagnosis.
If the user wants to check whether a past refactoring paid off and hotspots/data/mine.json exists in the repo, jump to VERIFY. Otherwise run the steps in order.
Decide and record:
scripts/mine.py). Keep test files in — a test file as top hotspot is a real and common finding.Done when window, target, and extra excludes are chosen and any history caveats are noted for the report header.
uv run ${CLAUDE_SKILL_DIR}/scripts/mine.py <repo> --months <N> [--exclude PATTERN]... --out hotspots/data/mine.json
uv run ${CLAUDE_SKILL_DIR}/scripts/coupling.py <repo> --months <N> [--exclude PATTERN]... --out hotspots/data/coupling.jsonPass the same --months and --exclude flags to both. If summary.warnings reports too few commits or nothing ranked, widen the window or lower --min-revs and re-run.
Done when both JSON files exist and files_ranked > 0.
Take the top ~10 files by score from mine.json. Read each one and give a verdict — confirmed hotspot, or discarded with the false-positive class it belongs to (catalog in references/interpretation.md). When discards free up slots, pull in the next candidates so ~10 get verdicts.
Done when every candidate has a verdict and one-line reason.
For each confirmed hotspot:
git log --since=<window> -p -- <file> (or git log -L :<function>:<file> for a suspect function).coupling.json. A test↔code pair is normal; coupling across module boundaries is an architecture finding worth naming.Done when every confirmed hotspot has internal target functions and its coupling partners (or "none above thresholds").
Write hotspots/report.md:
stable_complex entries plus stable-complex quadrant files — complex but quiet; touching them is risk without payoff.hotspots/data/ as the verify baseline.Keep the two JSONs — they are the baseline VERIFY compares against. Done when the report answers "what to refactor first, why, and what to leave alone" without opening the JSONs. Offer the top target to the refactoring workflow the user normally uses.
params from hotspots/data/mine.json and re-run both scripts with the same flags to fresh files (e.g. hotspots/data/mine-after.json).hotspots/report.md with a per-file verdict — improved / unchanged / worse — and the numbers behind it, then replace the baseline JSONs with the fresh ones.Done when every refactored file has a verdict backed by before/after numbers.
references/interpretation.md — read during VALIDATE and when writing the report: quadrant meanings, the false-positive catalog, metric caveats, and threshold tuning.
© lexler, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (scripts, references) in output_skills/practices/hotspots of lexler/skill-factory.
Open the folder on GitHubat commit 8017333
Hotspots 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 |
|---|---|---|---|---|---|---|
| Hotspots this skilllexler/skill-factory | 239 | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Merge Masterkeybase/client | 9.3k | — | ~1.3k | Automated safety check: Pass | BSD-3-Clause | |
| Docs Update from DiffQwenLM/qwen-code | 28k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Generate Snapshotmicrosoft/vscode-python-environments | 141 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Refactor Command To Commandlineresultruby-git/ruby-git | 1.8k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Nemo Rl Auto ResearchNVIDIA/skills | 3.5k | — | ~2.3k | Automated safety check: Pass | Apache-2.0 |
keybase/client
A skill your agent uses when periodically merging upstream master commits into a long-running refactor branch where code has moved, been renamed, or restructured — guiding careful per-commit…
QwenLM/qwen-code
Reads local git changes and updates only the matching docs pages, so documentation stays in sync with uncommitted or recent code changes.
microsoft/vscode-python-environments
Generate a codebase health snapshot for technical debt tracking and planning.
ruby-git/ruby-git
Migrates a command class that still performs parsing or custom execution logic to return raw Git::CommandLine::Result, moving parsing to facade/parser layers.
NVIDIA/skills
Autonomous NeMo-RL research agent workflow for directed hypothesis testing and open-ended discovery.
tikalk/adlc-team-skills
A skill your agent uses when past-change rationale matters (refactoring unfamiliar code, revert or hotfix analysis, issue-linked commit archaeology, session authors git changes with human-authored…
lexler/skill-factory
Creates C4 model diagrams at every zoom level, from system landscape to code, in ASCII, Mermaid or Structurizr, for designing or documenting software architecture.
lexler/skill-factory
Plans and launches Claude Code agent teams with distinct roles, right-sized tasks and detailed spawn prompts, and says when subagents or worktrees fit better.
lexler/skill-factory
Guides writing and debugging Claude Code status line scripts that read session JSON from stdin and print one line of text.
lexler/skill-factory
Catalog of obstacles, anti-patterns and patterns for working with AI coding agents, covering context management and reliability, from a published patterns collection.
lexler/skill-factory
Writes snapshot-style approval tests in Python, JavaScript, TypeScript or Java, comparing output against an approved file instead of writing individual assertions.
lexler/skill-factory
Teaches the Nullables pattern for testing without mocking libraries: production classes with an off switch, stubbed only at the third-party edge.
Categories
Find where a codebase actually costs time by mining its git history (Tornhill hotspot analysis). Hotspots is an agent skill from lexler/skill-factory. Find where a codebase actually costs time by mining its git history (Tornhill hotspot analysis).
Hotspots fits situations like: tasks that involve Refactoring; tasks that involve Git workflow.
Run `npx skills add lexler/skill-factory --skill hotspots -a claude-code`. Or copy the skill folder (output_skills/practices/hotspots in lexler/skill-factory) into .claude/skills/hotspots in your project. Claude Code loads it when a task matches its description.
Run `npx skills add lexler/skill-factory --skill hotspots -a codex`. Or copy the skill folder (output_skills/practices/hotspots in lexler/skill-factory) into .agents/skills/hotspots 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 lexler/skill-factory --skill hotspots -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hotspots, .gemini/skills/hotspots, .github/skills/hotspots and .opencode/skills/hotspots in your project.
Going by SKILL.md and its folder, Hotspots needs Python for the scripts in its folder and the command-line tools its instructions call (uv and git). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv and git, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Hotspots is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.2k tokens (SKILL.md is roughly 4.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 923 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Hotspots: Merge Master (keybase/client, 9.3k stars), Docs Update from Diff (QwenLM/qwen-code, 28k stars), Generate Snapshot (microsoft/vscode-python-environments, 141 stars) and Refactor Command To Commandlineresult (ruby-git/ruby-git, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
lexler (a GitHub user) maintains it in lexler/skill-factory, which has 239 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on August 26, 2026.
Source: lexler/skill-factory on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.