From beagle-ios
Reviews changed Swift files in iOS/SwiftUI apps: verifies SwiftLint, detects SwiftData/Combine/CloudKit/etc., loads specialized sub-skills with optional parallel agents.
npx claudepluginhub existential-birds/beagle --plugin beagle-iosThis skill uses the workspace's default tool permissions.
- `--parallel`: Spawn specialized subagents per technology area
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
--parallel: Spawn specialized subagents per technology areagit diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '\.swift$'
CRITICAL: Run SwiftLint BEFORE flagging any style issues.
# Check if SwiftLint config exists and run it
if [ -f ".swiftlint.yml" ] || [ -f ".swiftlint.yaml" ]; then
swiftlint lint --quiet <changed_files>
fi
Rules:
# SwiftUI (always with swift files that import it)
grep -r "import SwiftUI" --include="*.swift" -l | head -3
# SwiftData
grep -r "import SwiftData\|@Model\|@Query" --include="*.swift" -l | head -3
# Swift Testing
grep -r "import Testing\|@Test\|#expect" --include="*.swift" -l | head -3
# Combine
grep -r "import Combine\|AnyPublisher\|@Published" --include="*.swift" -l | head -3
# URLSession (explicit async patterns)
grep -r "URLSession\.shared\|\.data(from:\|\.download(from:" --include="*.swift" -l | head -3
# CloudKit
grep -r "import CloudKit\|CKContainer\|CKRecord" --include="*.swift" -l | head -3
# WidgetKit
grep -r "import WidgetKit\|TimelineProvider\|WidgetFamily" --include="*.swift" -l | head -3
# App Intents
grep -r "import AppIntents\|@AppIntent\|AppEntity" --include="*.swift" -l | head -3
# HealthKit
grep -r "import HealthKit\|HKHealthStore\|HKQuery" --include="*.swift" -l | head -3
# WatchKit
grep -r "import WatchKit\|WKExtension\|WKInterfaceController" --include="*.swift" -l | head -3
# Animations (beyond basic withAnimation)
grep -r "PhaseAnimator\|KeyframeAnimator\|matchedGeometryEffect\|navigationTransition\|scrollTransition\|CABasicAnimation\|CASpringAnimation\|CAKeyframeAnimation\|UIViewPropertyAnimator\|UIDynamicAnimator\|\.symbolEffect\|\.contentTransition\|CustomAnimation\|MeshGradient" --include="*.swift" -l | head -3
Load beagle-ios:review-verification-protocol skill and keep its checklist in mind throughout the review.
Use the Skill tool to load each applicable skill (e.g., Skill(skill: "beagle-ios:swift-code-review")).
Always load:
beagle-ios:swift-code-reviewbeagle-ios:swiftui-code-reviewConditionally load based on detection:
| Condition | Skill |
|---|---|
| SwiftData detected | beagle-ios:swiftdata-code-review |
| Swift Testing detected | beagle-ios:swift-testing-code-review |
| Combine detected | beagle-ios:combine-code-review |
| URLSession detected | beagle-ios:urlsession-code-review |
| CloudKit detected | beagle-ios:cloudkit-code-review |
| WidgetKit detected | beagle-ios:widgetkit-code-review |
| App Intents detected | beagle-ios:app-intents-code-review |
| HealthKit detected | beagle-ios:healthkit-code-review |
| WatchKit detected | beagle-ios:watchos-code-review |
| Animation code detected | beagle-ios:ios-animation-code-review |
Sequential (default):
Parallel (--parallel flag):
Task toolBefore reporting any issue:
You MUST report ALL issues across ALL categories (style, logic, types, tests, security, performance) in a single review pass. Do not hold back issues for later rounds.
Before submitting findings, ask yourself:
If yes to either: include those anticipated downstream issues NOW, in this review, so the author can address everything at once.
Fixes to existing code should be flagged at their real severity regardless of size.
However, requests for net-new code that didn't exist before the diff must be classified as Informational:
These are improvement suggestions for the author to consider in future work, not review blockers.
If this is a re-review after fixes were applied:
## Review Summary
[1-2 sentence overview of findings]
## Issues
### Critical (Blocking)
1. [FILE:LINE] ISSUE_TITLE
- Issue: Description of what's wrong
- Why: Why this matters (crash, data loss, security, race condition)
- Fix: Specific recommended fix
### Major (Should Fix)
2. [FILE:LINE] ISSUE_TITLE
- Issue: ...
- Why: ...
- Fix: ...
### Minor (Nice to Have)
N. [FILE:LINE] ISSUE_TITLE
- Issue: ...
- Why: ...
- Fix: ...
### Informational (For Awareness)
N. [FILE:LINE] SUGGESTION_TITLE
- Suggestion: ...
- Rationale: ...
## Good Patterns
- [FILE:LINE] Pattern description (preserve this)
## Verdict
Ready: Yes | No | With fixes 1-N (Critical/Major only; Minor items are acceptable)
Rationale: [1-2 sentences]
After fixes are applied, run:
# Swift build and lint
swift build
swiftlint lint --quiet
# Run tests if present
swift test
All checks must pass before approval.