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

ugc-safety-features

Detects missing report, block, filter, and contact information mechanisms required for all apps with user-generated content under Guideline 1.2.

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

실행 점수 미검증

설치 방법 보기

포함된 파일(1)

  • SKILL.md8.2 KB

SKILL.md(원문)

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

Skill: UGC Safety Features

<!-- SEO: user-generated content report button block user EULA content moderation Guideline 1.2 UGC App Store rejection safety -->

Purpose

Detects missing mechanisms required for apps with user-generated content under Guideline 1.2. Apple explicitly requires all four of the following:

  1. Content filtering — objectionable content must be filterable before it surfaces to other users
  2. Report mechanism — users must be able to flag offensive posts, comments, and profiles
  3. Block mechanism — users must be able to block abusive users
  4. Published contact info — a developer contact method must be accessible within the app for users to report issues directly

Apple Guideline

  • Primary: 1.2 — Safety: User Generated Content
  • Related: 5.1.1(ii)
  • Reference: references/guidelines/1-safety.md

Real-World Rejection Cases

Trigger

Invoke on any iOS/macOS project that includes user posts, comments, chat, or community features.

Inputs

NameTypeDefaultDescription
project_rootpathcwdiOS/macOS project root
shared_contextobjectnilPre-collected context from appstore-full-audit Phase 1

Actions

Phase 1: Context Collection

Skip this phase if shared_context is provided.

  1. Glob **/*.swift — collect all Swift source files.
  2. Glob **/*Feed* or **/*Post* or **/*Comment* — locate feed/post UI files.
  3. Glob **/*Profile* or **/*UserProfile* — locate profile view files.
  4. Glob **/*Onboarding* or **/*Registration* or **/*Signup* — locate registration flow files.

Phase 2: Checks

Feed/Post Level:

  1. Report content mechanism Grep pattern "Report"|"reportContent"|"reportPost"|"flagContent"|"reportAction" in **/*.swift. If absent → 🔴 CRITICAL. Guideline 1.2 requires a mechanism for users to flag objectionable content.

  2. Block user mechanism Grep pattern "blockUser"|"Block User"|"blockAction" in **/*.swift. If absent → 🔴 CRITICAL. Guideline 1.2 explicitly requires ability to block abusive users.

  3. Content filtering/moderation Grep pattern "filterContent"|"moderateContent"|"contentFilter" in **/*.swift. If absent → 🟠 HIGH. Indicates no client-side content filtering layer.

Profile Level:

  1. Report/block from profile views Grep pattern "Report User"|"Block User"|"reportUser"|"blockUser" in files matching *Profile*View* or *UserProfile*. If absent while report/block found only in feed, flag → 🟠 HIGH. Guideline 1.2 compliance requires accessibility from profile context as well.

Developer Contact Info:

  1. In-app developer contact method Grep pattern "contactUs"|"contact_us"|"Contact Support"|"reportIssue"|"support@"|"mailto:" in **/*.swift. If absent → 🟠 HIGH. Guideline 1.2 requires a published contact method accessible within the app — Apple reviewers specifically check whether users can reach the developer to report abuse outside of the in-app report button.

EULA/Terms:

  1. Terms of service / EULA acceptance Grep pattern "termsOfService"|"acceptTerms"|"EULA"|"userAgreement" in **/*.swift. If absent in any file — and if onboarding/registration flow exists — flag → 🟠 HIGH. Users must explicitly agree to content standards before contributing UGC.

