Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install clawdsolana-openclawd-skills-package-managementgit clone https://github.com/clawdsolana/OpenClawd.gitcp OpenClawd/SKILL.MD ~/.claude/skills/clawdsolana-openclawd-skills-package-management/SKILL.md---
name: package-management
description: Install and manage language packages, system dependencies, and programming language runtimes.
---
# Package Management Skill
Manage project dependencies and programming language runtimes. Use this skill instead of running shell commands like `npm install`, `pip install`, or `apt install`.
## When to Use
Use this skill when you need to:
- Install language-specific packages (npm, pip, cargo, etc.)
- Install system-level dependencies (ffmpeg, jq, imagemagick, etc.)
- Install programming language runtimes (Python, Node.js, etc.)
- Remove packages from the project
- Check available versions of a programming language
## When NOT to Use
- Searching for available packages (use web search instead)
- Configuring package settings (edit config files directly)
- Running package scripts (use bash tool)
## Modules (Replit Terminology)
"Modules" is a Replit-specific term for language toolchains that can be installed into the NixOS environment. Use `listAvailableModules()` to see what's available.
**Installation priority order:**
1. Modules via this skill (preferred)
2. Nix system dependencies via `installSystemDependencies()`
3. Language package managers (pip, npm, cargo, etc.) via `installLanguagePackages()`
If confused about package installation in Nix or language package managers, use web search.
**After installing a module:**
- Update `.gitignore` with the language's standard ignore patterns
- Never add Replit config files to `.gitignore`
**After removing a module:**
- Consider removing any corresponding workflows that depend on it
## Available Functions
### listAvailableModules(langName=None)
List available language toolchains that can be installed.
**Parameters:**
- `langName` (str, optional): Language name to filter by (e.g., "python", "nodejs", "rust"). If not provided, returns all available modules.
**Returns:** Dict with `success`, `message`, `langName`, and `modules` list
Each module contains: id, name, version, description
**Example:**
```javascript
// List all available modules
const modules = await listAvailableModules();
// Returns: {modules: [{id: "python-3.11", ...}, {id: "nodejs-20", ...}, ...]}
// Find available Python versions
const pythonModules = await listAvailableModules({ langName: "python" });
// Returns: {modules: [{id: "python-3.11", name: "Python", version: "3.11", ...}, ...]}
// Find available Node.js versions
const nodeModules = await listAvailableModules({ langName: "nodejs" });
```
### installProgrammingLanguage(language)
Install a programming language runtime and its package manager.
**Parameters:**
- `language` (str, required): Language identifier like "python-3.11", "nodejs-20"
**Returns:** Dict with `success`, `message`, `language`, and `installedModuleId` keys
**Example:**
```javascript
// First, check available versions
const modules = await listAvailableModules({ langName: "python" });
console.log(modules); // See available Python versions
// Install specific version
const result = await installProgrammingLanguage({ language: "python-3.11" });
// Install Node.js 20
const result2 = await installProgrammingLanguage({ language: "nodejs-20" });
```
### uninstallProgrammingLanguage(moduleId)
Remove an installed programming language runtime.
**Parameters:**
- `moduleId` (str, required): Module ID from `listAvailableModules`
**Returns:** Dict with `success`, `message`, `moduleId`, and `wasInstalled`
**Example:**
```javascript
// Remove Python 3.10
const result = await uninstallProgrammingLanguage({ moduleId: "python-3.10" });
```
### installLanguagePackages(language, packages)
Install language-specific packages like npm, pip, or cargo packages.
**Parameters:**
- `language` (str, required): Programming language: "nodejs", "python", "bun", "go", "rust"
- `packages` (list[str], required): List of packages to install
**Returns:** Dict with `success`, `message`, `packages`, and `output` keys
**Example:**
```javascript
// Install npm packages
const result = await installLanguagePackages({
language: "nodejs",
packages: ["express", "lodash"]
});
console.log(result.message);
// Install pip packages
const result2 = await installLanguagePackages({
language: "python",
packages: ["requests", "flask"]
});
```
**IMPORTANT — required parameter rules:**
- `language` is **required** — you must always include it
- Valid language values: `"nodejs"`, `"python"`, `"bun"`, `"go"`, `"rust"`
- Use `"nodejs"` for JavaScript/TypeScript projects — NEVER use `"js"`, `"node"`, or `"javascript"`
- Use `"python"` for Python projects — NEVER use `"py"` or `"pip"`
- `packages` must be an **array of strings** — NEVER a single string, NEVER an array of objects
- Correct: `packages: ["express"]`
- Wrong: `packages: "express"`
- Wrong: `packages: [{name: "express"}]`
### uninstallLanguagePackages(language, packages)
Remove language-specific packages.
**Parameters:**
- `language` (str, required): Programming language
- `packages` (list[str], required): List of packages to uninstall
**Returns:** Dict with `success`, `message`, and `packages` keys
**Example:**
```javascript
const result = await uninstallLanguagePackages({
language: "nodejs",
packages: ["lodash"]
});
```
### installSystemDependencies(packages)
Install system-level dependencies via Nix.
**Parameters:**
- `packages` (list[str], required): Nixpkgs attribute paths (NOT apt package names)
**Returns:** Dict with `success`, `message`, and `packages` keys
**Important:** Use Nix package names, not apt/debian names:
- X11 libraries need 'xorg.' prefix: `xorg.libxcb`, `xorg.libX11`
- `ca-certificates` is `cacert` in Nix
- `libxcb` is `xorg.libxcb` in Nix
**Example:**
```javascript
// Install system dependencies
const result = await installSystemDependencies({
packages: ["jq", "ffmpeg", "imagemagick"]
});
// Install X11 libraries (note the xorg. prefix)
const result2 = await installSystemDependencies({
packages: ["xorg.libxcb", "xorg.libX11"]
});
```
### uninstallSystemDependencies(packages)
Remove system-level dependencies.
**Parameters:**
- `packages` (list[str], required): Nixpkgs attribute paths to uninstall
**Returns:** Dict with `success`, `message`, and `packages` keys
**Example:**
```javascript
const result = await uninstallSystemDependencies({ packages: ["jq"] });
```
## Best Practices
1. **Use language packages for project dependencies**: These are tracked in package files (package.json, requirements.txt)
2. **Use system dependencies for OS-level tools**: Things like ffmpeg, imagemagick, or native libraries
3. **Use Nix package names**: Not apt/debian names. Check nixpkgs for correct names
4. **Install language runtimes when needed**: If `python` or `node` commands fail, install the runtime first
5. **Check versions first**: Use `listAvailableModules` before `installProgrammingLanguage`
## Example Workflow
```javascript
// Check available Python versions
const modules = await listAvailableModules({ langName: "python" });
console.log(modules);
// Set up a Python Flask project
await installProgrammingLanguage({ language: "python-3.11" });
await installLanguagePackages({
language: "python",
packages: ["flask", "gunicorn", "sqlalchemy"]
});
// Set up a Node.js project with native dependencies
await installProgrammingLanguage({ language: "nodejs-20" });
await installLanguagePackages({
language: "nodejs",
packages: ["sharp", "canvas"]
});
await installSystemDependencies({
packages: ["pkg-config", "cairo", "pango", "libjpeg"]
});
// Clean up old language version
await uninstallProgrammingLanguage({ moduleId: "python-3.10" });
```
## Automatic Behaviors
- Installing packages automatically creates/updates project files (package.json, requirements.txt, etc.)
- Package installations reboot all workflows to pick up new dependencies
- Language runtime installations include popular package managers (pip, npm, etc.)