Agent Skillswshobson/agents › dependency-upgrade

dependency-upgrade

GitHub

管理框架及依赖的大版本升级,涵盖兼容性分析、语义化版本审查、分阶段滚动发布策略及全面测试验证。

plugins/framework-migration/skills/dependency-upgrade/SKILL.md wshobson/agents

Trigger Scenarios

升级主要框架版本 更新存在安全漏洞的依赖 解决依赖冲突 制定增量升级路径

Install

npx skills add wshobson/agents --skill dependency-upgrade -g -y
More Options

Non-standard path

npx skills add https://github.com/wshobson/agents/tree/main/plugins/framework-migration/skills/dependency-upgrade -g -y

Use without installing

npx skills use wshobson/agents@dependency-upgrade

指定 Agent (Claude Code)

npx skills add wshobson/agents --skill dependency-upgrade -a claude-code -g -y

安装 repo 全部 skill

npx skills add wshobson/agents --all -g -y

预览 repo 内 skill

npx skills add wshobson/agents --list

SKILL.md

Frontmatter
{
    "name": "dependency-upgrade",
    "description": "Manage major dependency version upgrades with compatibility analysis, staged rollout, and comprehensive testing. Use when upgrading framework versions, updating major dependencies, or managing breaking changes in libraries."
}

Dependency Upgrade

Master major dependency version upgrades, compatibility analysis, staged upgrade strategies, and comprehensive testing approaches.

When to Use This Skill

  • Upgrading major framework versions
  • Updating security-vulnerable dependencies
  • Modernizing legacy dependencies
  • Resolving dependency conflicts
  • Planning incremental upgrade paths
  • Testing compatibility matrices
  • Automating dependency updates

Semantic Versioning Review

MAJOR.MINOR.PATCH (e.g., 2.3.1)

MAJOR: Breaking changes
MINOR: New features, backward compatible
PATCH: Bug fixes, backward compatible

^2.3.1 = >=2.3.1 <3.0.0 (minor updates)
~2.3.1 = >=2.3.1 <2.4.0 (patch updates)
2.3.1 = exact version

Dependency Analysis

Audit Dependencies

# npm
npm outdated
npm audit
npm audit fix

# yarn
yarn outdated
yarn audit

# Check for major updates
npx npm-check-updates
npx npm-check-updates -u  # Update package.json

Analyze Dependency Tree

# See why a package is installed
npm ls package-name
yarn why package-name

# Find duplicate packages
npm dedupe
yarn dedupe

# Visualize dependencies
npx madge --image graph.png src/

Compatibility Matrix

// compatibility-matrix.js
const compatibilityMatrix = {
  react: {
    "16.x": {
      "react-dom": "^16.0.0",
      "react-router-dom": "^5.0.0",
      "@testing-library/react": "^11.0.0",
    },
    "17.x": {
      "react-dom": "^17.0.0",
      "react-router-dom": "^5.0.0 || ^6.0.0",
      "@testing-library/react": "^12.0.0",
    },
    "18.x": {
      "react-dom": "^18.0.0",
      "react-router-dom": "^6.0.0",
      "@testing-library/react": "^13.0.0",
    },
  },
};

function checkCompatibility(packages) {
  // Validate package versions against matrix
}

Staged Upgrade Strategy

Phase 1: Planning

# 1. Identify current versions
npm list --depth=0

# 2. Check for breaking changes
# Read CHANGELOG.md and MIGRATION.md

# 3. Create upgrade plan
echo "Upgrade order:
1. TypeScript
2. React
3. React Router
4. Testing libraries
5. Build tools" > UPGRADE_PLAN.md

Phase 2: Incremental Updates

# Don't upgrade everything at once!

# Step 1: Update TypeScript
npm install typescript@latest

# Test
npm run test
npm run build

# Step 2: Update React (one major version at a time)
npm install react@17 react-dom@17

# Test again
npm run test

# Step 3: Continue with other packages
npm install react-router-dom@6

# And so on...

Phase 3: Validation

