
Earllm Build
Extend or debug the EarLLM One Kotlin/Compose Android app that pipes Bluetooth earbud mic audio through STT, an LLM, and TTS back to the user.
Install
npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill earllm-buildWhat is this skill?
- Multi-module Android graph: app → voice → audio → core-logging and app → bluetooth
- Jetpack Compose UI with end-to-end voice capture, transcription, LLM call, and spoken response
- Bluetooth earbuds / SCO microphone and Android audio routing concerns
- Explicit project path and maintenance scope for EarLLM One (community skill, author renat)
- Tagged for claude-code, antigravity, cursor, gemini-cli, codex-cli in frontmatter
Adoption & trust: 1 installs on skills.sh; 40.1k GitHub stars; 3/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
Recommended Skills
Journey fit
Build is where the voice-plus-LLM mobile product is implemented across modules, not where you validate market fit or ship store listings alone. Integrations captures Bluetooth SCO, voice pipeline, and LLM wiring across app, voice, audio, and bluetooth modules.
Common Questions / FAQ
Is Earllm Build safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Earllm Build
# EarLLM One — Build & Maintain ## Overview Build, maintain, and extend the EarLLM One Android project — a Kotlin/Compose app that connects Bluetooth earbuds to an LLM via voice pipeline. ## When to Use This Skill - When the user mentions "earllm" or related topics - When the user mentions "earbudllm" or related topics - When the user mentions "earbud app" or related topics - When the user mentions "voice pipeline kotlin" or related topics - When the user mentions "bluetooth audio android" or related topics - When the user mentions "sco microphone" or related topics ## Do Not Use This Skill When - The task is unrelated to earllm build - A simpler, more specific tool can handle the request - The user needs general-purpose assistance without domain expertise ## How It Works EarLLM One is a multi-module Android app (Kotlin + Jetpack Compose) that captures voice from Bluetooth earbuds, transcribes it, sends it to an LLM, and speaks the response back. ## Project Location `C:\Users\renat\earbudllm` ## Module Dependency Graph ``` app ──→ voice ──→ audio ──→ core-logging │ │ ├──→ bluetooth ──→ core-logging └──→ llm ──→ core-logging ``` ## Modules And Key Files | Module | Purpose | Key Files | |--------|---------|-----------| | **core-logging** | Structured logging, performance tracking | `EarLogger.kt`, `PerformanceTracker.kt` | | **bluetooth** | BT discovery, pairing, A2DP/HFP profiles | `BluetoothController.kt`, `BluetoothState.kt`, `BluetoothPermissions.kt` | | **audio** | Audio routing (SCO/BLE), capture, headset buttons | `AudioRouteController.kt`, `VoiceCaptureController.kt`, `HeadsetButtonController.kt` | | **voice** | STT (SpeechRecognizer + Vosk stub), TTS, pipeline | `SpeechToTextController.kt`, `TextToSpeechController.kt`, `VoicePipeline.kt` | | **llm** | LLM interface, stub, OpenAI-compatible client | `LlmClient.kt`, `StubLlmClient.kt`, `RealLlmClient.kt`, `SecureTokenStore.kt` | | **app** | UI, ViewModel, Service, Settings, all screens | `MainViewModel.kt`, `EarLlmForegroundService.kt`, 6 Compose screens | ## Build Configuration - **SDK**: minSdk 26, targetSdk 34, compileSdk 34 - **Build tools**: AGP 8.2.2, Kotlin 1.9.22, Gradle 8.5 - **Compose BOM**: 2024.02.00 - **Key deps**: OkHttp, AndroidX Security (EncryptedSharedPreferences), DataStore, Media ## Target Hardware | Device | Model | Key Details | |--------|-------|-------------| | Phone | Samsung Galaxy S24 Ultra | Android 14, One UI 6.1, Snapdragon 8 Gen 3 | | Earbuds | Xiaomi Redmi Buds 6 Pro | BT 5.3, A2DP/HFP/AVRCP, ANC, LDAC | ## Critical Technical Facts These are verified facts from official documentation and device testing. Treat them as ground truth when making decisions: 1. **Bluetooth SCO is limited to 8kHz mono input** on most devices. Some support 16kHz mSBC. BLE Audio (Android 12+, `TYPE_BLE_HEADSET = 26`) supports up to 32kHz stereo. Always prefer BLE Audio when available. 2. **`startBluetoothSco()` is deprecated since Android 12 (API 31).** Use `AudioManager.setCommunicationDevice(AudioDeviceInfo)` and `clearCommunicationDevice()` instead. The project already implements both paths in `AudioRouteController.kt`. 3. **Samsung One UI 7/8 has a known HFP corruption bug** where A2DP playback corrupts the SCO link. The app handles this with silence detection and automatic fallback to the phone's built-in mic. 4. **Redmi Buds 6 Pro tap controls must be set to "Default" (Play/Pause)** in the Xiaomi Earbuds companion app. If set to ANC or custom functions, events are handled internally by the earbuds and never reach Android. 5. **Android 14+ requires `FOREGRO