Claude-skill-registry kotlin-timber-logger
Add Timber logging statements to Kotlin Android files. Analyzes code logic to insert debug, info, warning, and error logs at function entry/exit, conditionals, try-catch blocks, and state changes. Only accepts Kotlin files (.kt). Use via /timber command.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/kotlin-timber-logger" ~/.claude/skills/majiayu000-claude-skill-registry-kotlin-timber-logger && rm -rf "$T"
manifest:
skills/data/kotlin-timber-logger/SKILL.mdsource content
Kotlin Timber Logger
Add intelligent Timber logging to Kotlin Android files based on code analysis.
Activation
Trigger via
/timber <file.kt> slash command.
Input Validation
STRICT: Only
.kt files accepted
- Reject non-Kotlin files immediately
- Verify file exists before processing
Log Levels
| Level | Method | Use Case |
|---|---|---|
| Debug | | Function flow, state changes |
| Info | | Important milestones |
| Warning | | Potential issues |
| Error | | Caught exceptions |
Logging Strategy
Function Entry/Exit
fun processData(input: String): Result { Timber.d("processData() input.length=${input.length}") // ... logic ... Timber.d("processData() completed") return result }
Suspend Functions
suspend fun fetchData(): Data { Timber.d("fetchData() started") // ... async logic ... Timber.d("fetchData() completed") return data }
Conditionals (when/if)
when (state) { State.LOADING -> Timber.d("State: LOADING") State.SUCCESS -> Timber.d("State: SUCCESS, items=${data.size}") State.ERROR -> Timber.w("State: ERROR, msg=${error.message}") }
Try-Catch
try { val result = parseJson(json) Timber.d("JSON parsed successfully") } catch (e: Exception) { Timber.e(e, "JSON parsing failed") }
StateFlow Updates
_uiState.update { current -> Timber.d("State update: loading=${current.loading} -> true") current.copy(loading = true) }
Safety Rules
NEVER log:
- Passwords, tokens, API keys
- PII (personal identifiable information)
- Full large objects (use
or.size
).take(3)
Avoid:
- Logs inside tight loops (throttle or count only)
- High-frequency callbacks
Process
- Validate input is
file.kt - Read file, check for
import timber.log.Timber - Identify patterns: functions, try-catch, conditionals, state changes
- Add import if missing
- Insert appropriate log statements
- Report changes made
Output Format
Timber Logging Added: [filename.kt] Added [N] logs: - [X] Timber.d() debug - [X] Timber.w() warning - [X] Timber.e() error Instrumented: - functionName() - entry/exit - handleError() - try-catch - when block - state transitions Import added: Yes/No