brainstorming
MUST USE when the user wants new features, behavior changes, refactoring with new capabilities, or architecture decisions and no…
MUST USE when updating, migrating, or auditing project dependencies: upgrading packages, fixing security vulnerabilities (CVEs), resolving breaking changes, migrating to new major versions, or auditing outdated dependencies. Enforces incremental updates with verification at each
$ npx -y skills add REPOZY/superpowers-optimized --skill dependency-management --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/dependency-managementContext preview
The summary Claude sees to decide when to auto-load this skill.
MUST USE when updating, migrating, or auditing project dependencies: upgrading packages, fixing security vulnerabilities (CVEs), resolving breaking changes, migrating to new major versions, or auditing outdated dependencies. Enforces incremental updates with verification at each
name: dependency-management description: > MUST USE when updating, migrating, or auditing project dependencies: upgrading packages, fixing security vulnerabilities (CVEs), resolving breaking changes, migrating to new major versions, or auditing outdated dependencies. Enforces incremental updates with verification at each step. Distinct from systematic-debugging (which fixes application bugs) and refactoring (which restructures application code). Triggers on: "update dependencies", "upgrade packages", "npm update", "pip upgrade", "outdated", "vulnerability", "CVE", "security advisory", "breaking change", "migration guide", "dependency conflict", "peer dependency", "update to latest", "audit dependencies", "npm audit", "dependabot". Routed by using-superpowers, or invoke directly via /dependency-management.
Update one thing at a time. Verify after each. Never batch major upgrades.
Dependency updates look simple — bump a version number, run install, done. In practice, they're one of the most common sources of hard-to-diagnose breakage: silent API changes, peer dependency conflicts, transitive dependency resolution shifts, and build tool incompatibilities. This skill enforces a structured approach that catches breakage at the smallest possible blast radius.
Before changing any versions, understand what needs updating and why.
1. **List outdated dependencies:**
2. **Categorize each update by urgency:**
3. **Prioritize:** Security > Breaking (if blocking other work) > Feature. Don't update everything at once — pick the highest-priority items first.
For each dependency to update (especially major versions):
1. **Read the changelog/migration guide.** Look for:
2. **Search the codebase for usage of changed APIs.** For each renamed/removed API, run separate searches for:
Do not assume a single search caught everything — a function name may appear as a type annotation, a string key, or in a mock, each of which requires a separate pattern.
3. **Check peer dependency compatibility:** Will this update conflict with other installed packages? The package manager usually warns, but check proactively for frameworks with tight coupling (React + React DOM, Angular packages, etc.).
4. **Classify the risk level:**
One dependency at a time. Verify after each.
1. **Update the dependency:**
2. **Run the full test suite.** If tests fail:
3. **Run the build.** Type errors, import resolution failures, and build tool incompatibilities often surface here, not in tests.
4. **Smoke test at runtime** if the dependency affects runtime behavior (not just types/build). Start the app, hit the affected codepath, verify it works.
5. **Stage the changes.** When the user asks for a commit, use a message that names the package and version: `chore(deps): upgrade lodash 4.17.20 → 4.17.21 (CVE-2021-23337)`. Do not auto-commit unless explicitly asked.
6. **Repeat** for the next dependency.
After all planned updates are applied:
1. **Full test suite green** — no skipped, no flaky. 2. **Build succeeds** — no type errors, no unresolved imports. 3. **Lockfile committed** — the lockfile reflects all updates and nothing else. 4. **No unrelated changes** — dependency updates should not include code changes that aren't required by the update. Refactoring "while I'm here" belongs in a separate commit.
When a CVE or security advisory requires urgent action:
1. **Assess exploitability:** Does the vulnerability affect how the dependency is used in this project? A ReDoS in a regex function you never call is low urgency regardless of CVSS score. 2. **Check for patch availability:** Is there a patched version? If not, is there a workaround? 3. **If patch exists:** Follow the standard update flow (Phase 2 → 3 → 4). 4. **If no patch:** Document in `known-issues.md` with the CVE
The production-grade fork of obra/superpowers — same trusted workflow, dramatically leaner, safer, and more intelligent.
MUST USE when the user wants new features, behavior changes, refactoring with new capabilities, or architecture decisions and no…
Creates minimal, high-signal CLAUDE.md and AGENTS.md context files based on empirical best practices. Invoke on /init command,…
Use in long or noisy sessions to persist durable state across session boundaries via state.md. Also generates project-map.md when…
Use BEFORE brainstorming when facing a complex architectural, technology, or design decision where the options are not yet…
Use when 2+ tasks are independent and can run concurrently without file or state conflicts or sequential dependencies. Triggers…
Maintains a project-specific known-issues.md mapping recurring errors to their solutions. Consulted automatically by…