본문으로 건너뛰기
cccskills
무료GitHub에 공개

app-store-review

Review Apple platform app code for potential App Store rejection issues before submission. Check privacy, payments, safety, performance, and design using guideline references, risk categories, code examples, and a pre-submission checklist.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Evaluates code against Apple's App Store Review Guidelines. Use this skill when reviewing iOS, macOS, tvOS, watchOS, or visionOS app code (Swift, Objective-C, React Native, or Expo) to identify potential App Store rejection issues before submission. Triggers on tasks involving app review preparation, compliance checking, or App Store submission readiness.

설치 방법 보기

이럴 때 유용합니다

  • Checking an app before App Store submission
  • Reviewing payments and subscriptions
  • Checking privacy and account deletion
  • Auditing user-generated content moderation

포함된 파일(14)

  • SKILL.md7.6 KB
  • .agents/plugins/marketplace.json364 B
  • .claude-plugin/marketplace.json619 B
  • .claude-plugin/plugin.json494 B
  • .codex-plugin/plugin.json1.2 KB
  • .gitignore223 B
  • agents/openai.yaml219 B
  • LICENSE1.0 KB
  • README.md6.3 KB
  • rules/1-safety.md23.3 KB
  • rules/2-performance.md28.0 KB
  • rules/3-business.md20.3 KB
  • rules/4-design.md19.1 KB
  • rules/5-legal.md31.5 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

App Store Review Guidelines Checker

Comprehensive guide for evaluating iOS, macOS, tvOS, watchOS, and visionOS app code against Apple's App Store Review Guidelines. This skill covers EVERY guideline point to identify potential rejection issues before submission.

Supports: Swift, Objective-C, React Native, and Expo apps

Guidelines current through: Apple's June 8, 2026 App Review Guidelines update.

When to Apply

Use this skill when:

  • Preparing an app for App Store submission
  • Reviewing code for compliance issues
  • Implementing features that may trigger review concerns
  • Auditing existing apps for guideline violations
  • Building features involving payments, user data, or sensitive content

Guideline Sections

Read individual rule files for detailed explanations, checklists, and code examples:

SectionFileKey Topics
1. Safetyrules/1-safety.mdObjectionable content, UGC moderation, Kids Category, physical harm, data security
2. Performancerules/2-performance.mdApp completeness, metadata accuracy, hardware compatibility, software requirements
3. Businessrules/3-business.mdIn-app purchase, subscriptions, cryptocurrencies, other business models
4. Designrules/4-design.mdCopycats, minimum functionality, spam, extensions, Apple services, login
5. Legalrules/5-legal.mdPrivacy, data collection, intellectual property, gambling, VPN, MDM, developer code of conduct

Risk Levels by Category

Risk LevelCategorySectionCommon Rejection Reasons
CRITICALPrivacy & Data5.1Missing privacy policy, unauthorized data collection
CRITICALPayments3.1Bypassing in-app purchase, unclear pricing
HIGHSafety1.xObjectionable content, inadequate UGC moderation
HIGHPerformance2.xCrashes, incomplete features, deprecated APIs
MEDIUMDesign4.xCopycat apps, minimum functionality issues
MEDIUMLegal5.xIP violations, gambling without license

Quick Reference: High-Risk Rejection Patterns

Critical Issues (Immediate Rejection)

Swift:

// 🔴 Private API usage
let selector = NSSelectorFromString("_privateMethod")

// 🔴 Hardcoded secrets
let apiKey = "sk_live_xxxxx"

// 🔴 External payment for digital goods
func purchaseDigitalContent() {
    openStripeCheckout() // Use StoreKit instead
}

React Native / Expo:

// 🔴 Hardcoded secrets in JS bundle
const API_KEY = 'sk_live_xxxxx'; // REJECTION

// 🔴 External payment for digital goods
Linking.openURL('https://stripe.com/checkout'); // Use react-native-iap

// 🔴 Dynamic code execution
eval(downloadedCode); // REJECTION

// 🔴 Major feature changes via CodePush/expo-updates
// OTA updates for bug fixes only, not new features!

High-Risk Issues

Swift:

// 🟡 Missing ATT when using ad SDKs
import FacebookAds // Without ATTrackingManager

// 🟡 Account creation without deletion
func createAccount() { } // But no deleteAccount()

React Native / Expo:

// 🟡 Missing ATT (use expo-tracking-transparency)
import analytics from '@react-native-firebase/analytics';
analytics().logEvent('event'); // Without ATT prompt = REJECTION

// 🟡 Account deletion via website only
Linking.openURL('https://example.com/delete'); // Must be in-app!

