What is dependency-upgrade?
Covers changelog review, breaking-change detection, and verification. Stack-agnostic.
event4u-app/agent-config
Use when upgrading dependencies — 'update framework X', 'bump runtime version', or 'upgrade packages'. Covers changelog review, breaking-change detection, and verification. Stack-agnostic.
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/dependency-upgrade"Quick start
Install it or open the source, trigger it with a clear task, then follow the source workflow.
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/dependency-upgrade"Use dependency-upgrade to help me with: [describe your task]. Before you begin, tell me what input you need, the steps you will follow, and the expected output.
No structured workflow was detected; follow the original SKILL.md below.
Continue to the workflowDirect answers
Covers changelog review, breaking-change detection, and verification. Stack-agnostic.
It is relevant to workflows involving Engineering.
SkillSignal detected this source-specific command: npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/dependency-upgrade". Inspect the repository and command before running it.
The upstream source does not declare a dedicated Agent platform.
Static analysis detected exec-script signals. Review the cited source lines before installing; these signals are not a security audit.
This page combines upstream documentation with deterministic repository, quality, and static-risk signals. It is not described as a manual test or security review.
SkillSignal brief
Covers changelog review, breaking-change detection, and verification. Stack-agnostic.
Useful in these contexts
Core capabilities
Distilled from the source
About 7 min · 13 sections
Installing new dependencies for the first time
Routine code changes unrelated to package versions
Updated dependency with version constraint change
Breaking changes addressed with code modifications
Test results confirming compatibility
Quality breakdown
Based on traceable docs and repository signals; stars are not treated as quality.
Compare before choosing
These links are selected from shared tasks, functions, stacks, platforms, and same-name variants. Compare the source owner, documentation, permissions, and maintenance signals.
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.
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
Grounded design brief from the adopted corpus — style, WCAG-checked color tokens, typography, layout pattern, anti-patterns. Use on ui-design-brief or any which-style/palette/font/chart decision.
Use BEFORE writing or editing any non-trivial UI — inventories components, design tokens, shadcn primitives, and reusable patterns into state.ui_audit. Hard gate for the ui directive set.
Use BEFORE writing/changing tests, adding mocks, or test-only methods on production classes — vs mocking-the-mock, production pollution, partial mocks, and overfit/tautological assertions
Use this skill when upgrading project dependencies on any stack — Composer (PHP), npm / pnpm / yarn (JS/TS), pip / poetry / uv (Python), go.mod (Go), Cargo (Rust), or any other language-level package manager.
Do NOT use when:
Before upgrading:
Categorize changes needed:
| Category | Action |
|---|---|
| No breaking changes | Upgrade directly |
| Deprecation warnings | Upgrade, then fix deprecations |
| Breaking changes (small) | Fix code, then upgrade |
| Breaking changes (large) | Create a roadmap, upgrade in steps |
| Peer dependency conflicts | Resolve conflicts before upgrading |
# Check outdated packages
composer outdated
# Upgrade a specific package
composer update vendor/package
# Upgrade with version constraint change
composer require vendor/package:^3.0
# Dry-run to see what would change
composer update vendor/package --dry-run
# Check outdated packages
npm outdated
# Upgrade a specific package
npm update package-name
# Upgrade to a new major version
npm install package-name@latest
# Check for vulnerabilities
npm audit
# Check outdated packages
pip list --outdated # pip
poetry show --outdated # poetry
uv pip list --outdated # uv
# Upgrade a specific package (same shape for composer require / npm install pkg@latest)
pip install --upgrade package-name
poetry update package-name
uv pip install --upgrade package-name
# Check for vulnerabilities
pip-audit # via pip-audit
safety check # via safety
# List available updates
go list -u -m all
# Upgrade a specific module
go get example.com/pkg@latest
go get example.com/pkg@v1.2.3
# Tidy after upgrade
go mod tidy
# Check for known vulnerabilities
govulncheck ./...
# Check outdated
cargo outdated # requires cargo-outdated
# Upgrade
cargo update -p crate-name
cargo add crate-name@1.2 # edition-aware add
# Audit
cargo audit # requires cargo-audit
After upgrading, run the project's full verification pipeline. The exact commands depend on the stack — resolve via the project's Taskfile.yml, package.json scripts, composer.json scripts, Makefile, or the quality-tools skill.
| Stack | Type-check | Lint / autofix | Tests |
|---|---|---|---|
| PHP / Laravel | vendor/bin/phpstan analyse | vendor/bin/rector process + vendor/bin/ecs check --fix | php artisan test (or vendor/bin/pest) |
| TypeScript | tsc --noEmit | eslint --fix + prettier --write | pnpm test (or vitest run, jest) |
| Python | mypy / pyright | ruff check --fix + ruff format | pytest |
| Go | go vet ./... | golangci-lint run --fix | go test ./... |
| Rust | cargo check | cargo clippy --fix + cargo fmt | cargo test |
Re-run the type-checker after any auto-fixer that can rewrite types (Rector for PHP, eslint --fix for TS).
chore: upgrade vendor/package from 2.x to 3.xWhen upgrading multiple packages:
laravel/framework + laravel/*; @nestjs/core + @nestjs/*; react + react-dom; next + @next/*).| Pitfall | Prevention |
|---|---|
| Upgrading without reading changelog | Always read the changelog first |
| Upgrading all packages at once | One package at a time (or tightly coupled groups) |
Trusting composer update blindly | Use --dry-run first, review changes |
| Ignoring deprecation warnings | Fix deprecations before they become errors |
| Skipping tests after upgrade | Full test suite + project type-checker (PHPStan / tsc / mypy / go vet / cargo check) after every upgrade |
| Lock file conflicts | Coordinate upgrades with the team |
| Constraint | Meaning | When to use |
|---|---|---|
^2.0 | >=2.0.0 <3.0.0 | Default — allows minor + patch updates |
~2.1 | >=2.1.0 <2.2.0 | Strict — allows only patch updates |
2.1.* | >=2.1.0 <2.2.0 | Same as ~2.1 |
>=2.0 <2.5 | Explicit range | When you know specific versions work |
dev-main | Latest commit | Never in production — only for development |
For security patches:
composer audit / npm audit regularly.Before adding a new dependency (not just upgrading), run a security audit:
# Check for known vulnerabilities in current dependencies
composer audit
# After adding a new package, re-check
composer require vendor/new-package
composer audit
# Check before install
npm audit
# After adding, re-check
npm install new-package
npm audit
| Check | How | Why |
|---|---|---|
| Known CVEs | composer audit / npm audit | Direct vulnerabilities |
| Maintenance status | GitHub: last commit, open issues | Abandoned packages are a risk |
| Dependency tree | composer show -t vendor/pkg / npm ls new-package | Transitive dependencies may conflict |
| License compatibility | composer licenses / check package.json | Legal compliance |
| Bundle size (npm) | npx bundlephobia new-package | Impact on frontend bundle |
When composer require or npm install fails with conflicts:
composer why vendor/conflicting-pkg.--dry-run first — composer require vendor/pkg --dry-run.--ignore-platform-reqs in production — only for investigation.CVE scanning (above) catches known-vulnerable versions. It does not catch a compromised update: a trusted package with a legitimate history ships a normal-looking version bump that quietly adds data-exfiltration or other harmful behavior. This is how the biggest supply-chain attacks landed — event-stream (wallet stealer as a new transitive dep), ua-parser-js (preinstall miner + credential stealer), @solana/web3.js (key exfil hidden inside expected network calls), chalk/debug + 16 (browser crypto-drainer, 2B weekly downloads), the self-propagating Shai-Hulud worm (added a .github/workflows + secret-scanning postinstall), xz-utils (backdoor in the released tarball, not the git repo). Routine updates slip through because the version looks normal and install runs scripts across the whole transitive tree silently — this is the exact lethal-trifecta-guard egress shape.
Run this audit during/after any add or upgrade, then surface findings to the user and hold pending confirmation (per active-remediation — a live supply-chain risk is surfaced, never silently accepted):
npm install --ignore-scripts (npm v12 defaults to this), composer install --no-scripts, pip install --only-binary :all: (wheels only — no sdist build code) — so install-time code (the #1 RCE vector) cannot run before inspection.scripts block (any newly-added pre/post/install hook), the dependency tree (any new transitive dependency), and — where feasible — the published tarball vs the git source (xz hid in the tarball).fetch/net/dns/http), child_process/shell, env/secret/credential reads, filesystem writes, obfuscated/minified blobs, a .github/workflows file? Use socket / guarddog <eco> scan <pkg>@<ver> if available; else read the delta.npm audit signatures (flag a dep that had provenance and lost it — a hallmark of a token-theft publish); osv-scanner --lockfile=… and the GitHub Advisory / Socket / Snyk malware feeds against the newly-resolved versions.Surface to the user any: new install script · new transitive dep · new network endpoint / secret read · obfuscated blob · lost provenance · advisory/malware hit — with the version delta and the purpose-vs-behavior verdict, and hold the update until they decide. Never auto-accept a bump that introduced an unexplained capability.
audit for CVEs.audit (CVE) ≠ malware scan. npm/composer audit only knows published vulnerabilities; a fresh compromised version has no CVE yet. The capability/behavior diff + purpose-vs-behavior check is what catches zero-hour malware.composer update, npm update, poetry update).composer.lock or package-lock.json.dev-* versions in production branches.