ワンクリックで
dependency-update
Gradle and Rust dependency updates, version catalogs, AGP/Kotlin/NDK bumps, and Renovate.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Gradle and Rust dependency updates, version catalogs, AGP/Kotlin/NDK bumps, and Renovate.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use this skill to generate well-branded interfaces and assets for RIPDPI (an Android-native, Compose-first VPN and DPI-bypass app), either for production or throwaway prototypes/mocks/etc. Contains essential design guidelines, colors, type, fonts, brand-ship icons, and an interactive UI kit of every public composable from the live ui/components tree.
Use when managing the Rust workspace, adding/removing crates, editing workspace dependencies, running cargo nextest/audit/deny, configuring Cargo profiles for Android cross-compilation, debugging Cargo.lock churn, migrating crate edition, or wiring Gradle to cargo via the ripdpi.android.rust-native plugin.
Use when modifying the diagnostics scan pipeline, ScanRequest/ScanReport types, ProbeTask families, ripdpi-monitor-engine / ripdpi-diagnostics-* crates, strategy-probe candidates, the diagnostics catalog (packs/profiles), wire-schema contracts between Rust and Kotlin, DIAGNOSTICS_ENGINE_SCHEMA_VERSION, golden contract tests, or adding a new probe type / profile. Triggers on diagnostics scans, strategy probes, automatic audit, dpi-detector profiles, or anything in core/diagnostics or native/rust/crates/ripdpi-monitor-*.
Android-specific Rust build, verification, and packaging — per-target 16 KiB page alignment, size-optimized release profile, ELF symbol allowlist, .so size budgets, NDK 29 specifics. Use when modifying .cargo/config.toml for Android targets, the workspace [profile.release] / [profile.android-jni] block, or when verifying a built .so before release.
Telemetry and observability discipline for the RIPDPI Android Rust stack — control-plane vs data-plane logging, bounded flume event queues, atomic counters, snapshot polling, readiness callbacks, and deterministic JSON contracts. Use when authoring or modifying telemetry emission code, the bounded event ring, the Kotlin-side telemetry consumer, or any per-packet logging.
Custom detekt rules, DI/privacy/suppression guardrails, detekt.yml configuration, and false-positive triage.
| name | dependency-update |
| description | Gradle and Rust dependency updates, version catalogs, AGP/Kotlin/NDK bumps, and Renovate. |
Two dependency ecosystems (Gradle + Cargo) with Renovate automating PR creation.
File: gradle/libs.versions.toml
Structure:
[versions]
agp = "9.1.0" # <-- update versions HERE
kotlin = "2.3.20"
[libraries]
androidx-core = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCore" }
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
[bundles]
lifecycle = ["lifecycle-runtime", "lifecycle-viewmodel"]
Rule: Always update the version in the [versions] section. Never inline a version in [libraries] or [plugins].
| Group | Versions to Update Together |
|---|---|
| Kotlin | kotlin, ksp, kotlinComposeCompiler |
| Compose | composeBom (single BOM controls all Compose libs) |
| AndroidX | Individually, but Renovate groups them |
| AGP | agp (may require Gradle wrapper update) |
| Testing | junit, robolectric, roborazzi independently |
File: native/rust/Cargo.toml (workspace root)
Dependencies declared in [workspace.dependencies] are inherited by crates via { workspace = true }:
[workspace.dependencies]
tokio = { version = "1.45", features = ["full"] }
serde = { version = "1", features = ["derive"] }
Update a specific crate:
cd native/rust
cargo update -p tokio
Update all:
cd native/rust
cargo update
File: renovate.json
Grouping rules:
dependencies# 1. Edit version in libs.versions.toml
# 2. Verify
./gradlew assembleDebug && ./gradlew testDebugUnitTest
# 1. Update agp version in libs.versions.toml
# 2. May need Gradle wrapper update:
./gradlew wrapper --gradle-version=X.Y.Z
# 3. Full verification:
./gradlew assembleDebug testDebugUnitTest staticAnalysis
Update all three together in libs.versions.toml:
kotlin (Kotlin compiler)ksp (must match Kotlin major.minor)kotlinComposeCompiler (Compose compiler plugin)./gradlew assembleDebug testDebugUnitTest staticAnalysis
cd native/rust
cargo update -p <crate-name>
cargo test --locked
cargo clippy --locked --workspace --all-targets -- -D warnings
# Rebuild Android libs to verify cross-compilation:
cd ../.. && ./gradlew :core:engine:buildRustNativeLibs
NDK changes affect both ecosystems:
ripdpi.nativeNdkVersion in gradle.properties./gradlew :core:engine:buildRustNativeLibs
./gradlew assembleDebug testDebugUnitTest
cd native/rust && cargo test --locked
channel in native/rust/rust-toolchain.tomlrust-toolchain.toml)cd native/rust && cargo test --locked && cargo clippy --locked --workspace| Change | Affects |
|---|---|
| NDK version | gradle.properties + Rust cross-compilation targets |
| Rust toolchain | rust-toolchain.toml + CI workflow setup |
| JNI API changes | Kotlin bindings in core/engine + Rust crates ripdpi-android, ripdpi-tunnel-android |
After any update, run in order:
./gradlew assembleDebug # Kotlin compilation
./gradlew testDebugUnitTest # Unit tests
./gradlew staticAnalysis # detekt + ktlint + lint
cd native/rust && cargo test --locked # Rust tests
cd ../.. && ./gradlew :core:engine:buildRustNativeLibs # Cross-compilation
| Mistake | Fix |
|---|---|
Inline version in [libraries] instead of [versions] | Always use version.ref pointing to [versions] entry |
| Updating Kotlin without KSP | KSP version must match Kotlin major.minor. Update together. |
Forgetting Cargo.lock | Cargo.lock is committed for reproducible builds. Run cargo update and commit the lock file. |
| NDK update without rebuilding native libs | NDK changes require ./gradlew :core:engine:buildRustNativeLibs to verify. |
| Updating Compose libs individually | Use composeBom version -- single BOM controls all Compose library versions. |
| Rust toolchain update without CI check | CI reads rust-toolchain.toml -- verify the version exists and targets are available. |
.github/skills/gradle-build-system/SKILL.md -- Convention plugins and dependency management patterns.github/skills/ci-workflow-authoring/SKILL.md -- CI environment setup that depends on these versions