Maintain Java-only Android projects and Kotlin/Java interoperability inside Android apps or libraries, including Java source sets, AndroidX Java APIs, annotations, nullability, SAM boundaries, generated bytecode expectations, public API compatibility, tests, lint, and migration guardrails.
Scanned 9/5/2026
Install to Claude Code
npx -y skills add gaelic-ghost/socket --skill java-android-workflow --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Java Android Workflow?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gaelic-ghost-java-android-workflow)More formats (shields.io, HTML) on the badges page.
---
name: java-android-workflow
description: Maintain Java-only Android projects and Kotlin/Java interoperability inside Android apps or libraries, including Java source sets, AndroidX Java APIs, annotations, nullability, SAM boundaries, generated bytecode expectations, public API compatibility, tests, lint, and migration guardrails.
license: Apache-2.0
compatibility: Designed for Codex and compatible Agent Skills clients working with Java Android projects or mixed Kotlin/Java Android modules.
metadata:
owner: gaelic-ghost
repo: socket
category: android-java
allowed-tools: Read Edit Bash(rg:*) Bash(git:*) Bash(java:*) Bash(javac:*) Bash(./gradlew:*) Bash(gradle:*)
---
# Java Android Workflow
## Purpose
Preserve Java Android codebases and make Kotlin/Java boundaries explicit when Android modules are mixed-language.
The practical decision is whether to stay Java-only, add Kotlin interop carefully, or route implementation to Kotlin-first guidance without forcing a migration.
## Source Check
Use repo-local Java, Kotlin, Gradle, and Android files first. Use Dash.app Java or Gradle docsets opportunistically for installed local reference. Use official documentation as authority for Android-specific APIs, Kotlin Java interop, AndroidX behavior, and version-sensitive rules:
- [Android Developers documentation](https://developer.android.com/docs)
- [Java documentation](https://docs.oracle.com/en/java/)
- [Kotlin Java interoperability documentation](https://kotlinlang.org/docs/java-interop.html)
- [AndroidX documentation](https://developer.android.com/jetpack/androidx)
- [Android build documentation](https://developer.android.com/build)
Translate documentation into concrete API, annotation, source-set, or validation choices.
## Inspection Workflow
1. Inspect source ownership:
- `src/main/java`
- `src/main/kotlin`
- generated sources
- public Android library APIs
- Java callers of Kotlin code and Kotlin callers of Java code
2. Identify interop boundaries:
- nullability annotations
- `@JvmName`, `@JvmOverloads`, `@JvmStatic`, `@JvmField`, or `@Throws`
- SAM conversions and functional interfaces
- checked exceptions and callback APIs
- data classes, sealed classes, objects, companion objects, and generated bytecode as seen from Java
3. Preserve Java-only projects:
- keep Java examples and implementation idiomatic for the existing codebase
- do not add Kotlin plugin or Kotlin sources without user approval
- keep AndroidX and Java language level aligned with repo configuration
4. Maintain mixed projects:
- keep public APIs friendly from both languages when they already cross the boundary
- use annotations for nullability and threading where the repo already does
- keep generated binding, Room, Hilt, KSP, KAPT, or annotation processing behavior explicit
5. Validate:
- compile or assemble the affected module
- run unit tests that exercise the Java/Kotlin boundary
- run lint when annotations, threading, lifecycle, resources, or Android APIs changed
## Implementation Guidance
- Prefer Java implementation in Java-dominant Android modules.
- Prefer Kotlin implementation in Kotlin-dominant modules unless Java API compatibility owns the change.
- Keep Android callbacks, listeners, and lifecycle methods readable from the language that owns the file.
- Preserve binary and source compatibility for Android libraries unless the user approves a breaking change.
- Document migration decisions in repo-facing docs only when the task changes project policy.
## Output Shape
Return:
1. `Language owner`: Java-only, Kotlin-first, mixed, or migration decision needed.
2. `Interop boundary`: APIs, annotations, generated code, callbacks, nullability, or bytecode concerns.
3. `Affected modules`: module, source set, public APIs, tests, and generated sources.
4. `Validation path`: exact Gradle commands.
5. `Risk`: migration, binary compatibility, annotation processing, nullability, or public API risk.
## Guardrails
- Do not rewrite Java Android code to Kotlin just because Kotlin is preferred for new Android work.
- Do not add Kotlin to a Java-only project without an explicit user decision.
- Do not expose awkward Kotlin APIs to Java callers when public interop matters.
- Do not drop nullability, threading, or lifecycle annotations casually.
- Do not route backend Java services through this skill.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!