Clerk Android (Native)
This skill implements Clerk in native Android projects by following current clerk-android SDK and docs patterns.
Activation Rules
Activate this skill when either condition is true:
- The user explicitly asks for Android, Kotlin, Jetpack Compose, or native mobile Clerk implementation on Android.
- The project appears to be native Android (for example
build.gradle(.kts) with Android plugins, AndroidManifest.xml, app/src/main/java, Compose UI files).
Do not activate this skill when either condition is true:
- The project is Expo.
- The project is React Native.
If Expo/React Native signals are present, route to the general setup skill instead.
What Do You Need?
| Task |
Reference |
| Prebuilt AuthView / UserButton (fastest) |
references/prebuilt.md |
| Custom API-driven auth flows (full control) |
references/custom.md |
Quick Start
| Step |
Action |
| 1 |
Confirm project type is native Android and not Expo/React Native |
| 2 |
Determine flow type (prebuilt or custom) and load the matching reference file |
| 3 |
Ensure a real Clerk publishable key exists (or ask developer) |
| 4 |
Ensure correct Clerk artifacts are installed for the selected flow |
| 5 |
Read official Android quickstart and verify required setup (Native API, min SDK/Java, manifest, initialization) |
| 6 |
Inspect clerk-android source/sample patterns relevant to selected flow |
| 7 |
Implement flow by following only the selected reference checklist |
Decision Tree
User asks for Clerk in Android/Kotlin
|
+-- Expo/React Native project detected?
| |
| +-- YES -> Do not use this skill
| |
| +-- NO -> Continue
|
+-- Existing auth UI detected?
| |
| +-- Prebuilt views detected -> Load references/prebuilt.md
| |
| +-- Custom flow detected -> Load references/custom.md
| |
| +-- New implementation -> Ask developer prebuilt/custom, then load matching reference
|
+-- Ensure publishable key and SDK initialization path
|
+-- Ensure correct Android artifacts are installed
|
+-- Verify quickstart prerequisites in project
|
+-- Implement using selected flow reference
Flow References
After flow type is known, load exactly one:
- Prebuilt flow: references/prebuilt.md
- Custom flow: references/custom.md
Do not blend the two references in a single implementation unless the developer explicitly asks for a hybrid approach.
Interaction Contract
Before any implementation edits, the agent must have both:
- flow choice:
prebuilt or custom
- a real Clerk publishable key
If either value is missing from the user request/context:
- ask the user for the missing value(s)
- pause and wait for the answer
- do not edit files or install dependencies yet
Only skip asking when the user has already explicitly provided the value in this conversation.
Source-Driven Templates
Do not hardcode implementation examples in this skill. Inspect current clerk-android source/docs for the installed SDK version before implementing.
| Use Case |
Source of Truth |
SDK artifacts and dependency split (clerk-android-api vs clerk-android-ui) |
clerk-android README and Android install docs |
| SDK initialization and publishable key wiring |
Android quickstart and source/api/.../Clerk.kt |
| Prebuilt auth and profile behavior |
source/ui/.../AuthView.kt, source/ui/.../UserButton.kt, and prebuilt sample |
| Custom auth sequencing and factor handling |
source/ui/auth/*, source/api/auth/*, and custom-flows sample |
| Capability/feature gating from instance settings |
Clerk public fields (for example enabledFirstFactorAttributes, socialProviders, isGoogleOneTapEnabled, mfaIsEnabled) and environment model source |
| Required Android setup checklist |
Official Android quickstart (/docs/android/getting-started/quickstart) |
Execution Gates (Do Not Skip)
- No implementation edits before prerequisites
- Do not edit project files until flow type is confirmed and a valid publishable key is available.
- Missing flow or key must trigger a question
- If flow choice is missing, explicitly ask: prebuilt views or custom flow.
- If publishable key is missing/placeholder/invalid, explicitly ask for a real key.
- Do not continue until both answers are provided.
- Publishable key wiring mode is mandatory
- By default, wire the developer-provided key directly in
Clerk.initialize(...).
- Do not introduce secret-management indirection unless explicitly requested.
- Artifact install policy is mandatory
- Prebuilt flow: use
clerk-android-ui (includes API).
- Custom flow: use
clerk-android-api unless prebuilt components are explicitly requested.
- If Clerk artifacts are missing, add the latest stable release available.
- Android quickstart compliance is mandatory
- Verify Native API is enabled for the Clerk app.
- Verify Android requirements from quickstart are implemented in project (minimum SDK and Java target, manifest internet permission, app-level Clerk initialization).
- Verify app waits for SDK initialization (
Clerk.isInitialized) before assuming auth-ready state.
- Capability-driven behavior is mandatory
- Use Clerk runtime capability/settings state (for example enabled factors/social providers/MFA flags) to gate flow behavior.
- Do not hardcode factor assumptions that may conflict with dashboard configuration.
- Reference-file discipline is mandatory
- Once flow is selected, follow only that flow reference file for implementation and verification.
- Custom-flow structure parity is mandatory
- For
custom flow, preserve multi-step auth progression and factor-specific handling (no single all-fields form by default).
- Keep UI, state orchestration, and Clerk API integration in separate modules.
- Prebuilt preference is mandatory when selected
- For
prebuilt flow, do not rebuild auth forms with custom API calls unless explicitly requested.
- Use
AuthView/UserButton as default building blocks.
Workflow
- Detect native Android vs Expo/React Native.
- If flow type is not explicitly provided, ask user for
prebuilt or custom.
- If publishable key is not explicitly provided, ask user for it.
- Wait for both answers before changing files.
- Load matching flow reference file.
- Ensure
Clerk.initialize(...) path and publishable key wiring are valid.
- Ensure dependencies/artifacts match selected flow.
- Review Android quickstart requirements and apply missing setup in project.
- Implement using selected reference checklist.
- Verify using selected reference checklist plus shared gates.
Common Pitfalls
| Level |
Issue |
Prevention |
| CRITICAL |
Not asking for missing flow choice before implementation |
Ask for prebuilt vs custom and wait before edits |
| CRITICAL |
Not asking for missing publishable key before implementation |
Ask for key and wait before edits |
| CRITICAL |
Starting implementation before flow type is confirmed |
Confirm flow first and load matching reference |
| CRITICAL |
Skipping Android quickstart prerequisites |
Verify and apply required setup from official Android quickstart |
| CRITICAL |
Missing app-level Clerk.initialize(...) call |
Initialize Clerk from Application startup path |
| HIGH |
Wrong artifact for chosen flow |
Prebuilt: clerk-android-ui; custom: clerk-android-api |
| HIGH |
Rendering auth UI before SDK initialization completes |
Gate UI with Clerk.isInitialized state |
| HIGH |
Hardcoding auth factors/social providers |
Drive behavior from Clerk runtime capability fields |
| HIGH |
Using this skill for Expo/React Native |
Detect and route away before implementation |
See Also
../clerk/SKILL.md for top-level Clerk routing
../setup/SKILL.md for cross-framework quickstart setup
https://github.com/clerk/clerk-android
https://clerk.com/docs/android/getting-started/quickstart
1---2name: clerk-android3description: Implement Clerk authentication for native Android apps using Kotlin and Jetpack Compose with clerk-android source-guided patterns. Use for prebuilt AuthView/UserButton or custom API-driven auth flows. Do not use for Expo or React Native projects.4license: MIT5---67# Clerk Android (Native)89This skill implements Clerk in native Android projects by following current `clerk-android` SDK and docs patterns.1011## Activation Rules1213Activate this skill when either condition is true:14- The user explicitly asks for Android, Kotlin, Jetpack Compose, or native mobile Clerk implementation on Android.15- The project appears to be native Android (for example `build.gradle(.kts)` with Android plugins, `AndroidManifest.xml`, `app/src/main/java`, Compose UI files).1617Do not activate this skill when either condition is true:18- The project is Expo.19- The project is React Native.2021If Expo/React Native signals are present, route to the general setup skill instead.2223## What Do You Need?2425| Task | Reference |26|------|-----------|27| Prebuilt AuthView / UserButton (fastest) | references/prebuilt.md |28| Custom API-driven auth flows (full control) | references/custom.md |2930## Quick Start3132| Step | Action |33|------|--------|34| 1 | Confirm project type is native Android and not Expo/React Native |35| 2 | Determine flow type (`prebuilt` or `custom`) and load the matching reference file |36| 3 | Ensure a real Clerk publishable key exists (or ask developer) |37| 4 | Ensure correct Clerk artifacts are installed for the selected flow |38| 5 | Read official Android quickstart and verify required setup (Native API, min SDK/Java, manifest, initialization) |39| 6 | Inspect `clerk-android` source/sample patterns relevant to selected flow |40| 7 | Implement flow by following only the selected reference checklist |4142## Decision Tree4344```text45User asks for Clerk in Android/Kotlin46 |47 +-- Expo/React Native project detected?48 | |49 | +-- YES -> Do not use this skill50 | |51 | +-- NO -> Continue52 |53 +-- Existing auth UI detected?54 | |55 | +-- Prebuilt views detected -> Load references/prebuilt.md56 | |57 | +-- Custom flow detected -> Load references/custom.md58 | |59 | +-- New implementation -> Ask developer prebuilt/custom, then load matching reference60 |61 +-- Ensure publishable key and SDK initialization path62 |63 +-- Ensure correct Android artifacts are installed64 |65 +-- Verify quickstart prerequisites in project66 |67 +-- Implement using selected flow reference68```6970## Flow References7172After flow type is known, load exactly one:73- Prebuilt flow: [references/prebuilt.md](references/prebuilt.md)74- Custom flow: [references/custom.md](references/custom.md)7576Do not blend the two references in a single implementation unless the developer explicitly asks for a hybrid approach.7778## Interaction Contract7980Before any implementation edits, the agent must have both:81- flow choice: `prebuilt` or `custom`82- a real Clerk publishable key8384If either value is missing from the user request/context:85- ask the user for the missing value(s)86- pause and wait for the answer87- do not edit files or install dependencies yet8889Only skip asking when the user has already explicitly provided the value in this conversation.9091## Source-Driven Templates9293Do not hardcode implementation examples in this skill. Inspect current `clerk-android` source/docs for the installed SDK version before implementing.9495| Use Case | Source of Truth |96|----------|-----------------|97| SDK artifacts and dependency split (`clerk-android-api` vs `clerk-android-ui`) | `clerk-android` README and Android install docs |98| SDK initialization and publishable key wiring | Android quickstart and `source/api/.../Clerk.kt` |99| Prebuilt auth and profile behavior | `source/ui/.../AuthView.kt`, `source/ui/.../UserButton.kt`, and prebuilt sample |100| Custom auth sequencing and factor handling | `source/ui/auth/*`, `source/api/auth/*`, and custom-flows sample |101| Capability/feature gating from instance settings | `Clerk` public fields (for example `enabledFirstFactorAttributes`, `socialProviders`, `isGoogleOneTapEnabled`, `mfaIsEnabled`) and environment model source |102| Required Android setup checklist | Official Android quickstart (`/docs/android/getting-started/quickstart`) |103104## Execution Gates (Do Not Skip)1051061. No implementation edits before prerequisites107- Do not edit project files until flow type is confirmed and a valid publishable key is available.1081092. Missing flow or key must trigger a question110- If flow choice is missing, explicitly ask: prebuilt views or custom flow.111- If publishable key is missing/placeholder/invalid, explicitly ask for a real key.112- Do not continue until both answers are provided.1131143. Publishable key wiring mode is mandatory115- By default, wire the developer-provided key directly in `Clerk.initialize(...)`.116- Do not introduce secret-management indirection unless explicitly requested.1171184. Artifact install policy is mandatory119- Prebuilt flow: use `clerk-android-ui` (includes API).120- Custom flow: use `clerk-android-api` unless prebuilt components are explicitly requested.121- If Clerk artifacts are missing, add the latest stable release available.1221235. Android quickstart compliance is mandatory124- Verify Native API is enabled for the Clerk app.125- Verify Android requirements from quickstart are implemented in project (minimum SDK and Java target, manifest internet permission, app-level Clerk initialization).126- Verify app waits for SDK initialization (`Clerk.isInitialized`) before assuming auth-ready state.1271286. Capability-driven behavior is mandatory129- Use Clerk runtime capability/settings state (for example enabled factors/social providers/MFA flags) to gate flow behavior.130- Do not hardcode factor assumptions that may conflict with dashboard configuration.1311327. Reference-file discipline is mandatory133- Once flow is selected, follow only that flow reference file for implementation and verification.1341358. Custom-flow structure parity is mandatory136- For `custom` flow, preserve multi-step auth progression and factor-specific handling (no single all-fields form by default).137- Keep UI, state orchestration, and Clerk API integration in separate modules.1381399. Prebuilt preference is mandatory when selected140- For `prebuilt` flow, do not rebuild auth forms with custom API calls unless explicitly requested.141- Use `AuthView`/`UserButton` as default building blocks.142143## Workflow1441451. Detect native Android vs Expo/React Native.1462. If flow type is not explicitly provided, ask user for `prebuilt` or `custom`.1473. If publishable key is not explicitly provided, ask user for it.1484. Wait for both answers before changing files.1495. Load matching flow reference file.1506. Ensure `Clerk.initialize(...)` path and publishable key wiring are valid.1517. Ensure dependencies/artifacts match selected flow.1528. Review Android quickstart requirements and apply missing setup in project.1539. Implement using selected reference checklist.15410. Verify using selected reference checklist plus shared gates.155156## Common Pitfalls157158| Level | Issue | Prevention |159|-------|-------|------------|160| CRITICAL | Not asking for missing flow choice before implementation | Ask for `prebuilt` vs `custom` and wait before edits |161| CRITICAL | Not asking for missing publishable key before implementation | Ask for key and wait before edits |162| CRITICAL | Starting implementation before flow type is confirmed | Confirm flow first and load matching reference |163| CRITICAL | Skipping Android quickstart prerequisites | Verify and apply required setup from official Android quickstart |164| CRITICAL | Missing app-level `Clerk.initialize(...)` call | Initialize Clerk from `Application` startup path |165| HIGH | Wrong artifact for chosen flow | Prebuilt: `clerk-android-ui`; custom: `clerk-android-api` |166| HIGH | Rendering auth UI before SDK initialization completes | Gate UI with `Clerk.isInitialized` state |167| HIGH | Hardcoding auth factors/social providers | Drive behavior from Clerk runtime capability fields |168| HIGH | Using this skill for Expo/React Native | Detect and route away before implementation |169170## See Also171172- `../clerk/SKILL.md` for top-level Clerk routing173- `../setup/SKILL.md` for cross-framework quickstart setup174- `https://github.com/clerk/clerk-android`175- `https://clerk.com/docs/android/getting-started/quickstart`