Inputs V2 New Module
saezlab/pypath
Create a new pypath inputsv2 module for an external database.
Environment manager-specific discovery patterns and known issues.
$ npx skills add microsoft/vscode-python-environments --skill python-manager-discovery -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install microsoft/vscode-python-environments python-manager-discovery --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/python-manager-discovery .claude/skills/python-manager-discovery && 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 "python-manager-discovery" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/python-manager-discovery into .claude/skills/python-manager-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-manager-discovery", 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/python-manager-discoveryType 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 python-manager-discovery -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install microsoft/vscode-python-environments python-manager-discovery --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/python-manager-discovery .agents/skills/python-manager-discovery && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "python-manager-discovery" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/python-manager-discovery into .agents/skills/python-manager-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-manager-discovery", 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 python-manager-discovery -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install microsoft/vscode-python-environments python-manager-discovery --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/python-manager-discovery .cursor/skills/python-manager-discovery && 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 "python-manager-discovery" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/python-manager-discovery into .cursor/skills/python-manager-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-manager-discovery", 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/python-manager-discovery--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 python-manager-discovery -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install microsoft/vscode-python-environments python-manager-discovery --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/python-manager-discovery .gemini/skills/python-manager-discovery && 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 "python-manager-discovery" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/python-manager-discovery into .gemini/skills/python-manager-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-manager-discovery", 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 python-manager-discoveryInstalls 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 python-manager-discovery -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/python-manager-discovery .github/skills/python-manager-discovery && 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 "python-manager-discovery" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/python-manager-discovery into .github/skills/python-manager-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-manager-discovery", 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 python-manager-discovery -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 python-manager-discovery --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/python-manager-discovery .opencode/skills/python-manager-discovery && 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 "python-manager-discovery" agent skill from https://github.com/microsoft/vscode-python-environments/tree/main/.github/skills/python-manager-discovery into .opencode/skills/python-manager-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-manager-discovery", 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.
python-manager-discoveryEnvironment manager-specific discovery patterns and known issues.
Python Manager Discovery is an agent skill from microsoft/vscode-python-environments, published by the product's own GitHub organization. Environment manager-specific discovery patterns and known issues. Use when working on or reviewing environment discovery code for conda, poetry, pipenv, pyenv, or venv.
Its SKILL.md is about 2.7k 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 Writing & Content, covering Creative writing and fiction. It works with Python. 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 4faeedf. 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:
condaFrom 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.
Python Manager Discovery loads about 2.7k tokens when it runs. Until then it costs about 48 tokens; SKILL.md has 468 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 4faeedf, republished under its MIT licence (© microsoft). 468 words, ~2,672 tokens.
.claude/skills/python-manager-discovery/SKILL.md (or your agent's skills folder).This skill documents manager-specific discovery patterns, environment variable precedence, and known issues.
| Manager | Config Files | Cache Location | Key Env Vars |
|---|---|---|---|
| Poetry | poetry.toml, pyproject.toml, config.toml | Platform-specific | POETRY_VIRTUALENVS_IN_PROJECT, POETRY_CACHE_DIR |
| Pipenv | Pipfile, Pipfile.lock | XDG or WORKON_HOME | WORKON_HOME, XDG_DATA_HOME |
| Pyenv | .python-version, versions/ | ~/.pyenv/ or pyenv-win | PYENV_ROOT, PYENV_VERSION |
| Conda | environment.yml, conda-meta/ | Registries + paths | CONDA_PREFIX, CONDA_DEFAULT_ENV |
| venv | pyvenv.cfg | In-project | None |
Virtualenvs cache (default):
%LOCALAPPDATA%\pypoetry\Cache\virtualenvs~/Library/Caches/pypoetry/virtualenvs~/.cache/pypoetry/virtualenvsIn-project (when enabled):
.venv/ in project rootpoetry.toml in project rootPOETRY_VIRTUALENVS_*~/.config/pypoetry/config.toml| Issue | Description | Fix |
|---|---|---|
{cache-dir} placeholder | Not resolved in paths from config | Resolve placeholder before use |
| Wrong default path | Windows/macOS differ from Linux | Use platform-specific defaults |
| In-project detection | POETRY_VIRTUALENVS_IN_PROJECT must be checked | Check env var first, then config |
async function getPoetryVirtualenvsPath(): Promise<string> {
// 1. Check environment variable first
const envVar = process.env.POETRY_VIRTUALENVS_PATH;
if (envVar) return envVar;
// 2. Check local poetry.toml
const localConfig = await readPoetryToml(projectRoot);
if (localConfig?.virtualenvs?.path) {
return resolvePoetryPath(localConfig.virtualenvs.path);
}
// 3. Use platform-specific default
return getDefaultPoetryCache();
}
function resolvePoetryPath(configPath: string): string {
// Handle {cache-dir} placeholder
if (configPath.includes('{cache-dir}')) {
const cacheDir = getDefaultPoetryCache();
return configPath.replace('{cache-dir}', cacheDir);
}
return configPath;
}Default:
~/.local/share/virtualenvs/ (XDG_DATA_HOME)~/.local/share/virtualenvs/~\.virtualenvs\When WORKON_HOME is set:
$WORKON_HOME/ directly| Var | Purpose |
|---|---|
WORKON_HOME | Override virtualenv location |
XDG_DATA_HOME | Base for Linux default |
PIPENV_VENV_IN_PROJECT | Create .venv/ in project |
| Issue | Description | Fix |
|---|---|---|
| Missing WORKON_HOME support | Env var not checked | Read env var before defaults |
| Missing XDG_DATA_HOME support | Not used on Linux | Check XDG spec |
function getPipenvVirtualenvsPath(): string {
// Check WORKON_HOME first
if (process.env.WORKON_HOME) {
return process.env.WORKON_HOME;
}
// Check XDG_DATA_HOME on Linux
if (process.platform === 'linux') {
const xdgData = process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share');
return path.join(xdgData, 'virtualenvs');
}
// Windows/macOS defaults
return path.join(os.homedir(), '.virtualenvs');
}Unix:
~/.pyenv/versions/ (default)$PYENV_ROOT/versions/ (if PYENV_ROOT set)Windows (pyenv-win):
%USERPROFILE%\.pyenv\pyenv-win\versions\| Aspect | Unix | Windows (pyenv-win) |
|---|---|---|
| Command | pyenv | pyenv.bat |
| Root | ~/.pyenv/ | %USERPROFILE%\.pyenv\pyenv-win\ |
| Shims | ~/.pyenv/shims/ | %USERPROFILE%\.pyenv\pyenv-win\shims\ |
| Issue | Description | Fix |
|---|---|---|
| path.normalize() vs path.resolve() | Windows drive letter missing | Use path.resolve() on both sides |
| Wrong command on Windows | Looking for pyenv instead of pyenv.bat | Check for .bat extension |
function getPyenvRoot(): string {
if (process.env.PYENV_ROOT) {
return process.env.PYENV_ROOT;
}
if (process.platform === 'win32') {
// pyenv-win uses different structure
return path.join(os.homedir(), '.pyenv', 'pyenv-win');
}
return path.join(os.homedir(), '.pyenv');
}
function getPyenvVersionsPath(): string {
const root = getPyenvRoot();
return path.join(root, 'versions');
}
// Use path.resolve() for comparisons!
function comparePyenvPaths(pathA: string, pathB: string): boolean {
return path.resolve(pathA) === path.resolve(pathB);
}Environment locations:
envs/ directory~/.conda/envs/~/.condarc envs_dirsWindows Registry:
HKCU\Software\Python\ContinuumAnalytics\HKLM\SOFTWARE\Python\ContinuumAnalytics\| Shell | Activation Command |
|---|---|
| bash, zsh | source activate envname |
| fish | conda activate envname (NOT source!) |
| PowerShell | conda activate envname |
| cmd | activate.bat envname |
| Issue | Description | Fix |
|---|---|---|
| Fish shell activation | Uses bash-style command | Use fish-compatible syntax |
| Registry paths | May be stale/invalid | Verify paths exist |
| Base vs named envs | Different activation | Check if activating base |
function getCondaActivationCommand(shell: ShellType, envName: string): string {
switch (shell) {
case 'fish':
// Fish uses different syntax!
return `conda activate ${envName}`;
case 'cmd':
return `activate.bat ${envName}`;
case 'powershell':
return `conda activate ${envName}`;
default:
// bash, zsh
return `source activate ${envName}`;
}
}Identification:
pyvenv.cfg file in directoryhome and optionally version keysversion field in pyvenv.cfghome path (e.g., Python311)async function getVenvVersion(venvPath: string): Promise<string | undefined> {
const cfgPath = path.join(venvPath, 'pyvenv.cfg');
try {
const content = await fs.readFile(cfgPath, 'utf-8');
const lines = content.split('\n');
for (const line of lines) {
const [key, value] = line.split('=').map((s) => s.trim());
if (key === 'version') {
return value;
}
}
// Fall back to parsing home path
const homeLine = lines.find((l) => l.startsWith('home'));
if (homeLine) {
const home = homeLine.split('=')[1].trim();
const match = home.match(/(\d+)\.(\d+)/);
if (match) {
return `${match[1]}.${match[2]}`;
}
}
} catch {
// Config file not found or unreadable
}
return undefined;
}The PET server is a Rust-based locator that communicates via JSON-RPC over stdio.
| Issue | Description | Fix |
|---|---|---|
| No timeout | JSON-RPC can hang forever | Add Promise.race with timeout |
| Silent spawn errors | Extension continues without envs | Surface spawn errors to user |
| Resource leaks | Worker pool not cleaned up | Dispose on deactivation |
| Type guard missing | Response types not validated | Add runtime type checks |
| Cache key collision | Paths normalize to same key | Use consistent normalization |
async function fetchFromPET<T>(method: string, params: unknown): Promise<T> {
const timeout = 30000; // 30 seconds
const result = await Promise.race([
this.client.request(method, params),
new Promise<never>((_, reject) => setTimeout(() => reject(new Error('PET server timeout')), timeout)),
]);
// Validate response type
if (!isValidResponse<T>(result)) {
throw new Error(`Invalid response from PET: ${JSON.stringify(result)}`);
}
return result;
}© 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/python-manager-discovery of microsoft/vscode-python-environments.
Open the folder on GitHubat commit 4faeedf
Python Manager Discovery 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 |
|---|---|---|---|---|---|---|
| Python Manager Discovery this skillmicrosoft/vscode-python-environments | 141 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Inputs V2 New Modulesaezlab/pypath | 164 | — | ~728 | Automated safety check: Pass | GPL-3.0 | |
| Novel WriterZJU-REAL/Easel | 3.2k | — | ~1k | Automated safety check: Pass | Apache-2.0 | |
| Script Comparative Review Against HitsSupreme-Ultimate/novel-to-script-team | 174 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Story Multi-Perspective Reviewzenstory-ai/oh-story-claudecode | 7.3k | 3 repos | ~3k | Automated safety check: Pass | MIT | |
| Short Web Fiction Trend Scanzenstory-ai/oh-story-claudecode | 7.3k | 3 repos | ~1.2k | Automated safety check: Pass | MIT |
saezlab/pypath
Create a new pypath inputsv2 module for an external database.
ZJU-REAL/Easel
长篇小说/网文连载创作:从世界观、人设和三级大纲写到逐章正文,并用文件化状态维护伏笔、前情和跨章一致性. An agent skill from ZJU-REAL/Easel.
Supreme-Ultimate/novel-to-script-team
Chinese-language skill that scores a generated short-drama script against a reference hit script on rhythm, dialogue style, emotional impact and structure, with PASS/FAIL thresholds.
zenstory-ai/oh-story-claudecode
Reviews Chinese web-novel text with several reviewer agents in parallel, falling back to a single-agent pass, and reports structure, character, prose and setting problems with fixes.
zenstory-ai/oh-story-claudecode
Scans popular short web-fiction rankings on Chinese platforms such as Dianzhong and Heiyan to surface trending emotional hooks, themes and topic candidates with an expiry warning.
Narcooo/inkos
Drives long-form fiction, scripts, storyboards, interactive films and long-document translation through InkOS, with every change made by a typed action.
microsoft/vscode-python-environments
Critical patterns for cross-platform path handling in this VS Code extension.
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.
microsoft/vscode-python-environments
Generate a codebase health snapshot for technical debt tracking and planning.
Works with
Categories
Environment manager-specific discovery patterns and known issues. Python Manager Discovery is an agent skill from microsoft/vscode-python-environments, published by the product's own GitHub organization. Environment manager-specific discovery patterns and known issues.
Python Manager Discovery fits situations like: reviewing environment discovery code for conda; tasks that involve Creative writing and fiction.
Run `npx skills add microsoft/vscode-python-environments --skill python-manager-discovery -a claude-code`. Or copy the skill folder (.github/skills/python-manager-discovery in microsoft/vscode-python-environments) into .claude/skills/python-manager-discovery in your project. Claude Code loads it when a task matches its description.
Run `npx skills add microsoft/vscode-python-environments --skill python-manager-discovery -a codex`. Or copy the skill folder (.github/skills/python-manager-discovery in microsoft/vscode-python-environments) into .agents/skills/python-manager-discovery 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 python-manager-discovery -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/python-manager-discovery, .gemini/skills/python-manager-discovery, .github/skills/python-manager-discovery and .opencode/skills/python-manager-discovery in your project.
Going by SKILL.md and its folder, Python Manager Discovery needs the command-line tools its instructions call (conda). 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.
Python Manager Discovery 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.7k tokens (SKILL.md is roughly 11k 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 Python Manager Discovery: Inputs V2 New Module (saezlab/pypath, 164 stars), Novel Writer (ZJU-REAL/Easel, 3.2k stars), Script Comparative Review Against Hits (Supreme-Ultimate/novel-to-script-team, 174 stars) and Story Multi-Perspective Review (zenstory-ai/oh-story-claudecode, 7.3k 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 7, 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.