원클릭으로
debugging-ios
Debugs iOS app issues by analyzing logs, crash reports, and code flow. Use when debugging, fixing bugs, or analyzing crashes.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Debugs iOS app issues by analyzing logs, crash reports, and code flow. Use when debugging, fixing bugs, or analyzing crashes.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Standard editorial template for any standalone HTML output (reports, RCAs, dashboards, diagrams, slides, recaps). Use EVERY time you generate an HTML file so output follows one consistent house style instead of ad-hoc theming.
Findings-first review agent for code changes. Use when the user asks to review a branch, PR, diff, commit range, or recent changes and wants prioritized, actionable issues instead of implementation work.
Scan and clean stale Claude Code sessions from the shared store at ~/.local/share/claude/projects (used by all .claude / .claude-accountN dirs via symlink). Removes session JSONLs older than N days, orphan subagent dirs, and reports reclaimable space.
Triage ShopHelp XCTest/Swift Testing failures before proposing fixes.
Manage Jira issues through jhelp shell functions (jv, jm, jd, jc, jforward, etc.). Use when the user wants to view, transition, assign, comment on, edit, search, or create Jira work items; when they provide a bare issue number, Jira issue key, or Jira URL; or when the task involves the current git branch ticket.
Create git commits. Use when user says "commit", "commit this", "commit changes", "split commit", "split commit change", "split the changes".
| name | debugging-ios |
| description | Debugs iOS app issues by analyzing logs, crash reports, and code flow. Use when debugging, fixing bugs, or analyzing crashes. |
Systematic debugging workflow for iOS apps.
Follow the data through Clean Architecture layers:
View (SwiftUI)
→ ViewModel (@MainActor, @Published state)
→ UseCase (protocol-based)
→ Repository (protocol → implementation)
→ Gateway (network) / Database (GRDB)
At each layer, check:
Common async issues:
await on async calls.try on throwing calls.@Published update not on MainActor..container)?AppUsecasesAssembly, RepositoriesAssembly, AppServicesAssembly.Silent nil failures are common. Look for:
object?.method()).guard let that silently returns without logging.if let branches that skip important logic.??) hiding real issues.Add debug prints to trace execution flow:
print("mantm > entering loadData")
print("mantm >> fetching product: \(productId)")
print("mantm >>> result: \(result)")
Flow depth levels:
> — entry point>> — sub-call>>> — deep traceRemove all debug prints before committing.
toDomain() mapping correct?| Issue | Likely Cause | Fix |
|---|---|---|
| Screen shows nothing | Missing DI registration | Register in assembly |
| Crash on screen open | Force unwrap nil | Check DI resolution |
| Data not updating | @Published not triggered | Ensure MainActor update |
| Stale data | Wrong object scope | Change to .container or transient |
| Network error silent | Error caught but not shown | Update errorMessage in catch |
| Wrong data displayed | Mapping error | Check toDomain() method |
| Race condition | Multiple async calls | Add proper sequencing or cancellation |
| Memory leak | Retain cycle | Check closures for [weak self] |
| Infinite loop | Recursive state update | Check @Published → view → method cycle |
After fixing:
make unit-test if tests exist for the affected code.See docs/ARCHITECTURE.md for layer structure and gateways.
See docs/PATTERNS.md for correct async/DI patterns.