Age Verification / COPPA (Children's Online Privacy Protection Act):

  1. Under-13 user handling Grep pattern "ageVerification"|"dateOfBirth"|"age_gate"|"birthDate"|"underAge"|"isMinor" in **/*.swift. If app allows user-to-user interaction (chat, follows, public profiles) and no age verification is found → 🟠 HIGH. Apps rated 4+ or 9+ that allow strangers to contact each other must either:
    • Implement age verification and block under-13 users from social features, or
    • Be rated 12+ or higher to reflect the actual audience risk. COPPA compliance (US law) requires parental consent for users under 13 — Apple may reject apps that allow under-13 UGC without safeguards, independent of the App Store rating.

Phase 3: Output

Collect all findings from Phase 2 and build the prioritised findings list below. Include file paths and line numbers. Omit tiers with no findings.

Output Format

## UGC Safety Features — Findings

### 🔴 CRITICAL — Guaranteed rejection
- [ ] TODO: Add a "Report" button/action to post and comment views — Guideline 1.2 requires a content reporting mechanism — `FeedViewController.swift`
- [ ] TODO: Add a "Block User" action accessible from post, comment, or profile views — Guideline 1.2 requires ability to block abusive users

### 🟠 HIGH — Very likely rejection
- [ ] TODO: Add EULA/Terms of Service acceptance step in registration flow — users must agree to content standards before posting UGC — Guideline 1.2
- [ ] TODO: Surface report/block actions from UserProfileViewController as well as from feed items — Guideline 1.2

### 🟠 HIGH — Very likely rejection
- [ ] TODO: Add in-app developer contact method (support email or contact form) accessible from settings or profile — Guideline 1.2 requires published contact info alongside report/block

### 🟡 MEDIUM — Possible rejection
- [ ] TODO: Implement client-side content filtering or integrate server-side moderation API to handle flagged content

### 🟢 LOW — Best practice
- [ ] TODO: Add contextual reporting categories (e.g., "Spam", "Hate Speech", "Nudity") to improve moderation quality
- [ ] TODO: Establish a 24-hour response SLA for flagged content — Apple expects developers to actively moderate reported content; slow or absent moderation can lead to rejection on resubmission or app removal

Tools Used

Glob, Grep, Read

Constraints

  • Read-only. No file edits.
  • No network calls.
  • Skip Phase 1 if shared_context is provided by orchestrating agent.
  • Works on Swift, Objective-C, React Native, Flutter projects.

Quick Commands

Run these in your project root to check manually:

# Check for report/block mechanisms
!grep -rn "reportContent\|reportPost\|reportUser\|flagContent\|blockUser\|Block User\|Report" . --include="*.swift" | grep -v "//\|BugReport"

# Check for EULA/terms acceptance
!grep -rn "termsOfService\|acceptTerms\|EULA\|userAgreement" . --include="*.swift"

Swift Anti-Pattern Reference

examples/swift/UGCSafetyPatterns.swift

Detection Steps

  1. Find target files

    • Glob: **/*.swift, **/*.m
  2. Search for rejection patterns

    • Grep reportUser\|reportContent\|flagContent\|reportPost\|ReportUser — report feature
    • Grep blockUser\|blockAccount\|ignoreUser\|BlockUser — block feature
    • Grep UITableViewCell\|UICollectionViewCell — check context menu or swipe actions for report/block
    • Grep contactSupport\|supportEmail\|contactUs\|ContactSupport — published contact info
  3. Determine verdict

    • UGC features exist (feed, comments, profiles, chat) + no report pattern → 🔴 CRITICAL (Guideline 1.2)
    • Report found + no block pattern → 🔴 CRITICAL
    • Report + block + contact all present → 🟢 pass
  4. Report

    • Evidence of UGC (feed/comment/chat code) without safety features
    • Fix: Add report button to each user-generated content item; implement user blocking; add support contact link in Settings

리뷰

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

댓글

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

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

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

0 / 1,000자

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

같은 저장소의 스킬

Detects missing or insufficient in-app account deletion functionality required since June 30, 2022 under Guideline 5.1.1(v) for all apps that support account creation.

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

cruisediary/apple-app-review-skills192026년 5월 2일 업데이트

Detects feature patterns that require a higher age rating than commonly submitted, enforcing Guideline 2.3.6 which requires age ratings to accurately reflect the app's content and social features.

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

cruisediary/apple-app-review-skills192026년 5월 2일 업데이트

Detects apps that send user data to third-party AI systems without explicit in-app consent and disclosure, enforcing Guideline 5.1.2(i).

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

cruisediary/apple-app-review-skills192026년 5월 2일 업데이트

Detects placeholder content, stub UI, hardcoded test credentials, and non-production endpoints that signal an incomplete app to reviewers under Guideline 2.1.

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

cruisediary/apple-app-review-skills192026년 5월 2일 업데이트

Detects app name violations including names exceeding 30 characters, beta labels, Apple trademark terms, and version numbers in the display name, enforcing Guideline 2.3.7.

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

cruisediary/apple-app-review-skills192026년 5월 2일 업데이트

App Store rejection prevention for iOS/macOS apps. Covers privacy, UGC, IAP, metadata, layout, and quality checks based on real Apple rejection cases.

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

cruisediary/apple-app-review-skills192026년 5월 2일 업데이트

cruisediary의 스킬 모두 보기

이 스킬의 문제 신고