Skip to content
Development
Skill

/java-android-workflow

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

From plugin
socket
7200 skills5 MCP
Install
$ npx -y skills add gaelic-ghost/socket --skill java-android-workflow --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/java-android-workflow

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

SKILL.md

java-android-workflow.SKILL.md
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.
Read more
Ships withsocket

Stuff for Agents on macOS Promo audio: Socket Codex Marketplace Promo

Get the whole plugin

Other skills on socket.