plugins/aem/cloud-service/skills/code-assessment/outdated-dependencies/SKILL.md
[BETA] 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. This skill is in beta. Verify all outputs before applying them to production projects.
npx skillsauth add adobe/skills outdated-dependenciesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Beta Skill: This skill is in beta and under active development. Results should be reviewed carefully before use in production. Report issues at https://github.com/adobe/skills/issues
This pattern is executed by the code-assessment runbook — follow
../references/runbook.mdfor the full flow (preflight → plan → apply → verify, run log). This skill supplies the detection + recipe the runbook applies.
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.
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:
--pattern outdated-dependencies, or a full audit).skipped and reason needs-user-target (no target supplied).aem-sdk-api, align with your Cloud Manager environment SDK — do not assume the latest public version."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.
pom.xml with a <dependency> whose version the user wants raised, either as a literal <version> or via a <version>${prop}</version> + <properties> entry.<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.Detection is performed by the analyzer (../scripts/analyze.sh), 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.
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.
<version> text (or the <properties> entry) changed — no whitespace/attribute churnRead recipe.md in full before editing: input contract, Pattern A (literal), Pattern B (property), multi-module caveat, editing strategy.
The skill never commits. See ../references/git-workflow.md for git vs in-place handoff and the suggested commit message.
tools
Use the run-workflow MCP to discover, compose, execute, publish, and save Adobe Firefly workflows. TRIGGER when: user asks what actions are available, what the MCP can do, how to process images/video/3D via workflow, wants to build/run/save/publish a workflow, OR pastes any workflow/batch/execution ID. BARE ID (UUID/workflowId/batchId) = INSPECT ONLY — call inspect_run, NEVER run_workflow_submit. ALWAYS call list_actions first for capability/discovery questions. DO NOT TRIGGER for direct Firefly API calls without MCP (use firefly-api-specs).
tools
Run predefined featured workflows via run-workflow MCP. TRIGGER when user names a featured workflow (retargeting, banners at scale, localization, packaging, banner advertising, etc.) or asks to run a known marketing/production workflow. Requires run-workflow MCP. ALWAYS call get_featured_workflow before compose_workflow. DO NOT TRIGGER for custom one-off workflows with no named template — use run-workflow skill.
tools
Migrate an Adobe Commerce App Builder project from the Integration Starter Kit or Checkout Starter Kit to the new App Management approach. Run from the root of the App Builder project to be migrated. Pass --auto to skip confirmation prompts (suitable for CI or batch use) — auto mode prints a summary of all Q&A questions answered with their defaults. Pass --doc-scan-only to scan README.md and env.dist for outdated content without modifying any files. Use when the user wants to migrate an App Builder project from the Integration Starter Kit or Checkout Starter Kit to the App Management approach, or mentions upgrading their Adobe Commerce extension architecture.
development
Add or modify webhook interceptors in an Adobe Commerce app. Use when the user wants to intercept Commerce operations to validate input, append data, or modify behavior — before or after execution. Requires a base app initialized with commerce-app-init.