/absolute-upgrade
Dependency upgrades: outdated/vulnerable deps planned into semver waves (patch/minor batched, majors gated and changelog-read), applied incrementally with lockfiles regenerated and tests green after each. Runs on green main. Triggers on "absolute upgrade", "upgrade our
$ npx -y skills add absolutelyskilled/absolutelyskilled --skill absolute-upgrade --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/absolute-upgrade
Context preview
The summary Claude sees to decide when to auto-load this skill.
Dependency upgrades: outdated/vulnerable deps planned into semver waves (patch/minor batched, majors gated and changelog-read), applied incrementally with lockfiles regenerated and tests green after each. Runs on green main. Triggers on "absolute upgrade", "upgrade our
SKILL.md
absolute-upgrade.SKILL.mdname: absolute-upgrade
version: 0.5.0
description: >
Dependency upgrades: outdated/vulnerable deps planned into semver waves (patch/minor batched, majors gated and changelog-read), applied incrementally with lockfiles regenerated and tests green after each. Runs on green main.
Triggers on "absolute upgrade", "upgrade our dependencies", "bump deps", "update packages", "move off the deprecated X", "clear the Dependabot backlog".
category: workflow
tags:
- workflow
- maintenance
- dependencies
- upgrade
- security
platforms:
- claude-code
- gemini-cli
- openai-codex
- mcp
user-invocable: true
argument-hint: "[target]"
license: MIT
maintainers:
- github: maddhruv
> Start your first response with the ⬆️ emoji.
Absolute Upgrade
Bring dependencies current — safely, in risk-ranked waves, with tests green after each. Not a blind `npm update`: outdated and vulnerable deps are grouped by blast radius (patch/minor → safe wave; major/breaking → gated, one at a time, changelog-read), applied incrementally, and verified against the project's own test suite.
Runs the shared engine in **`references/health-engine.md`** — read it for the DETECT → SCAN → TRIAGE → FIX → VERIFY → REPORT loop and the safety contract. This file covers only what's specific to dependency upgrades.
---
When to use
- Routine "bring deps up to date" / "upgrade our dependencies".
- A specific bump: "upgrade React to 19", "move off the deprecated X package".
- Clearing `npm outdated` / Dependabot backlog without 40 separate PRs.
**Not** for: adding a *new* dependency (that's a `work`/feature decision), or auditing *vulnerabilities* specifically → use **`/absolute audit`** (it triages CVEs; `upgrade` moves versions).
---
What it scans
Per ecosystem, list outdated deps with current → wanted → latest and the jump type:
| Ecosystem | Detect outdated | Lockfile / manifest | |---|---|---| | npm | `npm outdated --json` | `package-lock.json` | | pnpm | `pnpm outdated --format json` | `pnpm-lock.yaml` | | yarn | `yarn outdated --json` | `yarn.lock` | | Python (pip) | `pip list --outdated --format=json` | `requirements*.txt` | | Python (poetry/uv) | `poetry show --outdated` / `uv pip list --outdated` | `pyproject.toml` + lock | | Go | `go list -u -m -json all` | `go.mod` / `go.sum` |
Also flag: deps with known deprecations, duplicate/multiple versions of the same package, and direct vs transitive (only direct deps are upgrade targets; transitives follow).
---
Risk ranking (TRIAGE)
Group the upgrade plan into waves by semver jump — safest first:
| Wave | Jump | Default | |---|---|---| | 1 | patch (`x.y.Z`) | batch together, fix now | | 2 | minor (`x.Y.z`) | batch by package family, fix now | | 3 | major (`X.y.z`) / pre-1.0 minor | **one at a time, gated** — read the changelog/migration guide first, list breaking changes |
For every major bump: locate breaking changes (CHANGELOG, release notes, codemod if the package ships one), inventory call sites that touch the changed API, and state the migration before applying. Peer-dependency conflicts get resolved in the same wave as their driver.
---
Fix & verify
- Apply a wave, regenerate the lockfile, run the project's **full** test + build (a passing
install is not a passing upgrade).
- Majors: apply the version bump *and* the required code migration in the same wave, or the
build breaks. Use the package's codemod where one exists.
- A wave that can't go green within reason → revert it, report it as blocked with the error,
keep the green waves. Never `--force` / `--legacy-peer-deps` to mask a real conflict.
---
Gotchas
1. **Lockfile-only "upgrade".** Bumping the manifest without regenerating + committing the lockfile ships untested transitive versions. Always regenerate. 2. **Batching a major in with patches.** One breaking bump fails the whole wave and hides which change broke it. Majors are always solo. 3. **Green install ≠ green project.** `npm install` succeeding proves nothing — run tests. 4. **Pinning around a failure.** If a bump breaks something, fix or defer it; don't pin the dependency tree to dodge it silently.
---
Companion commands
- **`/absolute audit`** — if the goal is fixing *vulnerabilities*, start there; it'll route
back here for the version moves.
- **`/absolute deflake`** — flaky tests can mask whether an upgrade truly passed.
- **`/absolute work`** — if an upgrade needs real feature-level migration work, hand off.
Read more
name: absolute-upgrade version: 0.5.0 description: > Dependency upgrades: outdated/vulnerable deps planned into semver waves (patch/minor batched, majors gated and changelog-read), applied incrementally with lockfiles regenerated and tests green after each. Runs on green main. Triggers on "absolute upgrade", "upgrade our dependencies", "bump deps", "update packages", "move off the deprecated X", "clear the Dependabot backlog". category: workflow tags: - workflow - maintenance - dependencies - upgrade - security platforms: - claude-code - gemini-cli - openai-codex - mcp user-invocable: true argument-hint: "[target]" license: MIT maintainers: - github: maddhruv
> Start your first response with the ⬆️ emoji.
Absolute Upgrade
Bring dependencies current — safely, in risk-ranked waves, with tests green after each. Not a blind `npm update`: outdated and vulnerable deps are grouped by blast radius (patch/minor → safe wave; major/breaking → gated, one at a time, changelog-read), applied incrementally, and verified against the project's own test suite.
Runs the shared engine in **`references/health-engine.md`** — read it for the DETECT → SCAN → TRIAGE → FIX → VERIFY → REPORT loop and the safety contract. This file covers only what's specific to dependency upgrades.
---
When to use
- Routine "bring deps up to date" / "upgrade our dependencies".
- A specific bump: "upgrade React to 19", "move off the deprecated X package".
- Clearing `npm outdated` / Dependabot backlog without 40 separate PRs.
**Not** for: adding a *new* dependency (that's a `work`/feature decision), or auditing *vulnerabilities* specifically → use **`/absolute audit`** (it triages CVEs; `upgrade` moves versions).
---
What it scans
Per ecosystem, list outdated deps with current → wanted → latest and the jump type:
| Ecosystem | Detect outdated | Lockfile / manifest | |---|---|---| | npm | `npm outdated --json` | `package-lock.json` | | pnpm | `pnpm outdated --format json` | `pnpm-lock.yaml` | | yarn | `yarn outdated --json` | `yarn.lock` | | Python (pip) | `pip list --outdated --format=json` | `requirements*.txt` | | Python (poetry/uv) | `poetry show --outdated` / `uv pip list --outdated` | `pyproject.toml` + lock | | Go | `go list -u -m -json all` | `go.mod` / `go.sum` |
Also flag: deps with known deprecations, duplicate/multiple versions of the same package, and direct vs transitive (only direct deps are upgrade targets; transitives follow).
---
Risk ranking (TRIAGE)
Group the upgrade plan into waves by semver jump — safest first:
| Wave | Jump | Default | |---|---|---| | 1 | patch (`x.y.Z`) | batch together, fix now | | 2 | minor (`x.Y.z`) | batch by package family, fix now | | 3 | major (`X.y.z`) / pre-1.0 minor | **one at a time, gated** — read the changelog/migration guide first, list breaking changes |
For every major bump: locate breaking changes (CHANGELOG, release notes, codemod if the package ships one), inventory call sites that touch the changed API, and state the migration before applying. Peer-dependency conflicts get resolved in the same wave as their driver.
---
Fix & verify
- Apply a wave, regenerate the lockfile, run the project's **full** test + build (a passing
install is not a passing upgrade).
- Majors: apply the version bump *and* the required code migration in the same wave, or the
build breaks. Use the package's codemod where one exists.
- A wave that can't go green within reason → revert it, report it as blocked with the error,
keep the green waves. Never `--force` / `--legacy-peer-deps` to mask a real conflict.
---
Gotchas
1. **Lockfile-only "upgrade".** Bumping the manifest without regenerating + committing the lockfile ships untested transitive versions. Always regenerate. 2. **Batching a major in with patches.** One breaking bump fails the whole wave and hides which change broke it. Majors are always solo. 3. **Green install ≠ green project.** `npm install` succeeding proves nothing — run tests. 4. **Pinning around a failure.** If a bump breaks something, fix or defer it; don't pin the dependency tree to dodge it silently.
---
Companion commands
- **`/absolute audit`** — if the goal is fixing *vulnerabilities*, start there; it'll route
back here for the version moves.
- **`/absolute deflake`** — flaky tests can mask whether an upgrade truly passed.
- **`/absolute work`** — if an upgrade needs real feature-level migration work, hand off.
A development workflow engine for AI coding agents. Eleven separate skills — a one-time absolute-init (interview + stack detection → config), a build loop you run every day (think → spec → plan → build → polish → document), plus an engineering-health family
Repo: absolutelyskilled/absolutelyskilled
Other skills on absolute.
- /absolute-audit
Vulnerability and security scan (defensive, your own repo): dependency CVEs plus risky code patterns (secrets, injection, weak authz), severity x reachability triaged and remediated without suppressing. Complements the built-in /security-review. Triggers on "absolute audit",
Open skill - /absolute-debt
Lint and typecheck debt paydown: clear pre-existing repo-wide lint/type violations and suppressions (@ts-ignore, # type: ignore) one rule per wave, fixing causes not symptoms. Runs on green main. For diff-scoped quality use absolute-simplify. Triggers on "absolute debt", "fix
Open skill - /absolute-deflake
Flaky test fixes: detect nondeterministic tests empirically (repeat/shuffle/parallel runs), diagnose the root cause, fix it — never retry/skip/sleep — and verify across many randomized runs. Triggers on "absolute deflake", "fix flaky tests", "CI is flaky", "this test fails
Open skill - /absolute-docs
Diátaxis-driven documentation for AI coding agents: write, improve, or audit tutorials, how-tos, reference, explanation, and developer docs (README, CONTRIBUTING, ADRs). Detects the docs stack; gates on the outline before writing prose; verifies every claim against the code
Open skill - /absolute-init
One-time setup for absolute: interview how you want it to behave (output style, autonomy, TDD strictness, spec dir, families) + detect the stack once, then write `.absolute.config.json` (project, committed) and `~/.absolute/config.json` (user defaults + per-project overrides).
Open skill - /absolute-prune
Dead code and dependency cleanup, repo-wide: unused deps, unreferenced exports, unreachable code, orphaned files — removed only with tool evidence, in reversible waves. Runs on green main. For diff-scoped cleanup use absolute-simplify. Triggers on "absolute prune", "remove dead
Open skill

