Token导航 LogoToken导航TokenDH.com
研究检索敏感数据github未标认证来源可访问许可证需确认审计通过

ios-code-reviewiOS 代码审查

Agent Skill

ios-code-review 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

212

周安装

9

GitHub Stars

公开资料未说明

下载量

74
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:ios-code-review(iOS 代码审查)
来源仓库:https://github.com/sh-oh/ios-agent-skills
仓库路径:skills/ios-code-review
安装命令:
npx skills add https://github.com/sh-oh/ios-agent-skills --skill ios-code-review
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/sh-oh/ios-agent-skills --skill ios-code-review

简介

用于查找、检索与筛选 iOS 代码审查相关信息。

  • 适合在 Codex、Claude、Cursor、Gemini CLI 中根据关键词快速定位候选结果。
  • 可结合来源仓库和原始 README 核验具体用法。
  • 安装前建议确认权限范围和维护状态。ios-code-review 属于研究检索类 Skill,可作为该场景下的辅助能力补充。
  • 注意其可能触发联网、命令执行或文件读写操作。

SKILL.md

iOS Code Review

Comprehensive security and quality review guide for Swift/iOS code changes. Covers memory leaks, concurrency issues, iOS security vulnerabilities, and Swift best practices.

When to Apply

  • Reviewing pull requests or code changes in Swift/iOS projects
  • Running pre-merge quality gates on Swift codebases
  • Performing security audits on iOS applications
  • Validating concurrency safety for Swift 6 migration
  • Checking memory management in ViewModels, closures, and Combine pipelines
  • Ensuring compliance with App Store review guidelines

Quick Reference

Review Checklist Summary

AreaPriorityKey Checks
SecurityCRITICALNo hardcoded secrets, Keychain for sensitive data, ATS compliance
Memory ManagementCRITICALNo retain cycles, weak delegates, cancellable cleanup
Code QualityHIGHNo force unwraps, proper error handling, size limits
ConcurrencyHIGH@MainActor for UI, Sendable compliance, Task cancellation
Best PracticesMEDIUMSwift API Guidelines, accessibility, localization

Approval Criteria

VerdictConditionAction
ApproveNo CRITICAL or HIGH issuesSafe to merge
WarningOnly MEDIUM issues presentCan merge with caution
BlockCRITICAL or HIGH issues foundMust fix before merge

Workflow

How to Conduct a Review

  1. Get changed files
# See all changed files
git diff --name-only HEAD

# See full diff for review
git diff HEAD
  1. Focus on Swift files -- Filter to .swift files and prioritize by change size.
  2. Categorize each finding by severity:

- CRITICAL: Security vulnerabilities, memory leaks, data races - HIGH: Force unwraps, missing error handling, concurrency violations - MEDIUM: Style issues, missing accessibility, optimization opportunities

  1. Generate report using the output format below.
  2. Determine verdict based on approval criteria.

Key Review Areas

Security (CRITICAL)

Full checklist: references/security-checks.md
  • No sensitive data stored in UserDefaults (use Keychain instead)
  • No hardcoded API keys, secrets, or credentials in source code
  • App Transport Security (ATS) exceptions justified and documented
  • Debug code guarded with #if DEBUG and excluded from release builds
  • Privacy manifest (PrivacyInfo.xcprivacy) present and Required Reason APIs declared

Memory Management (CRITICAL)

Full checklist: references/concurrency-checks.md
  • Closures use [weak self] to prevent retain cycles in escaping contexts
  • Delegates declared as weak to avoid ownership cycles
  • NotificationCenter observers removed on deinit
  • Timers invalidated on deinit
  • Combine AnyCancellable stored properly in Set<AnyCancellable>

Code Quality (HIGH)

  • No force unwrapping (!) without guard/if-let safety
  • Functions stay under 40 lines; files under 500 lines
  • Nesting depth does not exceed 4 levels
  • Empty catch blocks are not used; errors are handled or propagated
  • Access control applied (default to private; expose only what is needed)

Concurrency (HIGH)

Full checklist: references/concurrency-checks.md
  • UI updates happen on @MainActor or main thread
  • Non-Sendable types do not cross actor boundaries
  • Tasks are cancelled when the owning scope is deallocated
  • No blocking synchronous operations on the main thread
  • Actor isolation is correct and nonisolated is not overused

