Skip to main content
skill CX Codex

ml-kit-genai-prompt-api — Claude Code skill for on-device Prompt API

An Android skill that walks your codebase through ML Kit GenAI Prompt API: on-device Gemini Nano calls, typed output and prefix caching.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add android/skills --skill ml-kit-genai-prompt-api -a claude-code
Open on GitHub

What ml-kit-genai-prompt-api does

The skill reads an Android codebase and lays out the steps for wiring in the ML Kit GenAI Prompt API, which sends natural language requests to Gemini Nano on the device. It covers four areas: prompt optimization, prefix caching, model lifecycle and structured output.

Setup comes first. minSdk has to be 26 or higher, and the app-level build.gradle needs the com.google.mlkit:genai-prompt dependency at version 1.0.0-beta4 or above. If com.google.mlkit:genai-schema-compiler is already in the project and KSP sits below 2.3.6, the plugin gets bumped too — otherwise the schema build breaks.

For structured output the skill checks isStructuredOutputFeatureAvailable() on the device, then refactors functions to return a @Generable typed object instead of a JSON string. Prompts over 200 words get the prefix caching API. Instances of ML Kit are released with close() when an Activity, Fragment or ViewModel is destroyed, and the model must report FeatureStatus as AVAILABLE before the first inference.

What it helps with

  • add ML Kit GenAI Prompt API to an Android app
  • replace string parsing with a @Generable typed return value
  • turn on prefix caching for prompts longer than 200 words
  • confirm the model is downloaded and FeatureStatus is AVAILABLE before inference
  • release ML Kit instances when an Activity or ViewModel is destroyed

Example prompts for the agent

  • Wire up the ML Kit GenAI Prompt API in this project and check that minSdk is at least 26
  • Refactor parseEmail to return a @Generable object instead of a string
  • This prompt is over 200 words — add prefix caching and verify the model's FeatureStatus

How to install ml-kit-genai-prompt-api

1Skills CLI (Vercel)

npx skills add android/skills --skill ml-kit-genai-prompt-api -a claude-code

2Manually: put the files in place

~/.claude/skills/ml-kit-genai-prompt-api/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/ml-kit-genai-prompt-api/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about ml-kit-genai-prompt-api

How do I install ml-kit-genai-prompt-api in Claude?

Run npx skills add android/skills --skill ml-kit-genai-prompt-api -a claude-code. The skill lands in ~/.claude/skills/ml-kit-genai-prompt-api/SKILL.md.

What does ml-kit-genai-prompt-api do?

It analyzes Android code and guides you through the ML Kit GenAI Prompt API: prompt optimization, prefix caching, structured output and releasing model resources.

What has to be in place before using the skill?

Android API level 26 or higher, the com.google.mlkit:genai-prompt dependency at 1.0.0-beta4 or above in the app-level build.gradle, and KSP 2.3.6 if com.google.mlkit:genai-schema-compiler is used.

Source text

SKILL.md · Apache-2.0
---
name: ml-kit-genai-prompt-api
description: Analyzes Android codebases to implement ML Kit GenAI Prompt API. Use
  this skill to send natural language requests on-device to Gemini Nano, use structured
  output with Prompt API, implement prefix caching, optimize the current prompt, or
  apply best practices."
license: Complete terms in LICENSE.txt
metadata:
  author: Google LLC
  last-updated: '2026-09-03'
  keywords:
  - ML Kit
  - Prompt API
  - Structured Output
  - Prefix Caching
  - Gemini Nano
---

This skill provides step-by-step guidance for integrating and optimizing the ML
Kit GenAI Prompt API in Android apps.

## Prerequisites

- Android API level must be 26 or higher. If `minSdk` is below 26, update it to 26.
- Add the ML Kit GenAI Prompt API dependency (`com.google.mlkit:genai-prompt`) to the app-level `build.gradle` file, with version at least `1.0.0-beta4`.
- If `com.google.mlkit:genai-schema-compiler` dependency is used and KSP plugin version is below 2.3.6, update it to 2.3.6.

## Detailed steps

### 1. Prompt optimization

To optimize prompts for use with the ML Kit Prompt API, follow the
[prompt optimization guide](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prompt-optimization).

