원클릭으로
update-dependencies
Check all dependencies in a Java project for newer stable versions and known CVEs, then update build files automatically.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Check all dependencies in a Java project for newer stable versions and known CVEs, then update build files automatically.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Generate integration tests for a Java class using Testcontainers. Supports Spring Boot (3.1+), Quarkus (3.0+), and Micronaut (4.0+). Detects class type (repository, controller, service) and applies framework-appropriate test patterns. Requires Java 17+.
Generate JUnit unit tests for a Java class with Mockito mocks and AssertJ assertions. Supports Spring Boot, Quarkus, and Micronaut with framework-appropriate mock patterns. Use when creating test coverage for a Java source file.
| name | update-dependencies |
| description | Check all dependencies in a Java project for newer stable versions and known CVEs, then update build files automatically. |
| disable-model-invocation | true |
| allowed-tools | Read Edit Glob Grep WebFetch Bash(mvn *) Bash(./gradlew *) Bash(gradlew.bat *) |
This skill checks all dependencies in a Java project (Maven or Gradle) for newer stable versions and known security vulnerabilities (CVEs), then updates the build files automatically — applying safe minor/patch updates directly, auto-updating high/critical CVEs to safe versions, and flagging major version bumps and medium/low CVEs for developer review.
pom.xml (Maven) or build.gradle/build.gradle.kts (Gradle) in the project root/update-dependencies
No arguments needed. Run from your project root.
The skill produces a summary report after processing:
## Dependency Update Summary
### Updated Dependencies (3)
| Dependency | Old Version | New Version | Reason |
|-----------|------------|------------|--------|
| com.fasterxml.jackson.core:jackson-databind | 2.14.0 | 2.14.3 | Newer patch version |
| org.slf4j:slf4j-api | 2.0.5 | 2.0.9 | Newer minor version |
| org.apache.logging.log4j:log4j-core | 2.17.0 | 2.17.2 | CVE-2021-44832 (CVSS 6.6) + newer patch |
### Flagged for Review (1)
| Dependency | Current | Available | Reason |
|-----------|---------|-----------|--------|
| org.springframework:spring-core | 5.3.28 | 6.1.2 | Major version bump |
### CVE Findings (1)
| Dependency | CVE | Severity | CVSS | Status |
|-----------|-----|----------|------|--------|
| log4j-core 2.17.0 | CVE-2021-44832 | Medium | 6.6 | Resolved → 2.17.2 |
### Up to Date: 12 dependencies
### Skipped: 1 (private repository)
You are updating dependencies for a Java project. Follow each step below in order.
Scan the project root for build files:
pom.xml (Maven)build.gradle or build.gradle.kts (Gradle)If both Maven and Gradle files exist: Ask the user which build tool to use. Wait for their response before continuing.
If neither exists: Inform the user that no supported build file was found and stop.
Multi-module detection:
<modules> element in the root pom.xml. If present, list all child module directories.settings.gradle or settings.gradle.kts in the project root. If present, extract all include entries to identify subproject directories.Record the build tool type and a list of all build files to process (root + child modules).
Read all detected build files and extract every dependency, plugin, and BOM import. For each, record the groupId, artifactId, current version, and where the version is defined (the version source).
For detailed Maven and Gradle extraction patterns (property references, BOM imports, version catalogs, multi-module traversal, and general extraction rules), see reference/build-patterns.md. Read that file now to understand all supported version source formats before proceeding.
Before looking up individual dependency versions, detect whether the project belongs to a managed ecosystem where dependencies have cross-version compatibility constraints. In these ecosystems, you cannot update dependencies independently — you must respect the compatibility matrix.
Check the extracted dependencies and BOMs for known ecosystem markers:
| Ecosystem | Detection Signal |
|---|---|
| Spring Boot | Parent POM spring-boot-starter-parent or BOM spring-boot-dependencies |
| Spring Cloud | BOM spring-cloud-dependencies or any spring-cloud-* dependency |
| Quarkus | BOM quarkus-bom or quarkus-universe-bom |
| Jakarta EE | BOM jakarta.platform:jakarta.jakartaee-bom |
If both Spring Boot and Spring Cloud are detected:
https://start.spring.io/actuator/infobom → spring-cloud → mappingscompatibilityRange (Spring Boot version range) and a version (compatible Spring Cloud version)compatibilityRange includes the target Spring Boot versionversion as the target Spring Cloud versionExample: If Spring Boot is being updated to 3.5.x, and the Initializr metadata says Spring Cloud 2024.0.x is compatible with Boot 3.5.x, then update the spring-cloud-dependencies BOM to 2024.0.x.
For Quarkus and Jakarta EE BOMs: update the BOM version via maven-metadata.xml, but skip individual version lookups for all dependencies managed by that BOM. The BOM controls their versions.
When a dependency is managed by an ecosystem BOM, do NOT look up its version individually in Step 4. Only the BOM version should be updated. Mark all BOM-managed dependencies as ecosystem-managed and skip them during version lookup.
For each extracted dependency that is not ecosystem-managed (see Step 3), look up the latest stable version.
Maven Repository Metadata (primary — always up to date):
https://repo1.maven.org/maven2/{groupId with dots replaced by slashes}/{artifactId}/maven-metadata.xml
org.springframework.boot:spring-boot-starter-parent → https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-starter-parent/maven-metadata.xml<release> tag contains the latest release version<versions><version> list contains all published versions (use this for pre-release filtering if <release> points to a pre-release)Gradle Plugin Portal (for Gradle plugins not found on Maven Central):
https://plugins.gradle.org/plugin/{pluginId}Pre-release version filtering: Check the <release> version against pre-release patterns (case-insensitive, with optional numeric suffix):
-SNAPSHOT-alpha / -Alpha / -ALPHA-beta / -Beta / -BETA-RC / -rc-M (milestone, e.g., -M1, -M2)-CR (candidate release)If the <release> version is a pre-release, walk the <versions> list in reverse order and pick the first version that does NOT match any pre-release pattern.
Version comparison: Parse versions as major.minor.patch (tolerating additional segments like qualifiers):
latestMajor > currentMajor → classify as major updatelatestMinor > currentMinor (same major) → classify as minor updatelatestPatch > currentPatch (same major.minor) → classify as patch update20230301) → classify as unknown and flag for reviewRecord for each dependency: latestStableVersion, updateType (major/minor/patch/none/unknown).
For each dependency, check the current version for known security vulnerabilities.
OSV.dev API:
https://api.osv.dev/v1/query with body:
{
"version": "<currentVersion>",
"package": {
"name": "<groupId>:<artifactId>",
"ecosystem": "Maven"
}
}
CVE-2021-44228, GHSA-xxxx)severity[].score (look for CVSS_V3 type first, fall back to CVSS_V2)affected[].ranges[].events[] where type is FIXEDsummary or details fieldIf the API returns no vulnerabilities, the dependency is clean for this version.
If the API call fails (network error, timeout), report the dependency as "CVE check failed" and continue processing other dependencies.
For each dependency that will be updated (has a newer minor/patch version, or a CVE-driven update), check the target (latest stable) version for CVEs using the same OSV.dev API query but with the target version.
Decision logic based on target version CVE results:
For each dependency, apply this decision matrix:
| Condition | Action |
|---|---|
| Newer minor/patch version, no CVE on current or target | Auto-update to latest stable |
| Newer major version, no CVE | Flag for review — do NOT auto-update |
| Current version has CVE with CVSS >= 7.0, target is clean | Auto-update to latest safe version |
| Current version has CVE with CVSS >= 7.0, target also has high/critical CVE | Flag for review — warn "no safe version available" |
| Current version has CVE with CVSS >= 7.0, target has only medium/low CVE | Auto-update but note remaining CVE in report |
| Current version has CVE with CVSS < 7.0, no version update needed | Flag for review — medium/low CVE, inform developer |
| Major version bump AND current has high/critical CVE, target is clean | Auto-update — security overrides major-bump caution |
| Private/unresolvable dependency (not found on Maven Central) | Skip and report separately |
| Already at latest stable version, no CVE | Report as up to date |
| Already at latest stable version, has CVE | Flag for review — warn "current version is latest but has known CVE" |
| Malformed version string | Skip and report separately |
| Version lookup failed (network error) | Skip and report separately |
For each dependency marked for auto-update, edit the build file to change the version.
Critical rules:
ext variable, version catalog entry, or BOM version. Do NOT edit ${...} reference sites or individual dependency declarations that use a shared property.spring.version), update the property once. Do not make duplicate edits.After applying all updates, verify the project still compiles and tests pass. This step is mandatory — never skip it.
1. Run compilation:
mvn compile -q (quiet mode to reduce noise)./gradlew compileJava --quiet (or gradlew.bat on Windows)2. If compilation succeeds, run tests:
mvn test -q./gradlew test --quiet3. If compilation OR tests fail:
4. If compilation and tests pass: All updates are confirmed safe. Proceed to the summary report.
Note: If the project did not compile or pass tests before the skill ran (pre-existing failures), inform the user and still proceed with the report — but note that pre-existing build issues were detected.
After all updates are verified (or rolled back), output a formatted summary report with these sections:
List all dependencies that were auto-updated.
### Updated Dependencies ({count})
| Dependency | Old Version | New Version | Reason |
|-----------|------------|------------|--------|
| groupId:artifactId | x.y.z | x.y.w | Newer patch/minor version |
If no dependencies were updated, show: ### Updated Dependencies: None
List all dependencies flagged for developer review.
### Flagged for Review ({count})
| Dependency | Current | Available | Reason |
|-----------|---------|-----------|--------|
| groupId:artifactId | x.y.z | a.b.c | Major version bump / Medium CVE / No safe version / Build failure (reverted) |
If none flagged, show: ### Flagged for Review: None
List all CVEs found across all dependencies.
### CVE Findings ({count})
| Dependency | CVE | Severity | CVSS | Status |
|-----------|-----|----------|------|--------|
| artifactId x.y.z | CVE-XXXX-XXXXX | High | 8.1 | Resolved → a.b.c / Flagged / No safe version |
If no CVEs found, show: ### CVE Findings: None
List dependencies that could not be processed.
### Skipped ({count})
- `groupId:artifactId` — reason (private repository / lookup failure / malformed version)
If none skipped, show: ### Skipped: None
Count of dependencies already at the latest stable version with no CVEs.
### Up to Date: {count} dependencies
Now detect the build tool and begin processing dependencies for this project.