DRY Refactoring With jscpd
kucherenko/jscpd
Removes copy-paste duplication found by jscpd, starting with exact clones and hotspots, then renamed and near-miss copies, using proven refactoring strategies.
Generate a codebase health snapshot for technical debt tracking and planning.
$ npx skills add microsoft/vscode-python-environments --skill generate-snapshot -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install microsoft/vscode-python-environments generate-snapshot --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/microsoft/vscode-python-environments.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/generate-snapshot .claude/skills/generate-snapshot && 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 "generate-snapshot" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/generate-snapshot into .claude/skills/generate-snapshot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-snapshot", 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/microsoft/vscode-python-environments/tree/main/.github/skills/generate-snapshotType 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 microsoft/vscode-python-environments --skill generate-snapshot -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install microsoft/vscode-python-environments generate-snapshot --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/vscode-python-environments.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/generate-snapshot .agents/skills/generate-snapshot && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "generate-snapshot" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/generate-snapshot into .agents/skills/generate-snapshot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-snapshot", 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 microsoft/vscode-python-environments --skill generate-snapshot -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install microsoft/vscode-python-environments generate-snapshot --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/vscode-python-environments.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/generate-snapshot .cursor/skills/generate-snapshot && 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 "generate-snapshot" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/generate-snapshot into .cursor/skills/generate-snapshot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-snapshot", 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/microsoft/vscode-python-environments.git --path .github/skills/generate-snapshot--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 microsoft/vscode-python-environments --skill generate-snapshot -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install microsoft/vscode-python-environments generate-snapshot --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/vscode-python-environments.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/generate-snapshot .gemini/skills/generate-snapshot && 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 "generate-snapshot" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/generate-snapshot into .gemini/skills/generate-snapshot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-snapshot", 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 microsoft/vscode-python-environments generate-snapshotInstalls 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 microsoft/vscode-python-environments --skill generate-snapshot -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/microsoft/vscode-python-environments.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/generate-snapshot .github/skills/generate-snapshot && 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 "generate-snapshot" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/generate-snapshot into .github/skills/generate-snapshot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-snapshot", 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 microsoft/vscode-python-environments --skill generate-snapshot -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install microsoft/vscode-python-environments generate-snapshot --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/vscode-python-environments.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/generate-snapshot .opencode/skills/generate-snapshot && 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 "generate-snapshot" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/generate-snapshot into .opencode/skills/generate-snapshot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-snapshot", 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.
generate-snapshotGenerate a codebase health snapshot for technical debt tracking and planning.
Generate Snapshot is an agent skill from microsoft/vscode-python-environments, published by the product's own GitHub organization. Generate a codebase health snapshot for technical debt tracking and planning. Analyzes git history, code complexity, debt markers, and dependencies to identify hotspots and refactoring priorities.
Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Technical debt, Refactoring and Git workflow. It works with TypeScript. The repository describes itself as: VS Code extension for Python environment and package management. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e4f9939. 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:
pythonFrom 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.
Generate Snapshot loads about 1.1k tokens when it runs. Until then it costs about 54 tokens; SKILL.md has 344 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 microsoft/vscode-python-environments at commit e4f9939, republished under its MIT licence (© microsoft). 344 words, ~1,078 tokens.
.claude/skills/generate-snapshot/SKILL.md (or your agent's skills folder).This skill generates a comprehensive code health snapshot using the analysis modules in analysis/.
# From repository root
python -m analysis.snapshot --output analysis-snapshot.jsonAdd --pretty flag to also print the JSON to stdout.
Note: The snapshot is written to the repository root (analysis-snapshot.json). This path is ignored by .gitignore.
The snapshot contains these sections:
summary - High-level metrics dashboardfiles_with_changes: Number of files with git changestotal_churn: Total lines added + deletedhigh_complexity_files: Count of files with high complexitytodo_count, fixme_count: Debt marker countscircular_dependency_count: Architectural issuessingle_author_file_ratio: Bus factor indicatorpriority_hotspots - Top 20 refactoring candidatesFiles sorted by priority_score = change_count × max_complexity
{
"path": "src/features/terminal/terminalManager.ts",
"change_count": 45,
"churn": 1200,
"max_complexity": 18,
"priority_score": 810
}High priority_score = frequently changed AND complex = prime refactoring target.
git_analysis - Change patternshotspots: Most frequently changed filestemporal_coupling: Files that change together (hidden dependencies)bus_factor: Knowledge concentration riskscomplexity - Code complexity metricsby_language.typescript: TypeScript file metrics (max_complexity, avg_complexity, function_count)high_complexity_functions: Functions with cyclomatic complexity > 10debt_indicators - Technical debt markersdebt_markers.by_type: TODO, FIXME, HACK comments by typelarge_files: Files exceeding 500 lines of codelong_functions: Functions exceeding 50 linesdependencies - Module coupling analysiscircular_dependencies: Cycles in import graphhighly_coupled_modules: Modules with fan-out > 10hub_modules: Modules with fan-in > 10layer_violations: Lower layers importing from higher layerspriority_score descendingFiles with coupling_ratio > 0.8 changing together indicate:
Files with author_count = 1 and change_count >= 3:
Any cycles in the import graph:
User: What should we work on next?
Agent: Let me generate a snapshot and analyze it...
[generates snapshot]
Based on the snapshot:
Top 3 priority items:
1. **src/features/terminal/terminalManager.ts** (priority: 810)
- 45 changes, complexity 18
- High churn indicates active development area
- Recommend: Split terminal concerns into separate modules
2. **src/managers/common/nativePythonFinder.ts** (priority: 540)
- 30 changes, complexity 18
- Multiple FIXME markers found
- Recommend: Address type guards and cache issues
3. **src/features/interpreterSelection.ts** (priority: 360)
- 24 changes, complexity 15
- Temporal coupling with settings files
- Recommend: Reduce coupling with settings module© microsoft, 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 .github/skills/generate-snapshot of microsoft/vscode-python-environments.
Open the folder on GitHubat commit e4f9939
Generate Snapshot 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 |
|---|---|---|---|---|---|---|
| Generate Snapshot this skillmicrosoft/vscode-python-environments | 141 | — | ~1.1k | Automated safety check: Pass | MIT | |
| DRY Refactoring With jscpdkucherenko/jscpd | 6.4k | — | ~2.1k | Automated safety check: Pass | MIT | |
| jscpd Duplicate Code Detectorkucherenko/jscpd | 6.4k | — | ~4.5k | Automated safety check: Pass | MIT | |
| Dead Code Removal with Knipshift-editor/shift | 347 | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Code RefinerMathews-Tom/armory | 328 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Systematic Code Refactoringluongnv89/claude-howto | 42k | — | ~3k | Automated safety check: Pass | MIT |
kucherenko/jscpd
Removes copy-paste duplication found by jscpd, starting with exact clones and hotspots, then renamed and near-miss copies, using proven refactoring strategies.
kucherenko/jscpd
Finds duplicated code in 220+ languages with jscpd, reports exact, renamed and near-miss clones in a compact agent-friendly format and measures duplication.
shift-editor/shift
Finds unused files, exports and class members with Knip, then verifies each candidate through reference tracing before removing anything, never using knip --fix.
Mathews-Tom/armory
Deep code simplification and refactoring preserving behavior across Python, Go, TypeScript, Rust.
luongnv89/claude-howto
Guides refactoring in phases based on Martin Fowler's method: research, test coverage check, planning and small tested steps, with your approval at each phase.
citrolabs/ego-lite
Finds and implements evidence-backed simplifications in the ego-lite repository, such as dead code, duplicated state and speculative abstractions, without hiding behavior changes.
microsoft/vscode-python-environments
Critical patterns for cross-platform path handling in this VS Code extension.
microsoft/vscode-python-environments
Environment manager-specific discovery patterns and known issues.
microsoft/vscode-python-environments
Run E2E tests to verify complete user workflows like environment discovery, creation, and selection.
microsoft/vscode-python-environments
Run integration tests to verify that extension components work together correctly.
microsoft/vscode-python-environments
Run smoke tests to verify extension functionality in a real VS Code environment.
microsoft/vscode-python-environments
Debug a failing test using an iterative logging approach, then clean up and document the learning.
Works with
Categories
Generate a codebase health snapshot for technical debt tracking and planning. Generate Snapshot is an agent skill from microsoft/vscode-python-environments, published by the product's own GitHub organization. Generate a codebase health snapshot for technical debt tracking and planning.
Generate Snapshot fits situations like: tasks that involve Technical debt; tasks that involve Refactoring; tasks that involve Git workflow.
Run `npx skills add microsoft/vscode-python-environments --skill generate-snapshot -a claude-code`. Or copy the skill folder (.github/skills/generate-snapshot in microsoft/vscode-python-environments) into .claude/skills/generate-snapshot in your project. Claude Code loads it when a task matches its description.
Run `npx skills add microsoft/vscode-python-environments --skill generate-snapshot -a codex`. Or copy the skill folder (.github/skills/generate-snapshot in microsoft/vscode-python-environments) into .agents/skills/generate-snapshot 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 microsoft/vscode-python-environments --skill generate-snapshot -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generate-snapshot, .gemini/skills/generate-snapshot, .github/skills/generate-snapshot and .opencode/skills/generate-snapshot in your project.
Going by SKILL.md and its folder, Generate Snapshot needs the command-line tools its instructions call (python). Our summary lists: Python 3.
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.
Generate Snapshot is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.1k tokens (SKILL.md is roughly 4.3k 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 Generate Snapshot: DRY Refactoring With jscpd (kucherenko/jscpd, 6.4k stars), jscpd Duplicate Code Detector (kucherenko/jscpd, 6.4k stars), Dead Code Removal with Knip (shift-editor/shift, 347 stars) and Code Refiner (Mathews-Tom/armory, 328 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
microsoft (a GitHub organization, an official publisher) maintains it in microsoft/vscode-python-environments, which has 141 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 8, 2026.
Source: microsoft/vscode-python-environments on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.