Files
android/.claude/skills/reviewing-changes/checklists/bug-fix.md

3.7 KiB

Bug Fix Review Checklist

Multi-Pass Strategy

First Pass: Understand the Bug

1. Understand root cause:

  • What was the broken behavior?
  • What caused it?
  • How does this fix address the root cause?

2. Assess scope:

  • How many files changed?
  • Is this a targeted fix or broader refactoring?
  • Does this affect multiple features?

3. Check for side effects:

  • Could this break other features?
  • Are there edge cases not considered?

Second Pass: Verify the Fix

4. Code changes:

  • Does the fix make sense?
  • Is it the simplest solution?
  • Any unnecessary changes included?

5. Testing:

  • Is there a regression test?
  • Does test verify the bug is fixed?
  • Are edge cases covered?

6. Related code:

  • Same pattern in other places that might have same bug?
  • Should other similar code be fixed too?

What to CHECK

Root Cause Analysis

  • Does the fix address the root cause or just symptoms?
  • Is the explanation in PR/commit clear?

Regression Testing

  • Is there a new test that would fail without this fix?
  • Does test cover the reported bug scenario?
  • Are related edge cases tested?

Side Effects

  • Could this break existing functionality?
  • Are there similar code paths that need checking?
  • Does this change behavior in unexpected ways?

Fix Scope

  • Is the fix appropriately scoped (not too broad, not too narrow)?
  • Are all instances of the bug fixed?
  • Any related bugs discovered during investigation?

What to SKIP

Full Architecture Review - Unless fix reveals architectural problems Comprehensive Testing Review - Focus on regression tests, not entire test suite Major Refactoring Suggestions - Unless directly related to preventing similar bugs

Red Flags

🚩 No test for the bug - How will we prevent regression? 🚩 Fix doesn't match root cause - Is this fixing symptoms? 🚩 Broad changes beyond the bug - Should this be split into separate PRs? 🚩 Similar patterns elsewhere - Should those be fixed too?

Key Questions to Ask

Use reference/review-psychology.md for phrasing:

  • "Can we add a test that would fail without this fix?"
  • "I see this pattern in [other file] - does it have the same issue?"
  • "Is this fixing the root cause or masking the symptom?"
  • "Could this change affect [related feature]?"

Prioritizing Findings

Use reference/priority-framework.md to classify findings as Critical/Important/Suggested/Optional.

Output Format

See examples/review-outputs.md for the required output format and inline comment structure.

Example Review

**Overall Assessment:** APPROVE

See inline comments for suggested improvements.

Inline comment examples:

**data/auth/BiometricRepository.kt:120** - SUGGESTED: Extract null handling

<details>
<summary>Details</summary>

Root cause analysis: BiometricPrompt result was nullable but code assumed non-null, causing crash on cancellation (PM-12345).

Consider extracting null handling pattern:

\```kotlin
private fun handleBiometricResult(result: BiometricPrompt.AuthenticationResult?): AuthResult {
    return result?.let { AuthResult.Success(it) } ?: AuthResult.Cancelled
}
\```

This pattern could be reused if we add other biometric auth points.
</details>
**app/auth/BiometricViewModel.kt:89** - SUGGESTED: Add regression test

<details>
<summary>Details</summary>

Add test for cancellation scenario to prevent regression:

\```kotlin
@Test
fun `when biometric cancelled then returns cancelled state`() = runTest {
    coEvery { repository.authenticate() } returns Result.failure(CancelledException())
    viewModel.onBiometricAuth()
    assertEquals(AuthState.Cancelled, viewModel.state.value)
}
\```

This prevents regression of the bug just fixed.
</details>