Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
日本語の概要は準備中です。原文の説明を表示しています。
Use when upgrading dependencies — 'update framework X', 'bump runtime version', or 'upgrade packages'. Covers changelog review, breaking-change detection, and verification. Stack-agnostic.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
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:
NEVER NAME AN EDIT SITE BEFORE ASKING WHERE THE VERSION IS DECLARED.
IN A CATALOG WORKSPACE THE MEMBER MANIFEST IS THE WRONG FILE:
THE VERSION IS ONE ROOT LINE WITH N REFERENTS.
A member package.json is the declaration site in an ordinary repository and
not in a workspace using a catalog. There, the member reads catalog: and
the range lives once in the workspace definition — editing the member either
does nothing or silently diverges from the catalog.
Ask in this order, and stop at the first that answers:
pnpm-workspace.yaml catalogs: /
catalog:, or the equivalent in another manager's workspace definition. If
the member's range starts with catalog:, this is the edit site. Name the
catalog (default included) in the guidance, not the member.overrides / resolutions / pnpm.overrides. A
member edit under one of these is overridden at install time.A repository with no catalog and no root pin behaves exactly as before; this step adds a lookup, not a change of default.
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.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
日本語の概要は準備中です。原文の説明を表示しています。
Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'.
日本語の概要は準備中です。原文の説明を表示しています。
Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.
日本語の概要は準備中です。原文の説明を表示しています。
Adversarial critique — devil's advocate, stress-test, honest teardown ('poke holes', 'be brutal', 'was hältst du davon'); explicit request only. Routine code or design review → code-review.
日本語の概要は準備中です。原文の説明を表示しています。
Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.
日本語の概要は準備中です。原文の説明を表示しています。
Use for an adversarial red-team / blue-team / auditor review of an AI agent's CONFIG + behaviour (rules, skills, MCP, hooks, permissions) — attack-chain → defensive-gap list, not a code audit.
日本語の概要は準備中です。原文の説明を表示しています。