configure-package-management
npx skills add https://github.com/laurigates/claude-plugins --skill configure-package-management
Agent 安装分布
Skill 文档
/configure:package-management
Check and configure modern package managers for optimal development experience.
Context
This command validates package manager configuration and migrates to modern tools.
Modern package manager preferences:
- Python: uv (replaces pip, poetry, pipenv, pyenv) – 10-100x faster
- JavaScript/TypeScript: bun (alternative to npm/yarn/pnpm) – significantly faster
- Rust: cargo (standard, no alternatives needed)
- Go: go mod (standard, no alternatives needed)
Version Checking
CRITICAL: Before configuring package managers, verify latest versions:
- uv: Check docs.astral.sh/uv or GitHub releases
- bun: Check bun.sh or GitHub releases
- npm: Check npm docs for latest version
- Rust/cargo: Check Rust releases
Use WebSearch or WebFetch to verify current versions before configuring package managers.
Workflow
Phase 1: Language Detection
Detect project languages and current package managers:
| Indicator | Language | Current Manager | Recommended |
|---|---|---|---|
pyproject.toml |
Python | uv / poetry / pip | uv |
requirements.txt |
Python | pip | uv |
Pipfile |
Python | pipenv | uv |
poetry.lock |
Python | poetry | uv |
uv.lock |
Python | uv â | uv |
package.json + bun.lockb |
JavaScript/TypeScript | bun â | bun |
package.json + package-lock.json |
JavaScript/TypeScript | npm | bun |
package.json + yarn.lock |
JavaScript/TypeScript | yarn | bun |
package.json + pnpm-lock.yaml |
JavaScript/TypeScript | pnpm | bun |
Cargo.toml |
Rust | cargo â | cargo |
go.mod |
Go | go mod â | go mod |
Phase 2: Current State Analysis
For each detected language, check configuration:
Python (uv):
-
uvinstalled and on PATH -
pyproject.tomlexists with[project]section -
uv.lockexists (lock file) - Virtual environment in
.venv/ - Python version pinned in
pyproject.toml - Dependency groups configured (dev, test, docs)
- Build system specified (
hatchling,setuptools, etc.)
JavaScript/TypeScript (bun):
-
buninstalled and on PATH -
package.jsonexists -
bun.lockbexists (lock file) -
node_modules/exists - Scripts defined (
dev,build,test,lint) - Type definitions configured (TypeScript)
- Workspaces configured (if monorepo)
Phase 3: Compliance Report
Package Management Configuration Report
=======================================
Project: [name]
Languages: Python, TypeScript
Python:
Package manager uv 0.5.x [â
MODERN | â ï¸ LEGACY pip]
pyproject.toml exists [â
EXISTS | â MISSING]
Lock file uv.lock [â
EXISTS | â ï¸ OUTDATED | â MISSING]
Virtual environment .venv/ [â
EXISTS | â MISSING]
Python version 3.12 [â
PINNED | â ï¸ NOT PINNED]
Dependency groups dev, test, docs [â
CONFIGURED | â ï¸ MINIMAL]
Build backend hatchling [â
CONFIGURED | â ï¸ MISSING]
JavaScript/TypeScript:
Package manager bun 1.1.x [â
MODERN | â ï¸ npm | â ï¸ yarn]
package.json exists [â
EXISTS | â MISSING]
Lock file bun.lockb [â
EXISTS | â MISSING]
Scripts dev, build, test, lint [â
COMPLETE | â ï¸ INCOMPLETE]
Type definitions tsconfig.json [â
CONFIGURED | â ï¸ MISSING]
Engine constraints package.json engines [â
PINNED | â ï¸ NOT PINNED]
Overall: [X issues found]
Recommendations:
- Migrate from pip to uv for faster installs
- Add uv.lock to version control
- Configure dependency groups in pyproject.toml
- Migrate from npm to bun for better performance
Phase 4: Configuration (if –fix or user confirms)
Python with uv
Install uv:
# Via mise (recommended)
mise use uv@latest
# Or via curl
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or via homebrew
brew install uv
Initialize project:
# New project
uv init my-project
cd my-project
# Existing project with requirements.txt
uv init
uv add -r requirements.txt
rm requirements.txt
# Existing project with poetry
uv init
# Copy dependencies from pyproject.toml [tool.poetry.dependencies]
# Then: uv add <deps>
Create pyproject.toml:
[project]
name = "my-project"
version = "0.1.0"
description = "Project description"
readme = "README.md"
requires-python = ">=3.12"
license = { text = "MIT" }
authors = [
{ name = "Your Name", email = "you@example.com" }
]
dependencies = [
# Production dependencies
]
[project.optional-dependencies]
dev = [
"ruff>=0.8.0",
"basedpyright>=1.22.0",
]
test = [
"pytest>=8.0",
"pytest-cov>=6.0",
"pytest-asyncio>=0.24",
]
docs = [
"mkdocs>=1.6",
"mkdocs-material>=9.5",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.uv]
dev-dependencies = [
# Dev dependencies installed with `uv sync`
"ruff>=0.8.0",
"basedpyright>=1.22.0",
"pytest>=8.0",
]
[tool.hatch.build.targets.wheel]
packages = ["src/my_project"]
Common uv commands:
# Install dependencies
uv sync
# Add production dependency
uv add httpx
# Add dev dependency
uv add --group dev pytest
# Run script
uv run python script.py
uv run pytest
# Create virtual environment
uv venv
# Pin Python version
uv python pin 3.12
# Update dependencies
uv lock --upgrade
uv sync
Add to .gitignore:
# Python
.venv/
__pycache__/
*.pyc
.pytest_cache/
.ruff_cache/
dist/
*.egg-info/
JavaScript/TypeScript with bun
Install bun:
# Via mise (recommended)
mise use bun@latest
# Or via curl
curl -fsSL https://bun.sh/install | bash
# Or via homebrew
brew install bun
Initialize project:
# New project
bun init
# Existing project - migrate from npm
rm -rf node_modules package-lock.json
bun install
# Existing project - migrate from yarn
rm -rf node_modules yarn.lock
bun install
# Existing project - migrate from pnpm
rm -rf node_modules pnpm-lock.yaml
bun install
Create/update package.json:
{
"name": "my-project",
"version": "0.1.0",
"type": "module",
"scripts": {
"dev": "bun run --watch src/index.ts",
"build": "bun build src/index.ts --outdir dist",
"test": "bun test",
"lint": "biome check .",
"lint:fix": "biome check --write .",
"typecheck": "tsc --noEmit"
},
"dependencies": {},
"devDependencies": {
"@biomejs/biome": "^1.9.0",
"@types/bun": "latest",
"typescript": "^5.7.0"
},
"engines": {
"bun": ">=1.1.0"
}
}
TypeScript configuration (tsconfig.json):
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "bundler",
"strict": true,
"skipLibCheck": true,
"noEmit": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"resolveJsonModule": true,
"isolatedModules": true,
"types": ["bun-types"]
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
Common bun commands:
# Install dependencies
bun install
# Add dependency
bun add zod
# Add dev dependency
bun add --dev @types/node
# Run script
bun run dev
bun run build
# Run TypeScript directly
bun src/index.ts
# Run tests
bun test
# Update dependencies
bun update
Add to .gitignore:
# JavaScript/TypeScript
node_modules/
dist/
.turbo/
*.tsbuildinfo
Phase 5: Migration Guides
pip/poetry â uv Migration
Step 1: Install uv
mise use uv@latest
Step 2: Initialize uv project
uv init
Step 3: Migrate dependencies
From requirements.txt:
uv add -r requirements.txt
rm requirements.txt
From poetry (pyproject.toml):
# Extract dependencies from [tool.poetry.dependencies]
# Add them with uv add
uv add httpx fastapi pydantic
uv add --group dev pytest ruff
Step 4: Remove old files
rm -f requirements.txt requirements-dev.txt
rm -f Pipfile Pipfile.lock
rm -f poetry.lock
# Update pyproject.toml to remove [tool.poetry] section
Step 5: Update CI/CD
# GitHub Actions
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Install dependencies
run: uv sync
- name: Run tests
run: uv run pytest
npm/yarn/pnpm â bun Migration
Step 1: Install bun
mise use bun@latest
Step 2: Remove old lock files
rm -rf node_modules
rm -f package-lock.json yarn.lock pnpm-lock.yaml
Step 3: Install with bun
bun install
Step 4: Update scripts Replace npm/yarn/pnpm scripts with bun equivalents:
{
"scripts": {
"dev": "bun run --watch src/index.ts",
"build": "bun build src/index.ts --outdir dist",
"test": "bun test"
}
}
Step 5: Update CI/CD
# GitHub Actions
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Install dependencies
run: bun install
- name: Run tests
run: bun test
Phase 6: CI/CD Integration
GitHub Actions – uv:
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- name: Set up Python
run: uv python install
- name: Install dependencies
run: uv sync --all-extras
- name: Run tests
run: uv run pytest
GitHub Actions – bun:
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Run tests
run: bun test
Phase 7: Standards Tracking
Update .project-standards.yaml:
standards_version: "2025.1"
last_configured: "[timestamp]"
components:
package_management: "2025.1"
python_package_manager: "uv"
javascript_package_manager: "bun"
lock_files_committed: true
Phase 8: Final Report
Package Management Configuration Complete
==========================================
Python:
â
uv installed (0.5.x)
â
pyproject.toml configured
â
uv.lock created
â
Dependency groups: dev, test, docs
â
Python 3.12 pinned
JavaScript/TypeScript:
â
bun installed (1.1.x)
â
package.json updated
â
bun.lockb created
â
Scripts configured
Migration:
â
poetry.lock removed
â
package-lock.json removed
â
CI/CD workflows updated
Next Steps:
1. Verify dependencies install correctly:
uv sync && bun install
2. Run tests to ensure nothing broke:
uv run pytest && bun test
3. Commit lock files:
git add uv.lock bun.lockb
Documentation: docs/PACKAGE_MANAGEMENT.md
Flags
| Flag | Description |
|---|---|
--check-only |
Report status without offering migrations |
--fix |
Apply all migrations automatically without prompting |
--manager <manager> |
Override detection (uv, bun, npm, cargo) |
Examples
# Check compliance and offer migrations
/configure:package-management
# Check only, no modifications
/configure:package-management --check-only
# Auto-migrate Python to uv
/configure:package-management --fix --manager uv
# Auto-migrate JavaScript to bun
/configure:package-management --fix --manager bun
Error Handling
- Multiple Python managers detected: Warn about conflict, suggest single source of truth
- Missing package manager: Offer to install via mise
- Invalid pyproject.toml: Report parse error, offer template
- Lock file conflicts: Warn about multiple lock files, suggest cleanup
- Workspace/monorepo: Detect and configure workspace settings
See Also
/configure:linting– Configure linting tools (ruff, biome)/configure:formatting– Configure formatters/deps:install– Universal dependency installer/configure:all– Run all compliance checks- uv documentation: https://docs.astral.sh/uv
- bun documentation: https://bun.sh/docs