ml-kit-genai-prompt-api — скилл для Claude Code: Prompt API
Скилл для Android-проектов: помогает подключить ML Kit GenAI Prompt API, разобрать вывод по схеме и настроить кеш префикса.
npx skills add android/skills --skill ml-kit-genai-prompt-api -a claude-codeЧто делает ml-kit-genai-prompt-api
Скилл разбирает Android-кодовую базу и ведёт по шагам интеграции ML Kit GenAI Prompt API — запросы на естественном языке уходят к Gemini Nano прямо на устройстве, без сервера. Внутри четыре блока: оптимизация промпта, кеширование префикса, жизненный цикл модели и структурированный вывод.
Перед началом придётся поднять minSdk до 26 и добавить в build.gradle уровня приложения зависимость com.google.mlkit:genai-prompt версии не ниже 1.0.0-beta4. Если в проекте уже есть com.google.mlkit:genai-schema-compiler, а KSP ниже 2.3.6, плагин тоже обновляется — иначе сборка со схемами не пройдёт.
Отдельная часть — структурированный вывод: скилл проверяет доступность функции через isStructuredOutputFeatureAvailable() и переписывает функции так, чтобы они возвращали типизированный объект @Generable вместо строки с JSON. Для промптов длиннее 200 слов он советует включить кеширование префикса, а инстансы ML Kit закрывать через close() при уничтожении Activity, Fragment или ViewModel.
Какие задачи решает
- подключить ML Kit GenAI Prompt API к Android-приложению
- перевести парсинг ответа модели со строки на типизированный объект
@Generable - включить кеширование префикса для длинных промптов
- проверить, что модель скачана и её
FeatureStatusравенAVAILABLE, до первого запроса - закрывать инстансы ML Kit при уничтожении экрана или ViewModel
Примеры запросов агенту
- Подключи ML Kit GenAI Prompt API в этом проекте и проверь, что minSdk не ниже 26
- Перепиши parseEmail так, чтобы функция возвращала
@Generable-объект вместо строки - Промпт длиннее 200 слов — добавь кеширование префикса и проверь FeatureStatus модели
Как установить ml-kit-genai-prompt-api
1Через Skills CLI (Vercel)
npx skills add android/skills --skill ml-kit-genai-prompt-api -a claude-code2Вручную: положить файлы
~/.claude/skills/ml-kit-genai-prompt-api/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/ml-kit-genai-prompt-api/
1Через Skills CLI (Vercel)
npx skills add android/skills --skill ml-kit-genai-prompt-api -a codex2Вручную: положить файлы
.agents/skills/ml-kit-genai-prompt-api/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add android/skills --skill ml-kit-genai-prompt-api -a cursor2Вручную: положить файлы
.cursor/skills/ml-kit-genai-prompt-api/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install android/skills ml-kit-genai-prompt-api2Вручную: положить файлы
.github/skills/ml-kit-genai-prompt-api/SKILL.md1Через Skills CLI (Vercel)
npx skills add android/skills --skill ml-kit-genai-prompt-api -a gemini-cli2Командой платформы
gemini skills install https://github.com/android/skills --path device-ai/ml-kit-genai-prompt-apiВручную: положить файлы
.devin/skills/ml-kit-genai-prompt-api/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add android/skills --skill ml-kit-genai-prompt-api -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о ml-kit-genai-prompt-api
Как установить ml-kit-genai-prompt-api в Claude?
Выполните npx skills add android/skills --skill ml-kit-genai-prompt-api -a claude-code. Скилл появится в ~/.claude/skills/ml-kit-genai-prompt-api/SKILL.md.
Что делает ml-kit-genai-prompt-api?
Анализирует Android-код и подсказывает шаги для ML Kit GenAI Prompt API: оптимизацию промпта, кеш префикса, структурированный вывод и освобождение ресурсов модели.
Что нужно подготовить до работы скилла?
Android API level 26 или выше, зависимость com.google.mlkit:genai-prompt версии не ниже 1.0.0-beta4 в build.gradle приложения и KSP 2.3.6, если используется com.google.mlkit:genai-schema-compiler.
Исходный текст
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