// 🟡 Social login without a privacy-preserving alternative (4.8)
<GoogleSigninButton /> // Also offer a login meeting 4.8 criteria
                       // (Sign in with Apple is the simplest option)

// 🟡 Custom review prompts (5.6.1)
showCustomAlert('Rate us 5 stars!'); // Use StoreReview.requestReview()

Medium-Risk Issues

// 🟠 Vague purpose strings in Info.plist
"This app needs camera access" // Be specific!

// 🟠 WebView-only app (insufficient native functionality)
const App = () => <WebView source={{ uri: 'https://site.com' }} />;

// 🟠 References to Android in iOS app
const text = "Also available on Android"; // REJECTION

// 🟠 console.log in production
console.log('debug'); // Remove or wrap in __DEV__

Pre-Submission Checklist

Privacy (Section 5.1)

  • Privacy policy link in App Store Connect
  • Privacy policy link accessible within app
  • All purpose strings are specific and accurate
  • App Privacy details completed in App Store Connect
  • ATT implemented if tracking users
  • Account deletion available if accounts exist
  • Data minimization - only requesting necessary permissions
  • User consent obtained before data collection

Payments (Section 3.1)

  • StoreKit used for all digital purchases
  • Restore purchases implemented
  • Subscription terms clearly displayed
  • Loot box odds disclosed if applicable
  • No external payment for digital goods (unless entitled)
  • Credits/currencies don't expire

Safety (Section 1.x)

  • No objectionable content
  • UGC moderation implemented (filter, report, block, contact)
  • UGC violations can be removed quickly and backed by a remediation plan
  • Kids and teens receive age-appropriate experiences inside the app
  • Parental gates for Kids Category apps
  • No false information or prank features
  • Medical disclaimers if applicable
  • No substance promotion

Performance (Section 2.x)

  • No crashes or bugs
  • All features complete and functional
  • No placeholder content
  • IPv6 tested and functional
  • Demo account provided if needed
  • Using only public APIs
  • No deprecated APIs
  • Proper background mode usage

Design (Section 4.x)

  • Sufficient native functionality (not just web wrapper)
  • No copycat concerns
  • Original app name and branding
  • No duplicate Bundle ID spam or low-effort saturated-category clones
  • Live Activities, push notifications, and Game Center are not used for spam, phishing, or unsolicited messages
  • Extensions comply with guidelines
  • Login alternatives if using social login
  • Not monetizing built-in capabilities

Legal (Section 5.x)

  • No unlicensed third-party content
  • Proper Apple trademark usage
  • Gambling license if applicable (with real location-based geo-restriction)
  • VPN uses NEVPNManager API
  • COPPA/GDPR compliance for kids
  • Review prompts use the system API only (no custom prompts)
  • No review, chart, search, or referral manipulation (5.6)

References

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Trigger OnlySwitch built-in actions from plain-language requests on macOS. The skill selects the matching action ID and opens an app link to toggle settings or run actions such as emptying the trash.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Toggling Keep Awake
  • Switching dark mode
  • Emptying the trash
jacklandrin/OnlySwitch6천2026년 10월 21일 업데이트

Review Swift async/await code, which runs tasks without blocking while waiting. Check shared state, task structure, cancellation, streams, and migration issues, then receive file-specific findings with before-and-after fixes and a prioritized summary.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Checking actor isolation and shared-state handling
  • Reviewing task structure and cancellation
  • Investigating strict concurrency compiler errors
jacklandrin/OnlySwitch6천2026년 10월 21일 업데이트

Write and review unit and integration tests with Swift Testing. Check assertions, asynchronous behavior, and test structure, or convert existing XCTest tests using guidance on modern APIs and project conventions.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Writing unit and integration tests
  • Reviewing tests for asynchronous code
  • Migrating existing XCTest tests
jacklandrin/OnlySwitch6천2026년 10월 21일 업데이트

Review SwiftUI code for outdated APIs, data flow, navigation, accessibility, and performance. Receive findings grouped by file, with line references, brief before-and-after fixes, and a prioritized summary of the changes that matter most.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Reviewing existing SwiftUI code
  • Updating deprecated APIs
  • Checking VoiceOver and Dynamic Type support
jacklandrin/OnlySwitch6천2026년 10월 21일 업데이트

Turn specifications into a detailed implementation plan before coding. Break work into small tasks with exact file paths, code, test commands, and interfaces so another developer or agent can follow the plan.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Planning a feature before coding
  • Preparing a development handoff
  • Breaking requirements into testable tasks
jacklandrin/OnlySwitch6천2026년 10월 21일 업데이트

jacklandrin의 스킬 모두 보기

이 스킬의 문제 신고