Best Practices (MEDIUM)

  • Naming follows Swift API Design Guidelines (UpperCamelCase for types, lowerCamelCase for members)
  • Boolean properties read as assertions (isEmpty, isEnabled, hasCompleted)
  • Accessibility labels and hints provided for interactive elements
  • User-facing strings are localized (no hardcoded display text)
  • Public APIs have documentation comments

Review Output Format

For each issue found, use this structure:

[SEVERITY] Brief Issue Title
File: path/to/file.swift:lineNumber
Issue: Description of the problem and its impact.
Fix: How to resolve it.

// Current (problematic)
<code showing the problem>

// Suggested (fixed)
<code showing the fix>

Example: Critical Issue

[CRITICAL] Sensitive data in UserDefaults
File: Sources/Services/AuthService.swift:42
Issue: API token stored in UserDefaults, accessible without encryption.
Fix: Move to Keychain with appropriate protection class.

// Current
UserDefaults.standard.set(token, forKey: "authToken")

// Suggested
try KeychainService.shared.save(token, forKey: "authToken",
                                 accessibility: .whenUnlockedThisDeviceOnly)

Example: High Issue

[HIGH] Retain cycle in closure
File: Sources/ViewModels/HomeViewModel.swift:78
Issue: Strong reference to self in async closure may cause memory leak.
Fix: Depends on actor isolation context.

// Case 1: @MainActor class - Task inherits actor context, weak self optional
@MainActor
final class HomeViewModel: ObservableObject {
    func load() {
        Task {
            items = await fetchItems()  // OK - inherits MainActor
        }
    }
}

// Case 2: Non-isolated class - weak self required
final class DataManager {
    func load() {
        Task { [weak self] in
            guard let self else { return }
            await self.process()
        }
    }
}

// Case 3: Escaping closures - always weak self
repository.fetch { [weak self] result in
    self?.handleResult(result)
}

Summary Template

Use this template for the final review report:

## Code Review Summary

### Files Reviewed
- `path/to/file.swift` (Modified)
- `path/to/other.swift` (Added)

### CRITICAL Issues (X)
| Issue | Location | Fix |
|-------|----------|-----|
| Brief description | file:line | How to fix |

### HIGH Issues (X)
| Issue | Location | Fix |
|-------|----------|-----|
| Brief description | file:line | How to fix |

### MEDIUM Suggestions (X)
| Issue | Location | Fix |
|-------|----------|-----|
| Brief description | file:line | How to fix |

### Good Practices Found
- [What was done well]

### Verdict: Approve / Warning / Block

Quick Check Commands

Run these before committing to catch common issues early:

# Check for print statements in production code
grep -rn "print(" --include="*.swift" Sources/

# Check for force unwraps
grep -rn "!" --include="*.swift" Sources/ | grep -v "//"

# Check for TODO/FIXME without ticket references
grep -rn "TODO\|FIXME" --include="*.swift" Sources/

# Check for hardcoded secrets (basic scan)
grep -rn "api_key\|apiKey\|secret\|password" --include="*.swift" Sources/

References

  • references/security-checks.md -- Full security review checklist (data storage, network, authentication, App Store compliance)
  • references/concurrency-checks.md -- Swift 6 concurrency, Combine memory, and performance checks
  • references/cascading-verification.md -- Cascading verification scenarios, code quality, best practices, accessibility, and test quality

Common Mistakes

1. Approving code with unguarded force unwraps

Force unwraps (!) crash at runtime when the value is nil. Always require guard/if-let unless the value is provably non-nil (e.g., IBOutlet after viewDidLoad).

2. Missing retain cycle detection in nested closures

A closure inside another closure can capture self strongly even if the outer closure uses [weak self]. Check the full closure chain, especially in Combine sink and map pipelines.

3. Overlooking @MainActor requirements for UI updates

ViewModels that update @Published properties driving SwiftUI views must be annotated with @MainActor or explicitly dispatch to the main actor. Missing this causes runtime warnings or undefined UI behavior.

4. Ignoring Sendable compliance warnings

Swift 6 strict concurrency requires types crossing actor boundaries to conform to Sendable. Treating these warnings as noise leads to data races in production. Review each warning and either conform or restructure.

5. Not verifying cascading impacts of API changes

Changing an enum case, protocol requirement, or function signature can break callers throughout the codebase. Always search for all usage sites before approving such changes. See references/cascading-verification.md.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.1%
按下载量换算25

Claude

31.59%
按下载量换算23

Cursor

18.32%
按下载量换算14

Gemini CLI

9.35%
按下载量换算7

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills