Analyze project dependencies, build dependency trees, detect conflicts, and check compatibility
The Dependency Analyzer skill provides comprehensive dependency analysis capabilities for Python projects. It parses dependency configuration files (requirements.txt, pyproject.toml), builds dependency trees, detects version conflicts, and checks compatibility constraints.
Key Functions:
Use this skill when you need to:
Typical Scenarios:
Action: Read and parse all dependency configuration files in the project
# Check for requirements.txt
if [ -f requirements.txt ]; then
echo "Found requirements.txt"
cat requirements.txt
fi
# Check for pyproject.toml
if [ -f pyproject.toml ]; then
echo "Found pyproject.toml"
grep -A 30 "dependencies\|requires" pyproject.toml
fi
# Check for setup.py
if [ -f setup.py ]; then
echo "Found setup.py"
grep -A 20 "install_requires\|extras_require" setup.py
fi
Output: Inventory of current dependencies with versions
Action: Use dependency-checker script to build complete dependency tree
python .claude/skills/dependency-analyzer/dependency-checker-script.py \
--analyze \
--project-root . \
--output-format tree
Output: Visual dependency tree showing relationships
Action: Extract required libraries from feature analysis
Process:
Output: List of new dependencies with recommended versions
Action: Verify version compatibility and constraints
python .claude/skills/dependency-analyzer/dependency-checker-script.py \
--check-compatibility \
--new-deps "package1>=1.0,package2~=2.0" \
--python-version "3.11"
Checks:
Output: Compatibility report with warnings and recommendations
Action: Identify version conflicts in dependency tree
python .claude/skills/dependency-analyzer/dependency-checker-script.py \
--check-conflicts \
--new-deps "package1,package2,package3"
Detects:
Output: Conflict report with resolution strategies
## Dependency Analysis
### Current Dependencies (12 total)
**Core Dependencies:**
- requests==2.31.0 - HTTP library
- pydantic==2.5.0 - Data validation
- click==8.1.7 - CLI framework
**Development Dependencies:**
- pytest==7.4.3 - Testing framework
- black==23.12.0 - Code formatter
- mypy==1.7.1 - Type checker
### New Dependencies Required (3 total)
| Package | Version | Purpose | Type | Source |
|---------|---------|---------|------|--------|
| httpx | >=0.27.0 | Async HTTP client | core | PyPI |
| pydantic-settings | >=2.0.0 | Settings management | core | PyPI |
| pytest-asyncio | >=0.21.0 | Async test support | dev | PyPI |
### Dependency Tree
project-root/ ├── requests==2.31.0 │ ├── urllib3>=1.21.1,<3 │ ├── certifi>=2017.4.17 │ └── charset-normalizer>=2,<4 ├── pydantic==2.5.0 │ ├── typing-extensions>=4.6.1 │ └── annotated-types>=0.4.0 └── [new] httpx>=0.27.0 ├── httpcore>=1.0.0 ├── certifi └── sniffio
### Compatibility Check
✅ Python 3.11+ compatible
✅ No breaking changes detected
✅ All version constraints satisfied
⚠️ httpx and requests overlap (both HTTP clients)
### Conflicts Detected
**None** - All dependencies compatible
### Recommendations
1. Consider migrating from requests to httpx for async support
2. Pin versions in production: httpx==0.27.2
3. Update requirements.txt with new dependencies
4. Run `pip install -r requirements.txt` to verify installation
package>=1.0,<2.0package==1.2.3>=1.0 - Minimum version 1.0~=1.2 - Compatible release (>=1.2, <2.0)^1.2.3 - Caret (npm-style, rare in Python)==1.2.3 - Exact versionLocation: .claude/skills/dependency-analyzer/dependency-checker-script.py
Usage:
# Analyze current dependencies
python dependency-checker-script.py --analyze --project-root .
# Check compatibility
python dependency-checker-script.py --check-compatibility \
--new-deps "httpx>=0.27.0,pydantic-settings>=2.0"
# Detect conflicts
python dependency-checker-script.py --check-conflicts \
--new-deps "package1,package2"
# Generate full report
python dependency-checker-script.py --full-report \
--output dependency-report.md
Features:
Location: .claude/skills/dependency-analyzer/compatibility-matrix.md
Contents:
Input: Feature requires webhook notifications with async HTTP
Process:
requests==2.31.0httpx for async supporthttpx>=0.27.0 compatible with Python 3.11+Output:
### New Dependencies Required
- httpx>=0.27.0 - Async HTTP client for webhook delivery
### Compatibility: ✅ Compatible
- Python 3.11+ supported
- No conflicts with existing dependencies
### Installation:
```bash
pip install httpx>=0.27.0
Input: Feature requires package-a>=2.0 but existing package-b requires package-a<2.0
Process:
package-b==1.5 requires package-a<2.0package-a>=2.0package-b>=2.0 supports package-a>=2.0Output:
### Conflicts Detected
**Conflict**: package-a version conflict
- Feature requires: package-a>=2.0
- package-b==1.5 requires: package-a<2.0
**Resolution Strategy**:
1. Upgrade package-b to 2.0.0 (supports package-a>=2.0)
2. Update requirements.txt:
- package-a>=2.0
- package-b>=2.0
**Validation**:
```bash
pip install --dry-run package-a>=2.0 package-b>=2.0
## Integration with Feature Implementation Flow
**Input**: Analysis document with dependencies section
**Process**:
1. Dependency Manager agent activates this skill
2. Skill parses current dependencies from project files
3. Skill extracts new dependencies from analysis document
4. Skill checks compatibility and detects conflicts
5. Skill generates structured dependency report
**Output**: Dependency analysis section for PRP
**Next Step**: Design Orchestrator synthesizes dependency analysis into complete PRP
## Error Handling
### Common Errors
**Missing dependency file**:
Error: No dependency configuration file found Resolution: Create requirements.txt or pyproject.toml
**Invalid version specifier**:
Error: Invalid version specifier "package>=abc" Resolution: Use valid version format (e.g., "package>=1.0.0")
**Conflict detected**:
Warning: Version conflict detected Action: Review conflict report and apply resolution strategy
**PyPI query failure**:
Error: Failed to query PyPI for package "xyz" Resolution: Check network connectivity or package name spelling
## Advanced Features
### Custom Compatibility Rules
Define project-specific compatibility rules in `compatibility-matrix.md`:
```yaml
# Example rule
package-a:
python: ">=3.11"
conflicts:
- package-b<2.0
recommends:
- package-c>=1.0
Generate visual dependency trees for documentation:
python dependency-checker-script.py --analyze --format tree --output tree.txt
Output:
myproject==1.0.0
├── requests==2.31.0
│ ├── urllib3>=1.21.1,<3
│ ├── certifi>=2017.4.17
│ └── charset-normalizer>=2,<4
├── pydantic==2.5.0
│ ├── typing-extensions>=4.6.1
│ └── annotated-types>=0.4.0
└── httpx==0.27.2
├── httpcore==1.0.2
├── certifi
└── sniffio
Version: 2.0.0 Agent: @dependency-manager Phase: 2 (Design & Planning) Created: 2025-10-29