### 2. Prefix caching optimization

If the prompt is more than 200 words, implement the [prefix caching API](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prefix-caching).

### 3. Lifecycle and best practices

- The model must be fully downloaded and available before calling the first inference. Follow the guide on [implementing a generative model](https://developer.android.com/agents/skills/device-ai/prompt-api/references/get-started) to check that the `FeatureStatus` of a model is `AVAILABLE` before making an inference.
- Release ML Kit instances by calling `close()` when an `Activity`,
  `Fragment`, or `ViewModel` is destroyed. Example:


  ```kotlin
  // Instantiating model in activity, fragment, or ViewModel
      val generativeModel = Generation.getClient()

  // When activity, fragment, or ViewModel is destroyed
      generativeModel.close()
  ```

  <br />

### 4. Structured output

When implementing or refactoring a prompt to use structured output, follow
these rules:

1. **Check for API availability:** Verify Structured Output feature is available on the device with `isStructuredOutputFeatureAvailable()` before using it. Refer to the [Structured Output API guide](https://developer.android.com/agents/skills/device-ai/prompt-api/references/structured-output) for full instructions.
2. **Return type:** Return the `@Generable` typed object from the function
   signature instead of a `String` or JSON string.

   For example:

       fun parseEmail(email: String): String {
           ... 
       }

   should be refactored to:

       fun parseEmail(email: String): ParsedEmail? {
           ...
       }

3. **Example:**

   This is the example code before refactoring:


   ```kotlin
   suspend fun parseEmail(email: String): String {
       val parseEmailPrompt = "Parse this email and return the sender, title, and short summary of the email less than 10 words: "

       val parsedEmail = generativeModel.generateContent(parseEmailPrompt + email)

       return parsedEmail.candidates[0].text
   }
   ```

   <br />

   This is the example code after using Structured Output API:


   ```kotlin
   @Generable
   data class ParsedEmail(
       @Guide(description = "Sender of the email")
       var sender: String = "",

       @Guide(description = "Title of the email")
       var title: String = "",

       @Guide(description = "Summary of the email less than 10 words")
       var summary: String = ""
   )

   suspend fun parseEmail(email: String): ParsedEmail? {
       val parseEmailPrompt =
           "Parse this email: $email"

       val baseRequest = GenerateContentRequest.Builder(TextPart(parseEmailPrompt)).build()
       val typedRequest = generateTypedContentRequest(baseRequest, ParsedEmail::class)
       val typedResponse = generativeModel.generateContent(typedRequest)
       return typedResponse.candidates[0].response
   }
   ```

   <br />

© Google LLC · Apache-2.0 · android/skills

Similar skills

Everything for Mobile →

From the same set24

camerax Guides Android camera development using CameraX, Jetpack, and Media3. Useful when wiring video capture, handling foldables, or migrating from Camera2. CX Codex +1 1,200installs agp-9-upgrade Moves an Android project from AGP 8 to Android Gradle Plugin 9 step by step: dependency bumps, built-in Kotlin, the new DSL, kapt cleanup. CX Codex +1 1,200installs android-profiler Captures and inspects Android performance metrics, from Perfetto traces and memory leaks to frame drops and battery drain. CX Codex +1 1,000installs leanback-to-compose-tv-migration A skill that guides the move from Leanback and Android Views to Jetpack Compose for TV. Useful when a browse, settings or playback screen needs rewriting. CX Codex +1 772installs media3-cast-integration Adds Google Cast capabilities to Android projects using Jetpack Media3. It configures dependencies, manifest entries, CastPlayer or RemoteCastPlayer, and Compose UI controls. CX Codex +1 771installs restore-credentials This skill guides Android Restore Credentials integration with androidx.credentials for silent sign-in after an app is restored on a new device. CX Codex +1 638installs navigation-event Intercepts back gestures and sets up Predictive Back animations via androidx.navigationevent in Compose Android. Helps migrate from legacy BackHandler. CX Codex +1 546installs android-permissions-security Audits an Android project for permission and IPC holes: weak custom permissions, spoofable caller checks, over-broad URI grants. Useful when reviewing AndroidManifest.xml. CX Codex +1 508installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor