Agent skill

dependency-resolver

Automated dependency conflict detection and resolution. Detects local vs CI environment mismatches, compares versions, and generates pinning recommendations. Run as pre-push check to catch issues early.

Stars 45
Forks 28

Install this agent skill to your Project

npx add-skill https://github.com/rysweet/amplihack/tree/main/.claude/skills/dependency-resolver

SKILL.md

Dependency Resolver Skill

Purpose

This skill detects and resolves local vs CI environment mismatches BEFORE push, preventing the 20-45 minute debug cycles documented in DISCOVERIES.md ("CI Failure Resolution Process Analysis" entry).

The skill addresses a critical gap: existing tools (ci-diagnostic-workflow, pre-commit-diagnostic) fix issues AFTER they occur. This skill catches mismatches BEFORE push.

Problem Statement

From DISCOVERIES.md analysis:

  • Environment mismatches (Local Python 3.12 vs CI Python 3.11) cause 20-25 min investigation overhead
  • Version drift (local ruff 0.12.7 vs CI ruff 0.13.0) causes silent failures
  • 45-minute complex debugging sessions traced to dependency conflicts
  • No automated pre-push environment comparison exists

Execution Instructions

When activated, execute these steps autonomously:

Step 1: Collect Local Environment

bash
# Python version
python --version

# Installed tool versions
pip show ruff black pyright mypy 2>/dev/null | grep -E "^(Name|Version):"

# Pre-commit hook versions (if available)
cat .pre-commit-config.yaml 2>/dev/null | grep -E "rev:|repo:"

Step 2: Read CI Configuration

Read(file_path=".github/workflows/ci.yml")
Read(file_path="pyproject.toml")
Read(file_path=".pre-commit-config.yaml")

Extract:

  • CI Python version (look for python-version:)
  • Required tool versions from pyproject.toml
  • Pre-commit hook versions from .pre-commit-config.yaml

Step 3: Compare Environments

Build comparison table:

Component Local CI Status
Python 3.12.10 3.11 MISMATCH
ruff 0.12.7 0.13.0 MISMATCH
black 24.3.0 24.3.0 OK

Step 4: Generate Recommendations

For each mismatch, provide actionable fix:

Python Version Mismatch:

bash
# Option A: Use pyenv to match CI version
pyenv install 3.11
pyenv local 3.11

# Option B: Update CI to match local (if local is intentional)
# Edit .github/workflows/ci.yml line 33

Tool Version Mismatch:

bash
# Pin versions in pyproject.toml
pip install ruff==0.13.0

# Or update pre-commit hooks
pre-commit autoupdate

Step 5: Auto-Fix (When Requested)

If user requests auto-fix:

  1. Update .pre-commit-config.yaml with latest versions
  2. Run pre-commit autoupdate
  3. Regenerate requirements.txt if applicable
  4. Stage changes for commit

Integration Points

With fix-agent

Integrates with fix-agent templates for:

  • Import/dependency fixes (Template 1)
  • Configuration fixes (Template 2)
  • CI/CD fixes (Template 4)

With pre-commit-diagnostic

Hand-off when pre-commit failures detected after version sync.

With ci-diagnostic-workflow

Hand-off for post-push CI failures not caught by pre-push validation.

Common Mismatch Patterns

Pattern 1: Python Minor Version Drift

Symptoms:

  • Type errors only in CI
  • Import errors with newer syntax
  • f-string issues

Fix:

bash
# Check CI Python version
grep -r "python-version" .github/workflows/

# Match locally or update CI

Pattern 2: Linter Version Drift

Symptoms:

  • "Works locally but CI fails on linting"
  • New rules in CI not enforced locally
  • Formatting differences

Fix:

bash
# Sync pre-commit hooks to latest
pre-commit autoupdate

# Or pin specific version
pip install ruff==<ci-version>

Pattern 3: Missing Dependencies

Symptoms:

  • ModuleNotFoundError in CI
  • Optional dependencies not installed

Fix:

bash
# Install all optional dependencies
pip install -e ".[dev]"

# Ensure requirements.txt is up to date
pip freeze > requirements.txt

Output Format

markdown
## Dependency Resolver Report

### Environment Comparison

| Component | Local   | CI      | Status   |
| --------- | ------- | ------- | -------- |
| Python    | 3.12.10 | 3.11    | MISMATCH |
| ruff      | 0.12.7  | 0.13.0  | MISMATCH |
| pyright   | 1.1.350 | 1.1.350 | OK       |

### Mismatches Found: 2

### Recommendations