// tests/compatibility.test.js
describe("Dependency Compatibility", () => {
  it("should have compatible React versions", () => {
    const reactVersion = require("react/package.json").version;
    const reactDomVersion = require("react-dom/package.json").version;

    expect(reactVersion).toBe(reactDomVersion);
  });

  it("should not have peer dependency warnings", () => {
    // Run npm ls and check for warnings
  });
});

Breaking Change Handling

Identifying Breaking Changes

# Check the changelog directly
curl https://raw.githubusercontent.com/facebook/react/master/CHANGELOG.md

Codemod for Automated Fixes

# Run jscodeshift with transform URL
npx jscodeshift -t <transform-url> <path>

# Example: Rename unsafe lifecycle methods
npx jscodeshift -t https://raw.githubusercontent.com/reactjs/react-codemod/master/transforms/rename-unsafe-lifecycles.js src/

# For TypeScript files
npx jscodeshift -t https://raw.githubusercontent.com/reactjs/react-codemod/master/transforms/rename-unsafe-lifecycles.js --parser=tsx src/

# Dry run to preview changes
npx jscodeshift -t https://raw.githubusercontent.com/reactjs/react-codemod/master/transforms/rename-unsafe-lifecycles.js --dry src/

Custom Migration Script

// migration-script.js
const fs = require("fs");
const glob = require("glob");

glob("src/**/*.tsx", (err, files) => {
  files.forEach((file) => {
    let content = fs.readFileSync(file, "utf8");

    // Replace old API with new API
    content = content.replace(
      /componentWillMount/g,
      "UNSAFE_componentWillMount",
    );

    // Update imports
    content = content.replace(
      /import { Component } from 'react'/g,
      "import React, { Component } from 'react'",
    );

    fs.writeFileSync(file, content);
  });
});

Testing Strategy

Unit Tests

// Ensure tests pass before and after upgrade
npm run test

// Update test utilities if needed
npm install @testing-library/react@latest

Integration Tests

// tests/integration/app.test.js
describe("App Integration", () => {
  it("should render without crashing", () => {
    render(<App />);
  });

  it("should handle navigation", () => {
    const { getByText } = render(<App />);
    fireEvent.click(getByText("Navigate"));
    expect(screen.getByText("New Page")).toBeInTheDocument();
  });
});

Visual Regression Tests

// visual-regression.test.js
describe("Visual Regression", () => {
  it("should match snapshot", () => {
    const { container } = render(<App />);
    expect(container.firstChild).toMatchSnapshot();
  });
});

E2E Tests

// cypress/e2e/app.cy.js
describe("E2E Tests", () => {
  it("should complete user flow", () => {
    cy.visit("/");
    cy.get('[data-testid="login"]').click();
    cy.get('input[name="email"]').type("user@example.com");
    cy.get('button[type="submit"]').click();
    cy.url().should("include", "/dashboard");
  });
});

Automated Dependency Updates

Renovate Configuration

// renovate.json
{
  "extends": ["config:base"],
  "packageRules": [
    {
      "matchUpdateTypes": ["minor", "patch"],
      "automerge": true
    },
    {
      "matchUpdateTypes": ["major"],
      "automerge": false,
      "labels": ["major-update"]
    }
  ],
  "schedule": ["before 3am on Monday"],
  "timezone": "America/New_York"
}

Dependabot Configuration

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 5
    reviewers:
      - "team-leads"
    commit-message:
      prefix: "chore"
      include: "scope"

Rollback Plan

// rollback.sh
#!/bin/bash

# Save current state
git stash
git checkout -b upgrade-branch

# Attempt upgrade
npm install package@latest

# Run tests
if npm run test; then
  echo "Upgrade successful"
  git add package.json package-lock.json
  git commit -m "chore: upgrade package"
else
  echo "Upgrade failed, rolling back"
  git checkout main
  git branch -D upgrade-branch
  npm install  # Restore from package-lock.json
fi

Common Upgrade Patterns

Lock File Management

# npm
npm install --package-lock-only  # Update lock file only
npm ci  # Clean install from lock file

# yarn
yarn install --frozen-lockfile  # CI mode
yarn upgrade-interactive  # Interactive upgrades

Peer Dependency Resolution

# npm 7+: strict peer dependencies
npm install --legacy-peer-deps  # Ignore peer deps

# npm 8+: override peer dependencies
npm install --force

