existential-birds

combine-code-review

15
2
# Install this skill:
npx skills add existential-birds/beagle --skill "combine-code-review"

Install specific skill from multi-skill repository

# Description

Reviews Combine framework code for memory leaks, operator misuse, and error handling. Use when reviewing code with import Combine, AnyPublisher, @Published, PassthroughSubject, or CurrentValueSubject.

# SKILL.md


name: combine-code-review
description: Reviews Combine framework code for memory leaks, operator misuse, and error handling. Use when reviewing code with import Combine, AnyPublisher, @Published, PassthroughSubject, or CurrentValueSubject.


Combine Code Review

Quick Reference

Issue Type Reference
Publishers, Subjects, AnyPublisher references/publishers.md
map, flatMap, combineLatest, switchToLatest references/operators.md
AnyCancellable, retain cycles, [weak self] references/memory.md
tryMap, catch, replaceError, Never references/error-handling.md

Review Checklist

  • [ ] All sink closures use [weak self] when self owns cancellable
  • [ ] No assign(to:on:self) usage (use assign(to: &$property) or sink)
  • [ ] All AnyCancellables stored in Set or property (not discarded)
  • [ ] Subjects exposed as AnyPublisher via eraseToAnyPublisher()
  • [ ] flatMap used correctly (not when map + switchToLatest needed)
  • [ ] Error handling inside flatMap to keep main chain alive
  • [ ] tryMap followed by mapError to restore error types
  • [ ] receive(on: DispatchQueue.main) before UI updates
  • [ ] PassthroughSubject for events, CurrentValueSubject for state
  • [ ] Future wrapped in Deferred when used with retry

When to Load References

  • Reviewing Subjects or publisher selection β†’ publishers.md
  • Reviewing operator chains or combining publishers β†’ operators.md
  • Reviewing subscriptions or memory issues β†’ memory.md
  • Reviewing error handling or try* operators β†’ error-handling.md

Review Questions

  1. Are all subscriptions being retained? (Check for discarded AnyCancellables)
  2. Could any sink or assign create a retain cycle with self?
  3. Does flatMap need to be switchToLatest for search/autocomplete?
  4. What happens when this publisher fails? (Will it kill the main chain?)
  5. Are error types preserved or properly mapped after try* operators?

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.