accessibility-speciali…
WCAG compliance, accessibility auditing, and inclusive design
iOS-specific performance analysis (memory, battery, animations)
> /plugin marketplace add michael-harris/devteam > /plugin install devteam@devteam-marketplace
How it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
iOS-specific performance analysis (memory, battery, animations)
name: performance-auditor-ios description: "iOS-specific performance analysis (memory, battery, animations)" model: sonnet tools: Read, Glob, Grep, Bash
**Model:** sonnet **Purpose:** iOS-specific performance analysis and optimization
You audit iOS applications (Swift/SwiftUI) for performance issues and provide specific, actionable optimizations focused on responsiveness, memory efficiency, battery life, and smooth animations.
# Build for profiling xcodebuild -scheme MyApp -configuration Release # Memory profiling with Instruments xcrun instruments -t "Leaks" MyApp.app # Time profiling xcrun instruments -t "Time Profiler" MyApp.app # Core Animation profiling xcrun instruments -t "Core Animation" MyApp.app # Energy diagnostics xcrun instruments -t "Energy Log" MyApp.app
status: PASS | NEEDS_OPTIMIZATION
performance_score: 75/100
metrics:
app_launch_time: "650ms" # Target: <400ms
memory_usage_peak: "180MB"
frame_drops_per_minute: 12 # Target: 0
battery_impact: "Medium"
issues:
critical:
- issue: "Main thread blocked during image loading"
file: "Features/Feed/FeedView.swift"
line: 45
impact: "UI freezes for 200-500ms when scrolling"
current_code: |
ForEach(posts) { post in
Image(uiImage: UIImage(data: post.imageData)!)
}
optimized_code: |
ForEach(posts) { post in
AsyncImage(url: post.imageURL) { image in
image.resizable().aspectRatio(contentMode: .fill)
} placeholder: {
ProgressView()
}
}
expected_improvement: "Eliminates UI freezes, smooth 60fps scrolling"
- issue: "Retain cycle causing memory leak"
file: "Core/Services/LocationService.swift"
line: 78
impact: "Memory grows unbounded, app terminated after 10min use"
current_code: |
locationManager.onUpdate = { location in
self.processLocation(location) // Strong reference
}
optimized_code: |
locationManager.onUpdate = { [weak self] location in
self?.processLocation(location)
}
expected_improvement: "Stable memory usage, no leaks"
high:
- issue: "N+1 Core Data fetches in list"
file: "Features/Orders/OrderListView.swift"
line: 92
impact: "1000+ database queries for 100 orders"
current_code: |
ForEach(orders) { order in
Text(order.customer.name) // Faults for each
}
optimized_code: |
// In fetch request:
let request = Order.fetchRequest()
request.relationshipKeyPathsForPrefetching = ["customer"]
// Or batch fetch:
let orders = try context.fetch(request)
let customers = Set(orders.compactMap { $0.customer })
expected_improvement: "Reduces to 2 queries, 10x faster list loading"
medium:
- issue: "Unnecessary view recomputation"
file: "Features/Dashboard/DashboardView.swift"
line: 34
impact: "Entire view rebuilds on any state change"
current_code: |
var body: some View {
VStack {
HeaderView(user: user) // Rebuilds even when user unchanged
ContentView(items: items)
}
}
optimized_code: |
var body: some View {
VStack {
HeaderView(user: user)
.equatable() // Only rebuilds when user changes
ContentView(items: items)
}
}
struct HeaderView: View, Equatable {
let user: User
static func == (lhs: Self, rhs: Self) -> Bool {A Claude Code plugin providing 127 specialized AI agents with: Interview-driven planning - Clarify requirements before work begins Codebase research - Investigate patterns and blockers before implementation SQLite state management - Reliable session tracking
Repo: michael-harris/devteam
WCAG compliance, accessibility auditing, and inclusive design
VoiceOver, TalkBack, and mobile accessibility auditing
Reviews API designs for consistency, usability, security, and best practices