Workspace Upgrades

# Update all workspace packages
npm install --workspaces

# Update specific workspace
npm install package@latest --workspace=packages/app

Version History

  • 367cb6a Current 2026-08-20 06:51

Same Skill Collection

plugins/accessibility-compliance/skills/screen-reader-testing/SKILL.md
plugins/accessibility-compliance/skills/wcag-audit-patterns/SKILL.md
plugins/agent-teams/skills/multi-reviewer-patterns/SKILL.md
plugins/agent-teams/skills/parallel-debugging/SKILL.md
plugins/agent-teams/skills/task-coordination-strategies/SKILL.md
plugins/api-scaffolding/skills/fastapi-templates/SKILL.md
plugins/avoid-ai-writing/skills/avoid-ai-writing/SKILL.md
plugins/backend-development/skills/api-design-principles/SKILL.md
plugins/backend-development/skills/architecture-patterns/SKILL.md
plugins/backend-development/skills/cqrs-implementation/SKILL.md
plugins/backend-development/skills/event-store-design/SKILL.md
plugins/backend-development/skills/microservices-patterns/SKILL.md
plugins/backend-development/skills/projection-patterns/SKILL.md
plugins/backend-development/skills/temporal-python-testing/SKILL.md
plugins/backend-development/skills/workflow-orchestration-patterns/SKILL.md
plugins/before-you-build/skills/before-you-build/SKILL.md
plugins/block-no-verify/skills/block-no-verify-hook/SKILL.md
plugins/blockchain-web3/skills/defi-protocol-templates/SKILL.md
plugins/blockchain-web3/skills/nft-standards/SKILL.md
plugins/blockchain-web3/skills/solidity-security/SKILL.md
plugins/blockchain-web3/skills/web3-testing/SKILL.md
plugins/business-analytics/skills/data-storytelling/SKILL.md
plugins/business-analytics/skills/kpi-dashboard-design/SKILL.md
plugins/cicd-automation/skills/deployment-pipeline-design/SKILL.md
plugins/cicd-automation/skills/github-actions-templates/SKILL.md
plugins/cicd-automation/skills/gitlab-ci-patterns/SKILL.md
plugins/cicd-automation/skills/secrets-management/SKILL.md
plugins/cloud-infrastructure/skills/cost-optimization/SKILL.md
plugins/cloud-infrastructure/skills/hybrid-cloud-networking/SKILL.md
plugins/cloud-infrastructure/skills/istio-traffic-management/SKILL.md
plugins/cloud-infrastructure/skills/linkerd-patterns/SKILL.md
plugins/cloud-infrastructure/skills/mtls-configuration/SKILL.md
plugins/cloud-infrastructure/skills/multi-cloud-architecture/SKILL.md
plugins/cloud-infrastructure/skills/service-mesh-observability/SKILL.md
plugins/cloud-infrastructure/skills/terraform-module-library/SKILL.md
plugins/conductor/skills/track-management/SKILL.md
plugins/conductor/skills/workflow-patterns/SKILL.md
plugins/data-engineering/skills/airflow-dag-patterns/SKILL.md
plugins/data-engineering/skills/data-quality-frameworks/SKILL.md
plugins/data-engineering/skills/dbt-transformation-patterns/SKILL.md
plugins/data-engineering/skills/spark-optimization/SKILL.md
plugins/database-design/skills/postgresql-table-design/SKILL.md
plugins/database-design/skills/postgresql/SKILL.md
plugins/developer-essentials/skills/auth-implementation-patterns/SKILL.md
plugins/developer-essentials/skills/bazel-build-optimization/SKILL.md
plugins/developer-essentials/skills/code-review-excellence/SKILL.md
plugins/developer-essentials/skills/debugging-strategies/SKILL.md
plugins/developer-essentials/skills/e2e-testing-patterns/SKILL.md
plugins/developer-essentials/skills/error-handling-patterns/SKILL.md
plugins/developer-essentials/skills/git-advanced-workflows/SKILL.md

Metadata

Files
0
Version
a30778f
Hash
4cf4ff9b
Indexed
2026-08-20 06:51

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-18 06:06
浙ICP备14020137号-1