Android Maps Ktx
googlemaps/android-maps-ktx
Provides idiomatic Kotlin extension (KTX) patterns, reactive Flow event streams, and multi-subscriber shareIn rules for Google Maps SDK for Android and its Utility Library.
A skill your agent uses to validate risky dependency bumps end to end as a local or cloud-launched agent.
$ npx skills add blokadaorg/blokada --skill dep-validate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install blokadaorg/blokada dep-validate --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/blokadaorg/blokada.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/dep-validate .claude/skills/dep-validate && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "dep-validate" agent skill from https://github.com/blokadaorg/blokada/tree/main/.agents/skills/dep-validate into .claude/skills/dep-validate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dep-validate", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/blokadaorg/blokada/tree/main/.agents/skills/dep-validateType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add blokadaorg/blokada --skill dep-validate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install blokadaorg/blokada dep-validate --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/blokadaorg/blokada.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/dep-validate .agents/skills/dep-validate && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dep-validate" agent skill from https://github.com/blokadaorg/blokada/tree/main/.agents/skills/dep-validate into .agents/skills/dep-validate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dep-validate", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add blokadaorg/blokada --skill dep-validate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install blokadaorg/blokada dep-validate --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/blokadaorg/blokada.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/dep-validate .cursor/skills/dep-validate && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dep-validate" agent skill from https://github.com/blokadaorg/blokada/tree/main/.agents/skills/dep-validate into .cursor/skills/dep-validate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dep-validate", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/blokadaorg/blokada.git --path .agents/skills/dep-validate--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add blokadaorg/blokada --skill dep-validate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install blokadaorg/blokada dep-validate --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/blokadaorg/blokada.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/dep-validate .gemini/skills/dep-validate && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dep-validate" agent skill from https://github.com/blokadaorg/blokada/tree/main/.agents/skills/dep-validate into .gemini/skills/dep-validate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dep-validate", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install blokadaorg/blokada dep-validateInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add blokadaorg/blokada --skill dep-validate -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/blokadaorg/blokada.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/dep-validate .github/skills/dep-validate && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dep-validate" agent skill from https://github.com/blokadaorg/blokada/tree/main/.agents/skills/dep-validate into .github/skills/dep-validate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dep-validate", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add blokadaorg/blokada --skill dep-validate -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install blokadaorg/blokada dep-validate --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/blokadaorg/blokada.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/dep-validate .opencode/skills/dep-validate && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dep-validate" agent skill from https://github.com/blokadaorg/blokada/tree/main/.agents/skills/dep-validate into .opencode/skills/dep-validate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dep-validate", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dep-validateA skill your agent uses to validate risky dependency bumps end to end as a local or cloud-launched agent.
Dep Validate is an agent skill from blokadaorg/blokada. Use to validate risky dependency bumps end to end as a local or cloud-launched agent. Trigger when a Dependabot PR was handed to a human (major version or migration-flagged) or for the ecosystems Dependabot does not scan (iOS Swift Package Manager, the wireguard-apple / translate submodules). CI here is build + lint only, so this drives the runtime validation it cannot: unit tests, mocked simulator, then real-device paywall / protection smoke, and either proceeds on pure core refactors or escalates the behavioral…
Its SKILL.md is about 5.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Dependency management, Refactoring and Unit testing. It works with iOS, Swift and Android. The repository describes itself as: The official repo for Blokada apps. The licence is MPL-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5279136. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
makegitnodeghnpmnpxadbFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, gh, npm and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Dep Validate loads about 5.7k tokens when it runs. Until then it costs about 140 tokens; SKILL.md has 3,022 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
# needs a dev ACCOUNT_ID, or .env.local SIX_DEV_ACCOUNT_ID / FAMILY_DEV_ACCOUNT_ID.seeding: Stage C needs `ACCOUNT_ID` or `.env.local` `SIX_DEV_ACCOUNT_ID` / `FAMILY_DEV_ACCOUNT_ID`. If absent, mark theAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from blokadaorg/blokada at commit 5279136, republished under its MPL-2.0 licence (© blokadaorg). 3,022 words, ~5,736 tokens.
.claude/skills/dep-validate/SKILL.md (or your agent's skills folder).Run the whole loop yourself, end to end — including the real-hardware stage. The human's job is to answer the judgement questions you escalate, not to run steps. This works the same whether you are local or a headless cloud-launched agent. The only step you cannot drive is the StoreKit sandbox purchase sheet (a system UI), so the device-connected host needs a sandbox Apple ID signed in. If no device is reachable at all, do not hand a human a runbook — escalate that the run must be repeated on a device-connected host (see §4).
CI in this repo (.github/workflows/ci.yml) is build + lint only, so a bump can go green yet break behavior at runtime. Adapty above all: the paywall, purchase, and restore are revenue-critical and only exercise on real hardware. Protection (DNS/VPN start), onboarding, and entitlements are the other surfaces that compile fine but can break in use — and general UI rendering / navigation is one too: an image, widget, theme, or navigation dep can blank out or misdraw a screen with no surface tag to warn you. So the full real-device smoke suite is the required gate for anything that renders on device, not a paywall-only spot-check.
This skill composes two leaf skills — do not reimplement them:
appium — drive the live UI on a mocked simulator or a real device.device-log — pull the iOS share-log / crash report to inspect SDK init, payment, and tunnel errors.node automation/dep-validate/queue.mjsPrints JSON: queue (open Dependabot PRs needing validation) and advisories (unscanned ecosystems). Each PR entry carries reasons, majors, highRiskPackages, and surfaces (e.g. payment, platform-bridge, protection, messaging, build-system) precomputed from the bump. Validate one PR per run; take the PR number as input for headless runs.
A queue entry means: the auto-merge workflow would hand it to a human (major bump or non-allowlist file), or it carries a high-risk package (Adapty, Firebase, WireGuard, pigeon, gradle/AGP) at any bump level. Advisories are version-drift notes only — there is no PR to check out, so you surface them, you do not run the loop on them.
Run fast to slow. Each stage gates the next: a hard failure stops the loop and you escalate with the evidence you captured. A stage that cannot run (no device, missing account id) is blocked, not passed — a blocked revenue/protection stage forces an escalation.
gh pr checkout <pr> --repo blokadaorg/blokada
git submodule update --init --recursive
# iOS bumps only (Adapty / Firebase / other native deps):
# the host links Firebase/Factory/CodeScanner via SwiftPackageManager (Xcode
# resolves them at build) and embeds the Flutter module as xcframeworks built by:
make -C common build-iosRecord the branch you came from so you can return to it when done.
The dep-validate helpers may not exist on the checked-out PR branch. A Dependabot branch created before this skill merged to main has no automation/dep-validate/ scripts, so node automation/dep-validate/queue.mjs / report.mjs fail there. The helpers only need gh + the PR number, not the PR's own files — so run them from a known-good checkout, not the PR branch: discover the queue before Stage A checkout, and emit the report after you return to your own branch (or run the script via an absolute path / git show <your-branch>:automation/dep-validate/report.mjs). Once the skill is on main and the PR rebases, the scripts are present and this caveat is moot.
make test # full Flutter suite incl. pigeon + build_runner codegen
fvm flutter analyze # run from common/, or: make -C common analyzeWhen the bump touches Adapty or common/pubspec.yaml, also run the fallback-consistency check the CI check-adapty-fallback.yml job runs:
node scripts/check-adapty-fallback-version.mjsGate: all green to continue. A pigeon or codegen-tool major most often surfaces here as regenerated bridge code that no longer compiles — that is a real failure, capture it. Note the break may not be in the regenerated code: codegen can succeed cleanly yet break the hand-written callers via a renamed generated symbol. Pilot #1082: pigeon 12→26 regenerated all channels fine, then make test failed with Member not found: 'CommandEvents.setup' — pigeon renamed the generated host/event-API setup method setup→setUp (CHANGELOG: "Breaking Change [dart] Changes FlutterApi setup to setUp"), so the regenerated channel.pg.dart emits setUp while the committed caller still calls .setup. Diagnose by grepping the generated symbol's new form against the call site; the fix is a one-line caller rename. The generated *.pg.dart files are gitignored (not committed), so git status won't flag the regen — reproduce by building, and confirm the file is generated (not a tracked edit) with git show origin/main:<path>.
A grouped bump bundles several independent majors — enumerate each one's migration separately, don't report one "build failed". Dependabot groups (e.g. #1082, the flutter-dependencies group, 22 updates) land as a single PR but can carry multiple unrelated majors, each with its own break and its own fix at a different altitude. #1082 bundled three: pigeon 12→26 (platform-bridge, a mechanical 1-line caller rename), adapty_flutter 3.11.4→3.17.0 (payment, needs judgment — withCustomerUserId went non-nullable String?→String, and logShowOnboarding was removed from the API, forcing an onboarding-logging decision), and i18n_extension 12→15 (test-helper only, blocks make test but no runtime surface). The escalation must classify each major on its own — a safe rename and a revenue-path migration in the same PR get different recommendations. And Dependabot cannot split a group, so the recommendation includes the structural choice: un-group so the safe bumps land separately, or do all migrations in one follow-up commit on the branch before re-running on-device validation. Verify the per-major facts against the installed package (git show/grep the new vs old API in ~/.pub-cache or via .dart_tool/package_config.json), not a paraphrased changelog — the strongest evidence is "method X present in 3.11.4 adapty.dart:418, absent in 3.17.0".
Tooling-only bumps don't touch the Flutter app, so make test / analyze is the wrong gate for them. When the diff is confined to a dev-tooling manifest (e.g. automation/appium/wdio/package*.json, a CI-only action), validate the thing that bump can actually break instead:
cd automation/appium/wdio && npm ci # installs under the bumped lockfile
npx tsc --noEmit -p tsconfig.json # type-check the harness
npm run test:unit # headless .mjs unit testsJudge by delta, not absolute count: a major like typescript 5→6 may print pre-existing errors that have nothing to do with the bump. Re-run the identical check with the old version pinned (npx -p typescript@<old> tsc --noEmit -p tsconfig.json) on the same tree and diff the output — only new errors are the bump's fault. (The wdio harness runs no tsc in CI and executes specs via ts-node, so a type error there is informational, not a build break.) These bumps carry no app surfaces, so they stop at Stage B → classify; there is no Stage C/D.
Validates UI, onboarding, and settings that do not need real DNS/VPN or StoreKit. The Mocked / FamilyMocked schemes stub NetworkExtension and the store, so this stage cannot validate Adapty purchase or protection start — that is Stage D.
# needs a dev ACCOUNT_ID, or .env.local SIX_DEV_ACCOUNT_ID / FAMILY_DEV_ACCOUNT_ID.
# run-*-mocked is an ios/ target, so invoke it with -C ios from the repo root.
make -C ios run-six-mocked ACCOUNT_ID=<dev-account> # or run-family-mockedThen drive it with the appium skill in simulator mode (IOS_USE_SIM=1): start make appium-explore-session IOS_USE_SIM=1, send ui.summary / ui.inspect, walk onboarding and the screens the bump could touch. See ios/SIMULATOR.md for the sim flow. Gate: app launches and the covered flows show no regression.
This is the gate for revenue/trust-critical bumps. Drive the physical device with the appium skill (physical mode needs elevated access — see its SKILL.md). A default make appium-explore-session IOS_DEVICE_NAME="<device>" already installs the current workspace build before driving it; use the install-only target below only when you want to install without launching a session:
make -C ios appium-install-six # or appium-install-family (install-only)Required first: run the whole smoke suite, not just the surface you think the bump touches. The appium-smoke.yml specs (automation/appium/wdio/src/specs/smoke/) exercise launch → onboarding → home → settings → paywall → protection → activity across the whole app, and a single dep can break a screen far from its stated surface — an image, widget, theme, or navigation library that maps to no payment/protection surface can still blank a screen the classifier would never have flagged. Run the full suite headless the way CI does — make appium-test (or the wdio runner the appium-smoke.yml workflow invokes) — and record it as real-device:smoke. A red smoke suite is a hard failure that stops the loop and forces an escalate, no matter how narrow the bump looked. Only after the full suite is green do the targeted spot-checks below add value.
Distinguish a real regression from an environment fault before you escalate. The physical smoke device is shared and can be left in a state a bump did not cause — an iOS system prompt awaiting a tap (sign-in, trust, software-update, storage), a locked screen, a stale WDA session, an expired provisioning profile. Tells: every spec fails in its before all at the same generic step (e.g. a settings/home element never appears) while the app itself launched, or the failure reproduces on a revert of the suspect commit — an identical failure on a build that no longer contains the change is the environment, not the dep. When you see that, do not revert or hold the bump: report the device fault, and re-run once the device is cleared (a human may need to dismiss the on-device prompt). Reserve the regression verdict for a failure whose signature ties to the bump (a screen the dep renders, an SDK-init error in device-log, a diff that reverting actually fixes).
Then exercise the surfaces the bump implicates, via appium — it is not a human runbook: paywall display, then purchase and restore (Adapty); and protection start (DNS/VPN). The one step you cannot drive is the StoreKit sandbox purchase sheet (a system UI), so the host needs a sandbox Apple ID signed in (Settings → App Store) for the purchase/restore leg.
Record Stage D as per-check stages, not one monolithic stage, so the report can tell a seam from a missing device. Name them real-device:smoke (the full suite, required), real-device:paywall, real-device:protection, real-device:purchase, etc. Mark the ones you drove pass/fail. Mark real-device:smoke blocked (not fail) when the failure is an environment fault per the paragraph above, so the report asks for a device clear + re-run rather than escalating the bump. If you reached the paywall but the sandbox purchase sheet stopped you, mark real-device:purchase blocked while the others stay pass — report.mjs then escalates only that seam (not "re-run on a device"). Only when no device stage ran at all does it emit the re-run escalation.
Pull logs with device-log and scan for SDK-init / payment / tunnel errors:
node automation/device/log.mjs
node automation/device/log.mjs ARTIFACT=crash # if the app terminatedCapture screenshots (ui.screenshot) of the paywall / purchase result as report artifacts. Treat one flaky device failure as flaky: re-run the stage once before calling it a real regression.
After a merge, read the physical-device smoke the appium-smoke.yml workflow runs:
gh run list --workflow appium-smoke.yml --repo blokadaorg/blokada --limit 5
gh run view <run-id> --repo blokadaorg/blokada --logPass/fail is in the job log; failure artifacts (screenshots, XML) are under automation/appium/output/ on the run. If post-merge smoke fails, recommend rollback in your report.
You are deciding one thing: is this bump pure internal/core refactoring you can validate and proceed on, or a behavioral change that needs a human's judgement? Read three signals:
queue.mjs already mapped high-risk packages to surfaces. Adapty → payment, WireGuard → protection, Firebase → messaging, pigeon → platform-bridge, gradle/AGP → build-system. Any of these is behavioral until proven otherwise. A no-surface mapping is not a safe signal for a UI-rendering dep — an image / widget / theme / navigation / flutter_* UI library carries a platform-ui risk that no surface tag captures, so it still owes the full real-device:smoke suite before it can proceed.offlistFiles in the queue entry means the PR touches code beyond the dependency manifests; inspect that diff (gh pr diff <pr>), it is not a pure bump.BREAKING CHANGE, migration language ("must migrate", "action required" with steps), public API removal your code calls, or a StoreKit/entitlement/paywall-config delta. Do not escalate on bare "behavior change", internal-only changes, or deprecation without removal.Decide:
real-device:smoke full suite for any bump that renders on device (all app-surface bumps and every UI-rendering dep), AND no behavioral signal on payment / entitlement / onboarding / protection AND no high-risk package surprise. Record the validated result; the bump can follow the normal merge path. Write the report (artifact only, no PR comment). Never proceed off Stage B/C alone for a UI-rendering dep — the smoke suite is the required gate.real-device:smoke suite (any spec, however unrelated the bump looks), or a Stage D / post-merge smoke failure. A red smoke stops the loop; recommend hold/revert with the failing-spec evidence. Do not settle it in code. Surface the specific question with evidence.Build a JSON decision payload (schema in automation/dep-validate/report.mjs) and pipe it in. The report artifact is always written; the PR comment fires only on escalate.
echo "$payload" | node automation/dep-validate/report.mjs --commentautomation/dep-validate/output/<pr>-<timestamp>.md — full evidence (commands, per-stage pass/fail, log excerpts, screenshot paths, classification rationale).real-device:* stages (see §2 naming) + surfaces; both phrasings are deliberately not a human step-by-step — the agent runs the loop:real-device:* stage blocked/skip) → "real-hardware validation pending": re-run this agent on a device-connected host, with the surfaces still unvalidated.real-device:* passed, but a purchase/restore one is blocked) → a focused "sandbox-sheet seam" note: confirm purchase/restore on the host or accept the residual risk. No re-run message.pass/fail), neither block appears.Keep the public-repo comment free of any private issue-tracker detail. Reference the tracker as #320 or a full URL, never with a closing keyword (fixes/closes), to avoid cross-repo auto-close.
ACCOUNT_ID or .env.local SIX_DEV_ACCOUNT_ID / FAMILY_DEV_ACCOUNT_ID. If absent, mark the stage blocked and escalate — do not hang.appium-smoke.yml uses, and you run it there yourself. If no device is reachable, mark Stage D blocked — report.mjs then emits the device-gap escalation (§4): re-run this agent on a device-connected host. Do not turn that into a human step-by-step; the agent runs the loop. Never mark a revenue/protection bump validated off a mocked run alone.device-log are not) need elevated access from the sandbox — request it before the install / Appium / devicectl steps, same as the appium and device-log skills note.device-log and the real-device appium path are iOS only. On-device Android validation (adb install, adb logcat inspection) is a documented follow-up, not built yet — for an Android bump, run Stage B (the assemble below), then escalate the on-device check.make build-android-six-debug, not make -C android apk-six-debug. The bare apk-six-debug target assumes the Flutter module AAR (org.blokada.flutter.common:flutter_debug) is already published to the local maven repo; on a fresh checkout it fails with Could not find …:flutter_debug:1.0. make build-android-six-debug runs regen-android first (pub get, pigeon/codegen, lib-debug → builds the AAR) and then the assemble. Use apk-family-debug analogously for the family flavor (Adapty is a sixImplementation, so six is the flavor that exercises payment).android assemble job, so the bump's PR is red before you start. Value-add here is the why and the fix, not "build failed". Two distinct failure modes, with different diagnoses — tell them apart before writing the escalation:#1078: bumped androidx requiring a newer AGP / compileSdk than the repo pins). The fix is ordering: which toolchain bump (AGP #1080, gradle-wrapper #1079) or manual change (compileSdk raise — no Dependabot PR covers it) must land first. Diagnose by comparing the library's required AGP/compileSdk/minSdk floors against the repo's (android/build.gradle classpath, android/app/build.gradle compileSdk/minSdkVersion).git fetch origin <partner-branch> and git checkout FETCH_HEAD -- <its files> onto the tree, and build. Concrete pilot: #1080 (AGP 9.2.1) alone fails Minimum supported Gradle version is 9.4.1. Current version is 8.13 — needs #1079 (Gradle 9.5.1). But overlaying #1079 and rebuilding then fails again at Cannot add extension with name 'kotlin' — AGP 9.0 defaults android.builtInKotlin=true and applies the Kotlin plugin itself, colliding with the repo's explicit apply plugin: 'kotlin-android'. So the real answer is "merge #1079, then remove the explicit kotlin-android apply (or set builtInKotlin=false), then #1080" — which you only learn by building the pair, not by reading floors. (#1079 itself is CI-green standalone and a clean proceed; it also regenerates gradlew/gradlew.bat to the stock Apache wrapper, dropping the repo's custom header — cosmetic for CI/CLI.)#1081: firebase-bom 34 deleted the -ktx modules, so firebase-messaging-ktx resolved an empty version → Could not find …-ktx:.). The repo's toolchain floors are fine; the bump dropped or renamed a coordinate the build still references. Diagnose by reading the bump's release notes for removed/renamed/merged artifacts, then grep whether the code actually consumes the removed surface (here FcmService.kt used only the main com.google.firebase.messaging.* API, no .ktx import) — that tells you whether the fix is a clean manifest rename or also needs source edits. The fix is a one-line manifest edit Dependabot can't make, so the bump can't merge as-is; recommend hold + the exact edit.queue.mjs are drift notes; bumping a submodule pointer or an SPM package pin (Firebase, Factory, CodeScanner in ios/IOS.xcodeproj/project.pbxproj) is a manual change with no Dependabot PR to drive the loop. Latest-version lookup for SPM packages is left to you.appium-smoke.yml contend for the same device; serialize, do not run them at once.automation/dep-validate/lib/queue.mjs ports the allowlist + major-bump rules from .github/workflows/dependabot-auto-merge.yml. If that workflow's allowlist changes, mirror it here.© blokadaorg, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/dep-validate of blokadaorg/blokada.
Open the folder on GitHubat commit 5279136
Dep Validate next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Dep Validate this skillblokadaorg/blokada | 3.3k | — | ~5.7k | Automated safety check: Notes | MPL-2.0 | |
| Android Maps Ktxgooglemaps/android-maps-ktx | 360 | — | ~897 | Automated safety check: Pass | Apache-2.0 | |
| File Good First BugBrowserWorks/waterfox-android | 379 | 2 repos | ~2k | Automated safety check: Pass | Custom licence | |
| Code Guidelinesgetsentry/sentry-react-native | 1.8k | — | ~3.2k | Automated safety check: Pass | MIT | |
| Python Project Creatorhaddock-development/claude-reflect-system | 379 | — | ~1.4k | Automated safety check: Notes | None | |
| Swift Concurrencysupabitapp/supaterm | 172 | — | ~3.3k | Automated safety check: Pass | Custom licence |
googlemaps/android-maps-ktx
Provides idiomatic Kotlin extension (KTX) patterns, reactive Flow event streams, and multi-subscriber shareIn rules for Google Maps SDK for Android and its Utility Library.
BrowserWorks/waterfox-android
A skill your agent uses when the user wants to file good-first-bugs in Bugzilla for Firefox.
getsentry/sentry-react-native
Enforce Sentry React Native SDK code guidelines for implementation, refactoring, and review.
haddock-development/claude-reflect-system
Creates Python projects with proper structure, virtual environments, and dependency management.
supabitapp/supaterm
Diagnose data races, convert callback-based code to async/await, implement actor isolation patterns, resolve Sendable conformance issues, and guide Swift 6 migration.
AFK-surf/OpenBridge
Expert guidance on Swift Concurrency best practices, patterns, and implementation.
blokadaorg/blokada
A skill your agent uses for dynamic inspection and navigation of the Blokada app through the repo-local Appium machine session.
blokadaorg/blokada
A skill your agent uses for pulling recent Blokada app logs from a connected device, using the same share-log file exposed in Settings.
Categories
A skill your agent uses to validate risky dependency bumps end to end as a local or cloud-launched agent. Dep Validate is an agent skill from blokadaorg/blokada. Use to validate risky dependency bumps end to end as a local or cloud-launched agent.
Dep Validate fits situations like: validate risky dependency bumps end to end as a local; cloud-launched agent; A Dependabot PR was handed to a human (major version; migration-flagged).
Run `npx skills add blokadaorg/blokada --skill dep-validate -a claude-code`. Or copy the skill folder (.agents/skills/dep-validate in blokadaorg/blokada) into .claude/skills/dep-validate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add blokadaorg/blokada --skill dep-validate -a codex`. Or copy the skill folder (.agents/skills/dep-validate in blokadaorg/blokada) into .agents/skills/dep-validate in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add blokadaorg/blokada --skill dep-validate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dep-validate, .gemini/skills/dep-validate, .github/skills/dep-validate and .opencode/skills/dep-validate in your project.
Going by SKILL.md and its folder, Dep Validate needs the command-line tools its instructions call (make, git, node, gh, npm and npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use git, gh, npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Dep Validate is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Dep Validate: Android Maps Ktx (googlemaps/android-maps-ktx, 360 stars), File Good First Bug (BrowserWorks/waterfox-android, 379 stars), Code Guidelines (getsentry/sentry-react-native, 1.8k stars) and Python Project Creator (haddock-development/claude-reflect-system, 379 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
blokadaorg (a GitHub organization) maintains it in blokadaorg/blokada, which has 3,266 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 7, 2026.
Source: blokadaorg/blokada on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.