بنقرة واحدة
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