Back to skills
extension
Category: Development & EngineeringNo API key required

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.

personAuthor: jakexiaohubgithub

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 | Timber.d() | Function flow, state changes | | Info | Timber.i() | Important milestones | | Warning | Timber.w() | Potential issues | | Error | Timber.e() | 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 .size or .take(3))

Avoid:

  • Logs inside tight loops (throttle or count only)
  • High-frequency callbacks

Process

  1. Validate input is .kt file
  2. Read file, check for import timber.log.Timber
  3. Identify patterns: functions, try-catch, conditionals, state changes
  4. Add import if missing
  5. Insert appropriate log statements
  6. 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