← ClaudeAtlas

dependency-extraction-multilanglisted

Extract dependencies from package.json, requirements.txt, and pyproject.toml. Use when analyzing repo tech stacks, building dependency graphs, or matching projects by technology.
ytrofr/ai-intelligence-hub · ★ 4 · Data & Documents · score 77
Install: claude install-skill ytrofr/ai-intelligence-hub
# Multi-Language Dependency Extraction ## WHEN TO USE (Triggers) 1. When analyzing a GitHub repo's tech stack programmatically 2. When building project-to-repo matching based on shared dependencies 3. When parsing dependencies from multiple languages (Node + Python) 4. When pyproject.toml parsing fails silently (complex TOML format) 5. When dependency names have version specifiers that need stripping ## FAILED ATTEMPTS | # | Attempt | Why Failed | Lesson | |---|---------|-----------|--------| | 1 | Used a TOML parser library for pyproject.toml | Added a dependency just for parsing one file. Library had edge cases | Regex extraction is simpler and sufficient for dependency arrays | | 2 | Didn't strip version specifiers from requirements.txt | "fastapi>=0.100" didn't match "fastapi" in project config | Always split on version specifiers: `[=<>~!` | | 3 | Only checked `dependencies` in package.json | Missed `devDependencies` (typescript, vite, testing frameworks) | Check both dependencies AND devDependencies | ## CORRECT PATTERN ### Unified Extraction Function ```javascript function extractDependencies(packageJson, requirementsTxt, pyprojectToml) { const deps = []; // 1. Node.js: package.json if (packageJson) { try { const pkg = JSON.parse(packageJson); if (pkg.dependencies) deps.push(...Object.keys(pkg.dependencies)); if (pkg.devDependencies) deps.push(...Object.keys(pkg.devDependencies)); } catch { /* malformed JSON */ } } // 2. Python