1. **Python Version** (CRITICAL)
   - Local: 3.12.10, CI: 3.11
   - Action: Consider using pyenv to test with CI version before push
   - Risk: Type syntax differences may cause failures

2. **ruff Version** (WARNING)
   - Local: 0.12.7, CI: 0.13.0
   - Action: Run `pip install ruff==0.13.0` or `pre-commit autoupdate`
   - Risk: New rules may flag previously passing code

### Quick Fix Commands

```bash
# Sync ruff version
pip install ruff==0.13.0

# Update all pre-commit hooks
pre-commit autoupdate

# Re-run pre-commit to validate
pre-commit run --all-files
```

### Status: ACTION REQUIRED

Push may fail due to environment mismatches.
Run recommended fixes before pushing.

When to Use This Skill

Trigger Signs:

  • "CI is failing but it works locally"
  • "Linting passes here but not in CI"
  • Before pushing after long development session
  • After updating local Python or tools
  • When onboarding to new project

Not Needed When:

  • CI already passing consistently
  • Environment just synced
  • Only editing documentation

Related Resources

  • DISCOVERIES.md: CI Failure Resolution Process Analysis (lines 836-914)
  • fix-agent.md: Templates for import/config/CI fixes
  • ci-diagnostic-workflow.md: Post-push CI failure resolution
  • pre-commit-diagnostic.md: Pre-commit hook failures
  • .github/workflows/ci.yml: CI configuration source of truth

Philosophy Alignment

Ruthless Simplicity

  • Procedural approach: Five clear steps, no unnecessary abstraction
  • Direct shell commands: Users can copy-paste recommendations
  • Focused scope: Only detects environment mismatches, delegates fixes to existing agents

Zero-BS Implementation

  • Actionable output: Every recommendation includes exact commands
  • No theoretical advice: Specific version numbers and file paths
  • Pre-push prevention: Catches issues before wasted CI cycles

Modular Design

  • Clean hand-offs: Integrates with fix-agent, pre-commit-diagnostic, ci-diagnostic-workflow
  • Single responsibility: Detection and comparison only; fixes delegated to specialized agents
  • Regeneratable: Can be rebuilt from this specification

Expand your agent's capabilities with these related and highly-rated skills.

rysweet/amplihack

chemist-analyst

Analyzes events through chemistry lens using molecular structure, reaction mechanisms, thermodynamics, kinetics, and analytical techniques (spectroscopy, chromatography, mass spectrometry). Provides insights on chemical processes, material properties, reaction pathways, synthesis, and analytical methods. Use when: Chemical reactions, material analysis, synthesis planning, process optimization, environmental chemistry. Evaluates: Molecular structure, reaction mechanisms, yield, selectivity, safety, environmental impact.

45 28
Explore
rysweet/amplihack

learning-path-builder

Creates personalized learning paths for technologies, frameworks, or concepts. Use for user-interactive session only for onboarding new technologies, hackathon skill-building, or personal development planning. Not for use in automated development or investigation. Sequences resources (docs, tutorials, exercises) based on current skill level and learning goals. Adapts to learning style: hands-on, theory-first, project-based.

45 28
Explore
rysweet/amplihack

gh-work-report

Generates comprehensive GitHub activity reports across all authenticated accounts. Gathers repos, PRs, features, and themes for configurable time periods (1/5/7/30/90 days). Produces shareable markdown with tables, mermaid charts, and executive summaries. Can create a private repo with GitHub Actions automation and GitHub Pages aggregation site. Use when: "github report", "work report", "activity summary", "what did I work on", "gh-work-report", "show my github activity".

45 28
Explore
rysweet/amplihack

pr-review-assistant

Philosophy-aware PR reviews checking alignment with amplihack principles. Use when reviewing PRs to ensure ruthless simplicity, modular design, and zero-BS implementation. Suggests simplifications, identifies over-engineering, verifies brick module structure. Posts detailed, constructive review comments with specific file:line references.

45 28
Explore
rysweet/amplihack

code-smell-detector

Identifies anti-patterns specific to amplihack philosophy. Use when reviewing code for quality issues or refactoring. Detects: over-abstraction, complex inheritance, large functions (>50 lines), tight coupling, missing __all__ exports. Provides specific fixes and explanations for each smell.

45 28
Explore
rysweet/amplihack

biologist-analyst

Analyzes living systems and biological phenomena through biological lens using evolution, molecular biology, ecology, and systems biology frameworks. Provides insights on mechanisms, adaptations, interactions, and life processes. Use when: Biological systems, health issues, evolutionary questions, ecological problems, biotechnology. Evaluates: Function, structure, heredity, evolution, interactions, molecular mechanisms.

45 28
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results