Convention compliance reviewer grounded in ApkAnalyzer's AGENTS.md files and docs/engineering/ conventions. Cites the exact rule it's enforcing. Never invents conventions.
Validates a single issue raised by a reviewer leaf. Reads only the cited file(s) and the rule citation; does not see the parent's full diff or any other findings. Returns YES/NO + confidence.
Fast classifier that decides whether a diff qualifies for an automatic SKIP verdict in /verify. Returns YES for doc-only edits, version-catalog version bumps, lock-file/generated-file changes; NO for anything that compiles or runs.
Linter pass over a /verify report. Receives the report path and emits one enumerated audit row per finding with a verdict (KEEP, CUT, UNSURE), the trigger that fired, and a one-line reason. Verifies each finding's evidence against the actual code, git state, or AGENTS.md where it can. Runs as the last stage of…
Use to check GitHub Actions build status or diagnose why a workflow run failed and propose a fix. Triggered by phrases like "check the latest build", "did CI pass", "why did the build fail", "check the GitHub Actions run", "analyze this workflow run", "check run ", "check the build for this PR".
Use when discovering, implementing, documenting, or testing Android App Functions (androidx.appfunctions) that expose app capabilities to on-device AI agents like Gemini. Triggered by phrases like "add an app function", "implement AppFunctions", "expose this as an app function", "discover app function candidates"…
Use to record or convert ApkAnalyzer app flows into screenshots or GIFs for the README or product docs. Triggered by phrases like "add screenshots", "convert videos to gifs", "record a gif of this flow", "capture app screenshots", "update the README screenshots", "make a demo gif".
Use when creating a new reusable Compose UI component that should live in core:ui-library. Triggered by phrases like "add UI component", "create component", "add reusable composable", "new composable component", "create a card", "create a button variant", "add to ui library".
Use when creating a new core or shared library module for domain logic, data access, repositories, managers, or utilities. Triggered by phrases like "create core module", "add repository", "new data layer", "create shared module", "add manager".
Use when creating a new feature module, screen, or feature area. Triggered by phrases like "create feature", "add feature module", "new feature", "create a screen for", "add new screen".
Use to fix a specific production crash or non-fatal — pulling its Crashlytics data, finding the linked GitHub issue, root-causing it, reproducing it, fixing it, and verifying the fix without breaking stored-data compatibility. Triggered by phrases like "fix this crash", "fix issue.
Use whenever creating a git commit in this repo. Commits must always be authored as the human user only — never as Claude, never with a Claude/AI co-author trailer. Triggered by any commit creation in this repository.
Use when adding a new screen destination to a feature, wiring navigation between screens, implementing an entry provider, or connecting NavKeys. Triggered by phrases like "navigate to", "add screen to feature", "wire navigation", "entry provider", "add destination", "navigate from X to Y".
Use to drive ApkAnalyzer's UI on a connected device/emulator via adb — dumping the screen, finding a tappable element by its visible text or content description, and tapping it — to inspect or verify a change without a human touching the device. Triggered by phrases like "navigate to X screen", "tap through the app"…
Use to cut a release of ApkAnalyzer — pick the MAJOR.MINOR.PATCH version, draft release notes, get them approved, and create the annotated tag that drives the release pipeline. Triggered by phrases like "release the app", "cut a release", "ship 3.6.0", "tag a release", "make a new version", "release notes for the next…
Use to build, install, and launch ApkAnalyzer on a connected device or emulator, or to verify a code change actually works at runtime rather than just compiling. Triggered by phrases like "run the app", "install on device", "launch the app", "try it on my phone", "deploy to device", "see if this works", "run it".
Use when setting up a new machine for this repo, checking whether required tools (gh, JDK, Android SDK, Firebase CLI) are installed and authenticated. Triggered by phrases like "set up my environment", "what do I need to install", "onboard me on this repo", "check my dev tools", "set up the firebase cli", "set up gh…
Use when fixing code formatting errors, ktlint violations, or style issues. Run after generating or modifying Kotlin files. Triggered by phrases like "fix formatting", "spotless", "ktlint error", "formatting violation", "fix code style", "run spotless".
Maintain the Apk Analyzer Play Store screenshot carousel templates (docs/store/graphics/carouseltemplate.html and carouseltemplatedark.html) and export their frames as upload-ready PNGs (docs/store/graphics/phone-screenshots/day and night). Covers two independent workflows — editing (swap in new screenshots after a UI…
Use when translating tweaks made in the "Apk Analyzer Design System" Claude Design project (claude.ai/design) back into actual Kotlin/Compose code in this repo. Triggered by phrases like "sync design changes", "bring in the Claude Design edits", "implement what I changed in Claude Design", "apply the design tweaks"…
Use when adding a new user-facing string, changing existing English copy, or adding/auditing a locale's strings.xml translations. Triggered by phrases like "translate strings", "add translation", "update translations", "localize this screen", "add a new language", "sync locale strings", "translate to ".
Use to review production Crashlytics crashes and non-fatals for the latest release and file a GitHub issue for each one that isn't tracked yet. Triggered by phrases like "triage crashes", "check production crashes", "look at Crashlytics", "any new crashes", "review non-fatals", "file issues for the latest release…