/outdated-dependencies
AEM Cloud Service expert skill — upgrade outdated Maven dependencies in pom.xml, both literal <version> and same-pom ${property} shapes. Use for \"update my aem-sdk-api\", \"upgrade mockito\", or scanning a project for stale dependency versions. Discovery can find <dependency>
$ npx -y skills add adobe/skills --skill outdated-dependencies --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
/outdated-dependencies
Context preview
The summary Claude sees to decide when to auto-load this skill.
AEM Cloud Service expert skill — upgrade outdated Maven dependencies in pom.xml, both literal <version> and same-pom ${property} shapes. Use for \"update my aem-sdk-api\", \"upgrade mockito\", or scanning a project for stale dependency versions. Discovery can find <dependency>
SKILL.md
outdated-dependencies.SKILL.mdname: outdated-dependencies
description: "AEM Cloud Service expert skill — upgrade outdated Maven dependencies in pom.xml, both literal <version> and same-pom ${property} shapes. Use for \"update my aem-sdk-api\", \"upgrade mockito\", or scanning a project for stale dependency versions. Discovery can find <dependency> blocks but \"outdated\" needs a target version, which the user supplies. Pattern A/B locators and editing strategy are in recipe.md."
license: Apache-2.0Outdated Maven dependencies — AEM as a Cloud Service
> This pattern is executed by the code-assessment runbook — follow [`../references/runbook.md`](../references/runbook.md) for the full flow (preflight → plan → apply → verify, run log). This skill supplies the detection + recipe the runbook applies.
Overview
Stale Maven dependencies (notably `aem-sdk-api`) cause build failures and local/runtime drift. This skill bumps a dependency's version surgically — literal `<version>` or a same-pom `${property}` — without reformatting the pom.
Answering "are my dependencies up to date?"
This pattern **locates** Maven coordinates; it does **not** declare a dependency outdated vs current without a **user-supplied target version** (see Resolution contract). For a comparative ask ("up to date?", "stale?", "outdated?") with `report` intent:
1. Run discovery via the analyzer (`--pattern outdated-dependencies`, or a full audit). 2. Present every located coordinate in the Step 7 **Candidates** table with planned action `skipped` and reason `needs-user-target` (no target supplied). 3. State plainly: *"Found N versioned dependencies across M pom files. Supply target versions to mark upgrades. For `aem-sdk-api`, align with your Cloud Manager environment SDK — do not assume the latest public version."* 4. Offer follow-up: reply with target versions to apply, or name coordinates then say **apply**.
**Do not** run `mvn versions:display-*`, `npm outdated`, or Maven Central / registry lookups in place of this inventory. A live registry comparison needs network and is advisory only — if the user explicitly asks, do it as a separate step **after** the skill report.
Classification — confirm this pattern applies
- A `pom.xml` with a `<dependency>` whose version the user wants raised, either as a literal `<version>` or via a `<version>${prop}</version>` + `<properties>` entry.
- Applies to a `<dependency>` that carries a `<version>` (literal or `${property}`) in `<dependencies>` **or** `<dependencyManagement>`. Not for `<plugin>` / `<build>` dependencies, version-less (inherited) `<dependency>` entries, or versions defined only in an out-of-workspace parent pom.
Discovery
Detection is performed by the analyzer ([`../scripts/analyze.sh`](../scripts/README.md)), run by the runbook:
bash ../scripts/analyze.sh <workspace-root> --pattern outdated-dependencies
**Match criteria (what the detector flags):** each `<dependency>` element carrying a `<version>` (literal or `${property}`) under `<dependencies>` or `<dependencyManagement>` — excluding `<plugin>`/`<pluginManagement>`/`<build>`/`<reporting>` dependencies and version-less (inherited) `<dependency>` entries — emitted with its `groupId:artifactId@version` and the line of its `<artifactId>`. The analyzer only **locates** dependencies — "is this outdated?" and "what is the target version?" are **user-supplied** (see Resolution contract); the analyzer performs no network lookup. If the same `(groupId, artifactId, version)` appears in more than one `<dependency>` block in a file, the recipe's `ambiguous-locator` skip applies during planning.
**Allowlist scope:** by default the detector is scoped to a curated allowlist of coordinates where upgrades are actionable in AEM Cloud Service projects (currently `com.adobe.aem:aem-sdk-api` and `org.mockito:*`). Non-allowlisted versioned dependencies are silently skipped. To list every versioned dependency regardless of allowlist, pass `--all` to `analyze.sh` — but **only** for an explicit full audit ("all dependencies", "every library", "comprehensive"). For a normal "are my dependencies outdated?" ask, keep the default allowlist scope: it is the actionable answer, and `--all` adds platform deps (OSGi, JCR, servlet-api) that are not independently upgradeable. Adding a coordinate to the allowlist is a one-line change in `OutdatedDependencies.java`; `analyze.sh` recompiles automatically. Both exact `groupId:artifactId` and prefix-wildcard `groupId:prefix*` forms are supported.
Resolution contract
**user-supplied** — list the found coordinates with their current versions and ask which to upgrade and to what target version before planning. Never guess a version.
Review checklist
- [ ] Only the `<version>` text (or the `<properties>` entry) changed — no whitespace/attribute churn
- [ ] Property shape edits validated: property exists, value matched, referenced by the target dependency
- [ ] Ambiguous (multi-match) locators skipped, not guessed
- [ ] Target version came from the user — never invented
Recipe
Read [`recipe.md`](recipe.md) in full before editing: input contract, Pattern A (literal), Pattern B (property), multi-module caveat, editing strategy.
Handoff
The skill never commits. See [`../references/git-workflow.md`](../references/git-workflow.md) for git vs in-place handoff and the suggested commit message.
Read more
name: outdated-dependencies
description: "AEM Cloud Service expert skill — upgrade outdated Maven dependencies in pom.xml, both literal <version> and same-pom ${property} shapes. Use for \"update my aem-sdk-api\", \"upgrade mockito\", or scanning a project for stale dependency versions. Discovery can find <dependency> blocks but \"outdated\" needs a target version, which the user supplies. Pattern A/B locators and editing strategy are in recipe.md."
license: Apache-2.0Outdated Maven dependencies — AEM as a Cloud Service
> This pattern is executed by the code-assessment runbook — follow [`../references/runbook.md`](../references/runbook.md) for the full flow (preflight → plan → apply → verify, run log). This skill supplies the detection + recipe the runbook applies.
Overview
Stale Maven dependencies (notably `aem-sdk-api`) cause build failures and local/runtime drift. This skill bumps a dependency's version surgically — literal `<version>` or a same-pom `${property}` — without reformatting the pom.
Answering "are my dependencies up to date?"
This pattern **locates** Maven coordinates; it does **not** declare a dependency outdated vs current without a **user-supplied target version** (see Resolution contract). For a comparative ask ("up to date?", "stale?", "outdated?") with `report` intent:
1. Run discovery via the analyzer (`--pattern outdated-dependencies`, or a full audit). 2. Present every located coordinate in the Step 7 **Candidates** table with planned action `skipped` and reason `needs-user-target` (no target supplied). 3. State plainly: *"Found N versioned dependencies across M pom files. Supply target versions to mark upgrades. For `aem-sdk-api`, align with your Cloud Manager environment SDK — do not assume the latest public version."* 4. Offer follow-up: reply with target versions to apply, or name coordinates then say **apply**.
**Do not** run `mvn versions:display-*`, `npm outdated`, or Maven Central / registry lookups in place of this inventory. A live registry comparison needs network and is advisory only — if the user explicitly asks, do it as a separate step **after** the skill report.
Classification — confirm this pattern applies
- A `pom.xml` with a `<dependency>` whose version the user wants raised, either as a literal `<version>` or via a `<version>${prop}</version>` + `<properties>` entry.
- Applies to a `<dependency>` that carries a `<version>` (literal or `${property}`) in `<dependencies>` **or** `<dependencyManagement>`. Not for `<plugin>` / `<build>` dependencies, version-less (inherited) `<dependency>` entries, or versions defined only in an out-of-workspace parent pom.
Discovery
Detection is performed by the analyzer ([`../scripts/analyze.sh`](../scripts/README.md)), run by the runbook:
bash ../scripts/analyze.sh <workspace-root> --pattern outdated-dependencies
**Match criteria (what the detector flags):** each `<dependency>` element carrying a `<version>` (literal or `${property}`) under `<dependencies>` or `<dependencyManagement>` — excluding `<plugin>`/`<pluginManagement>`/`<build>`/`<reporting>` dependencies and version-less (inherited) `<dependency>` entries — emitted with its `groupId:artifactId@version` and the line of its `<artifactId>`. The analyzer only **locates** dependencies — "is this outdated?" and "what is the target version?" are **user-supplied** (see Resolution contract); the analyzer performs no network lookup. If the same `(groupId, artifactId, version)` appears in more than one `<dependency>` block in a file, the recipe's `ambiguous-locator` skip applies during planning.
**Allowlist scope:** by default the detector is scoped to a curated allowlist of coordinates where upgrades are actionable in AEM Cloud Service projects (currently `com.adobe.aem:aem-sdk-api` and `org.mockito:*`). Non-allowlisted versioned dependencies are silently skipped. To list every versioned dependency regardless of allowlist, pass `--all` to `analyze.sh` — but **only** for an explicit full audit ("all dependencies", "every library", "comprehensive"). For a normal "are my dependencies outdated?" ask, keep the default allowlist scope: it is the actionable answer, and `--all` adds platform deps (OSGi, JCR, servlet-api) that are not independently upgradeable. Adding a coordinate to the allowlist is a one-line change in `OutdatedDependencies.java`; `analyze.sh` recompiles automatically. Both exact `groupId:artifactId` and prefix-wildcard `groupId:prefix*` forms are supported.
Resolution contract
**user-supplied** — list the found coordinates with their current versions and ask which to upgrade and to what target version before planning. Never guess a version.
Review checklist
- [ ] Only the `<version>` text (or the `<properties>` entry) changed — no whitespace/attribute churn
- [ ] Property shape edits validated: property exists, value matched, referenced by the target dependency
- [ ] Ambiguous (multi-match) locators skipped, not guessed
- [ ] Target version came from the user — never invented
Recipe
Read [`recipe.md`](recipe.md) in full before editing: input contract, Pattern A (literal), Pattern B (property), multi-module caveat, editing strategy.
Handoff
The skill never commits. See [`../references/git-workflow.md`](../references/git-workflow.md) for git vs in-place handoff and the suggested commit message.
Repo: adobe/skills
Other skills on adobe-skills.
- /aa-conversion-funnel-analysis
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage. Use this skill when someone describes a journey and asks about conversion rates, drop-off, fallout, or step completion. Trigger for "analyze our checkout funnel,"
Open skill - /aa-executive-briefing
Generates a concise, executive-ready performance summary covering key metrics, trends, and what's driving movement. Use this skill when someone needs to produce a briefing, executive summary, performance narrative, or stakeholder readout — for example, "write an exec summary of
Open skill - /aa-kpi-pulse
Produces a compact KPI digest showing how key metrics changed over a period and what's driving the movement. Use this skill when someone asks for a performance summary, a weekly recap, a morning briefing, a KPI update, or any variation of "how did we do this week/month." Also
Open skill - /aa-segment-performance-comparator
Compares the performance of two or more audience segments across key metrics side by side. Use this skill when someone wants to compare audiences or visitor groups — for example, "how do mobile visitors compare to desktop on conversion," "compare new vs. returning visitors,"
Open skill - /aa-top-movers-watchlist
Identifies which items (pages, campaigns, products, channels, regions) had the biggest increases or decreases for a key metric between two time periods. Use this skill when someone asks "what's up and what's down," "which campaigns moved the most," "top gainers and losers,"
Open skill - /cja-dimension-analysis
Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions — including cardinality, distribution/skew, trends, anomalies, data quality errors, comparisons, and forecasting. Also trigger when someone asks "what
Open skill

