Change the org.meshtastic:protobufs pin for Meshtastic-Android — to a tagged release or to a commit snapshot (X.Y.Z.N-g<sha>-SNAPSHOT) from protobufs master. Verifies with test/allTests (not compile alone) via the gradle-runner subagent, audits the new field surface, and opens a PR. Use to consume new proto changes, or to finish a Renovate protobufs bump that needs call-site work.
94%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Changes the upstream Meshtastic protobufs Maven pin. Protobuf models are not generated in this repo — they come from org.meshtastic:protobufs (Square Wire–built KMP models), pinned as meshtastic-protobufs in gradle/libs.versions.toml. A bump is a catalog edit + verification, never a hand-edit of generated proto.
Renovate already does routine bumps. It watches for both tagged releases and commit snapshots (
.github/renovate.jsonaccepts onlyX.Y.ZandX.Y.Z.N-g<sha>-SNAPSHOT) and automerges them. Use this skill when a bump needs call-site adaptation, or to pin a specific upstream commit before Renovate picks it up.
| Tagged release | Commit snapshot | |
|---|---|---|
| Version | X.Y.Z | X.Y.Z.N-g<sha>-SNAPSHOT (N commits after tag vX.Y.Z, at <sha>) |
| Source | Maven Central | Central's snapshot repo, already declared in settings.gradle.kts (snapshotsOnly()) |
| Published | on each protobufs release | on every protobufs master push that touches a .proto or packages/kmp/ |
| Mergeable | yes | yes; main routinely pins one |
A commit snapshot sorts above its base tag and below the next release, so it outranks the tagged protobufs that takpacket-sdk and other dependencies carry transitively and Gradle resolves the pin without a forced version. Never pin a bare -SNAPSHOT or a legacy hyphen-SHA snapshot (2.7.26-678281c-SNAPSHOT).
git describe --tags --long on that commit gives vX.Y.Z-N-g<sha>, written X.Y.Z.N-g<sha>-SNAPSHOT).meshtastic-protobufs = "<version>".test/allTests.values/schema_strings.xml alone: the Protobufs Bump workflow comments on the PR with the upstream PRs, the .proto delta and the settings strings that change, and the scheduled-updates run the merge triggers on main regenerates the file. Run ./gradlew :schema-strings:sync only when a call site in this PR needs a new schema_ key.Dispatch the gradle-runner subagent (keep the heavy log out of context):
kmpSmokeCompile + a broad compile of proto-consuming modules (core:*, feature:*) — catches compile-time breaking changes (renamed/removed fields, changed oneof shapes).test and allTests: a dependency that resolves a different protobufs on the runtime classpath than the one compiled against fails only here, as NoSuchFieldError/NoSuchMethodError on the proto classes. assembleDebug and detekt do not catch it.Triage each compile/test failure: adapt this repo's call sites, or, if a break is unexpected, stop and report rather than papering over it.
New proto versions usually add fields/messages the app doesn't consume yet. Diff the new surface against current usage and list what became implementable. Verify each reference directly: automated gap-lists for this repo are often wrong. Treat the list as candidates, not facts; don't implement them in this PR unless asked.
CONTRIBUTING.md → Pull Requests: WHY-first; 🧹 Chores for a routine catalog bump, since that is where CONTRIBUTING.md puts dependencies — 🛠️ only when the bump carries call-site adaptations of its own, 🌟 if it unlocks a user-facing feature; link the upstream compare or release notes (real URL only); "Testing Performed" = the gradle-runner run including allTests.main unless told otherwise.meshtastic/Meshtastic-Android
1bedc5d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.