Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
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
sinkclosures use[weak self]when self owns cancellable - [ ] No
assign(to:on:self)usage (useassign(to: &$property)or sink) - [ ] All AnyCancellables stored in Set or property (not discarded)
- [ ] Subjects exposed as
AnyPublisherviaeraseToAnyPublisher() - [ ]
flatMapused correctly (not whenmap + switchToLatestneeded) - [ ] Error handling inside
flatMapto keep main chain alive - [ ]
tryMapfollowed bymapErrorto 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
- Are all subscriptions being retained? (Check for discarded AnyCancellables)
- Could any sink or assign create a retain cycle with self?
- Does flatMap need to be switchToLatest for search/autocomplete?
- What happens when this publisher fails? (Will it kill the main chain?)
- 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.