DevHive-Cli package-management
Install and manage language packages, system dependencies, and programming language runtimes.
git clone https://github.com/El3tar-cmd/DevHive-Cli
T=$(mktemp -d) && git clone --depth=1 https://github.com/El3tar-cmd/DevHive-Cli "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/package-management" ~/.claude/skills/el3tar-cmd-devhive-cli-package-management && rm -rf "$T"
skills/package-management/SKILL.mdPackage 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:
- Modules via this skill (preferred)
- Nix system dependencies via
installSystemDependencies() - 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
with the language's standard ignore patterns.gitignore - 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:
(str, optional): Language name to filter by (e.g., "python", "nodejs", "rust"). If not provided, returns all available modules.langName
Returns: Dict with
success, message, langName, and modules list
Each module contains: id, name, version, description
Example:
// 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:
(str, required): Language identifier like "python-3.11", "nodejs-20"language
Returns: Dict with
success, message, language, and installedModuleId keys
Example:
// 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:
(str, required): Module ID frommoduleIdlistAvailableModules
Returns: Dict with
success, message, moduleId, and wasInstalled
Example:
// 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:
(str, required): Programming language: "nodejs", "python", "bun", "go", "rust"language
(list[str], required): List of packages to installpackages
Returns: Dict with
success, message, packages, and output keys
Example:
// 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:
is required — you must always include itlanguage- Valid language values:
,"nodejs"
,"python"
,"bun"
,"go""rust"- Use
for JavaScript/TypeScript projects — NEVER use"nodejs"
,"js"
, or"node""javascript" - Use
for Python projects — NEVER use"python"
or"py""pip"
- Use
must be an array of strings — NEVER a single string, NEVER an array of objectspackages- Correct:
packages: ["express"] - Wrong:
packages: "express" - Wrong:
packages: [{name: "express"}]
- Correct:
uninstallLanguagePackages(language, packages)
Remove language-specific packages.
Parameters:
(str, required): Programming languagelanguage
(list[str], required): List of packages to uninstallpackages
Returns: Dict with
success, message, and packages keys
Example:
const result = await uninstallLanguagePackages({ language: "nodejs", packages: ["lodash"] });
installSystemDependencies(packages)
Install system-level dependencies via Nix.
Parameters:
(list[str], required): Nixpkgs attribute paths (NOT apt package names)packages
Returns: Dict with
success, message, and packages keys
Important: Use Nix package names, not apt/debian names:
- X11 libraries need 'xorg.' prefix:
,xorg.libxcbxorg.libX11
isca-certificates
in Nixcacert
islibxcb
in Nixxorg.libxcb
Example:
// 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:
(list[str], required): Nixpkgs attribute paths to uninstallpackages
Returns: Dict with
success, message, and packages keys
Example:
const result = await uninstallSystemDependencies({ packages: ["jq"] });
Best Practices
- Use language packages for project dependencies: These are tracked in package files (package.json, requirements.txt)
- Use system dependencies for OS-level tools: Things like ffmpeg, imagemagick, or native libraries
- Use Nix package names: Not apt/debian names. Check nixpkgs for correct names
- Install language runtimes when needed: If
orpython
commands fail, install the runtime firstnode - Check versions first: Use
beforelistAvailableModulesinstallProgrammingLanguage
Example Workflow
// 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.)