Community코딩 & 개발github.com

new-app-info

Apple의 '추가 정보 필요' App Review 답변에 대응하는 정보 패키지를 자동으로 생성합니다. 실제 기기 녹화 샷 리스트, 앱 목적 및 대상 사용자, 설정 및 주요 기능, 외부 서비스, 지역별 차이, 규제 산업/보호 자료 등 6가지 필수 항목을 앱 코드에서 추출하여 구성하며, '일반적인 문제 방지' 검사도 수행합니다.

new-app-info란 무엇인가요?

new-app-info는 Apple App Review에서 '앱을 더 잘 이해하기 위해 추가 정보가 필요합니다'라는 메시지를 받았을 때 필요한 정보 패키지를 자동으로 생성하는 AI 에이전트 스킬입니다. App Review Connect에 제출할 6가지 필수 항목을 모두 다룹니다: (1) 실제 기기에서 최신 OS로 녹화한 화면 녹화 샷 리스트, (2) 앱의 목적과 대상 사용자, (3) 설정 및 주요 기능 (로그인 자격 증명 및 샘플 파일 포함), (4) 앱이 사용하는 외부 서비스, (5) 지역별 차이점, (6) 규제 산업 또는 보호된 제3자 자료. 또한 Apple의 '일반적인 문제 방지' 검사도 수행합니다. 모든 답변은 앱 코드에서 직접 추출됩니다 (계정, 사용자 생성 콘텐츠, 인앱 구매, SDK, 로케일, 화면 캡처 차단, 데이터 삭제 등). 연결된 iPhone의 iOS 버전을 읽고 최신인지 확인합니다. 마지막으로 사용자에게 App Review Information → Notes에 답변을 붙여넣도록 안내합니다. 이 스킬은 사용자가 App Review 메시지를 붙여넣거나 '/new-app-info', '리젝당해서 추가 정보 요청받음', 'App Review 답변', 'App Store 리뷰 패키지 만들어줘' 등의 명령어를 입력할 때 사용합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jamesisbuilding/App-Building-Skills/tree/main/skills/new-app-info

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

new-app-info은(는) 무엇을 하나요?

Apple의 "추가 정보 필요" 요청을 하나의 파일로 변환합니다. 사용자는 App Store Connect에 답변을 게시하고 App Review Information의 노트 필드에도 붙여넣어 향후 제출 시에도 사용할 수 있도록 합니다. 녹화는 사용자만 직접 제작할 수 있는 부분입니다.

Apple이 요구하는 6가지 항목

모든 패키지는 Apple의 메시지에 항목이 누락되거나 다르게 표현되더라도 1~6번 순서로 6가지 항목을 모두 포함합니다. Apple의 메시지에 항목이 추가되거나 변경된 경우 Apple 버전을 따르고 차이점을 기록하세요.

#Apple이 요청하는 항목답변 제공 주체
1최신 OS가 설치된 실제 기기에서 화면 녹화. 앱 실행부터 시작하여 계정 등록, 로그인 및 계정 삭제, 사용자 생성 콘텐츠의 신고 및 차단, 유료 콘텐츠 접근 등 일반적인 사용자 흐름을 보여주어야 함파트 1 (샷 리스트) + 답변 §1
2앱의 목적과 대상 사용자: 해결하는 문제와 제공하는 가치답변 §2
3주요 기능 설정 및 접근 방법, 필요한 로그인 자격 증명 또는 샘플 파일 포함답변 §3
4핵심 기능에 사용되는 외부 서비스, 도구 또는 플랫폼 (데이터 제공자, 인증, 결제 처리, AI 서비스)답변 §4
5기능 또는 콘텐츠의 지역별 차이점 또는 모든 지역에서 동일하게 작동한다는 확인답변 §5
6규제가 심한 산업 또는 보호된 제3자 자료: 승인을 증명하는 문서 또는 자격 증명답변 §6

엄격한 규칙

  1. 녹화는 반드시 실제 기기, 최신 OS, 단일 테이크, 정상 속도, 앱 아이콘을 탭하는 순간부터 시작해야 합니다. 시뮬레이터 녹화나 속도가 조정된 편집본을 제출용으로 제공하지 마십시오. 사용자의 휴대폰을 조작할 수 없으므로 녹화는 사용자가 직접 수행하며, 여러분의 역할은 샷 리스트를 제공하는 것입니다.
  2. 빌드에 있는 내용만 주장하세요. 모든 기능, 서비스 및 언어는 계획이나 메모가 아닌 코드에서 비롯되어야 합니다.
  3. 해당 사항 없음도 답변입니다. 사유와 함께 한 문장으로 제시하세요 (예: "앱에 계정 등록 또는 로그인이 없습니다").
  4. 계정: 사용자가 계정을 만들 수 있는 경우 계정 삭제는 필수이며 녹화에 포함되어야 합니다. 누락된 경우 차단 항목으로 보고하십시오. 로그인이 있는 경우 항목 3에는 데모 자격 증명이 필요합니다 (계정 유형당 한 세트). 사용자에게 App Store Connect에 입력하도록 안내하십시오. 절대 실제 비밀번호를 파일에 작성하지 마십시오.
  5. App Store Connect에서 아무 것도 보내거나 제출하거나 편집하지 마십시오. 사용자가 답변을 붙여넣고 비디오를 첨부합니다.
  6. 리포지토리나 기기에서 가능한 모든 플레이스홀더를 채우십시오. 남은 플레이스홀더와 각각을 채울 내용을 나열하십시오.

1단계: Apple 메시지 읽기

사용자가 메시지를 붙여넣은 경우 위 표의 번호가 매겨진 항목과 비교하고 이 앱에 적용되는 녹화 조건 (계정, 사용자 생성 콘텐츠, 유료 콘텐츠)을 기록하십시오.

2단계: 코드에 기반하여 검증

제출된 커밋의 코드를 읽으세요. 작업 복사본이 아닙니다 (먼저 고정하십시오. 6단계 → 리뷰 빌드, 0단계 참조). 작업 복사본은 종종 출시되지 않은 기능이 있는 기능 브랜치이며, 이를 Apple에 설명하는 것은 보유하지 않은 빌드에 대한 주장이 됩니다. git grep <패턴> <커밋> -- <경로> 및 git show <커밋>:<경로>를 사용하십시오.

모든 검색에서 build, Pods, .dart_tool, node_modules 및 .git을 제외하십시오.

항목확인 위치
1, 3: 실행부터의 주요 흐름라우터 및 화면; 온보딩; 핵심 루프
1, 3: 계정, 로그인, 삭제firebase_auth, sign_in_with_apple, supabase, Auth, login, signUp, deleteAccount, delete.*data
1: 사용자 생성 콘텐츠게시, 댓글, 채팅, 업로드; report, block, flag
1, 3: 유료 콘텐츠purchases_flutter, revenuecat, StoreKit, product_id, 페이월 화면. 어떤 기능이 잠겨 있는지, 무료 체험 기간이 있는지, 페이월이 나타나는 시기, 구매 복원 위치 확인
1: 화면 캡처 차단no_screenshot, isSecureTextEntry 트릭, UIScreen.capturedDidChange, FLAG_SECURE. 차단된 화면은 녹화에서 빈 화면으로 나타나므로 답변에 이유를 명시해야 함
2: 목적 및 대상 사용자스토어 리스팅 카피, 브랜드 또는 음성 문서, README, 출시 체크리스트, 온보딩 카피 (.arb, .strings, strings.xml)
3: 샘플 파일파일 가져오기, 문서 피커, QR/바코드 스캐닝, 앱에 필요한 하드웨어
4: 외부 서비스종속성 (pubspec.yaml, Podfile, package.json, Gradle) 및 빌드 정의 (--dart-define, 키 파일, 릴리스 스크립트). 각각: 하는 일과 가져오는 데이터. 릴리스 빌드에서 실제로 켜는 SDK만 나열
5: 지역출시된 로케일; 지역 검사 (locale, countryCode, region); 지역별 가격, 기능 또는 콘텐츠
6: 규제 또는 보호건강, 의료, 금융, 도박, 법률 또는 어린이 콘텐츠 및 관련 주장; 라이선스가 필요한 콘텐츠, 음악, 이미지, 폰트 및 라이선스
연락처설정, 개인정보 보호 문서 및 웹사이트 파일의 지원 이메일
플랫폼IPHONEOS_DEPLOYMENT_TARGET, TARGETED_DEVICE_FAMILY (iPhone 전용 또는 iPad 포함)

항목 4의 분석 관련 문구가 리포지토리의 개인정보 처리방침과 일치하는지 확인하십시오. 일치하지 않거나, App Store Connect 앱 개인정보 보호 답변을 확인할 수 없는 경우 플래그를 지정하십시오.

3단계: 기기 및 OS (항목 1)

  1. xcrun devicectl list devices로 페어링된 기기를 표시합니다. 사용자가 사용할 수 있는 자신의 iPhone을 선택하십시오.
  2. xcrun devicectl device info details --device <id> | grep -i osVersion으로 iOS 버전을 표시합니다.
  3. 웹에서 최신 iOS 릴리스를 검색하십시오. 휴대폰이 구버전인 경우 알립니다: 사용자는 녹화 전에 설정 → 일반 → 소프트웨어 업데이트에서 업데이트한 다음 버전을 다시 읽습니다. 휴대폰 OS는 사용자가 업데이트해야 합니다.
  4. 페어링된 휴대폰이 없으면 [iOS 버전]을 남겨두고 사용자에게 확인 위치 (설정 → 일반 → 정보)를 알려주십시오.

4단계: 일반적인 문제 방지

Apple의 일반적인 문제 각각을 확인하고 그 결과를 사용자에게 보고하십시오. 이는 답변의 일부가 아닌 사용자를 위한 확인 사항입니다.

가이드라인확인 사항
2.1 버그 및 크래시녹화는 실제 기기에서 제출된 버전의 TestFlight 빌드를 사용합니다. TARGETED_DEVICE_FAMILY에서 지원되는 플랫폼: iPad가 지원되는 경우 사용자에게 iPad에서도 테스트하도록 알립니다
2.1 앱 접근로그인 → 데모 자격 증명이 계정 유형당 한 세트씩 App Store Connect에 입력되어 있고 여전히 작동하는지 확인
2.3.3 스크린샷스토어 스크린샷을 나열하십시오 (예: app-store-assets/*screenshots*). 타이틀 아트, 스플래시 또는 로그인 화면처럼 보이는 것이 있으면 플래그를 지정하십시오
3.1.1 인앱 구매코드의 모든 제품 ID가 App Store Connect에 구성되어 있고 이 제출에 첨부되어 있는지 확인하십시오. 사용자가 확인할 수 있도록 ID를 나열하십시오
3.2 기타 비즈니스 모델앱이 하나의 비즈니스, 조직 또는 해당 직원을 위한 것이라면 다른 배포 옵션 (사용자 지정 앱 또는 비공개 배포)이 필요하다는 플래그를 지정하십시오

5단계: 파일 작성

app-store-assets/new-app-info.md 폴더가 있으면 해당 위치에, 없으면 ./new-app-info.md에 작성하십시오. 다음 형식을 유지하십시오 (전체 예제는 examples/seven-minute-math/new-app-info.md에 있음):

# App Review 정보 — <앱 이름>

파트 2와 함께 App Store Connect에 답변을 게시하고 녹화를 첨부하십시오. 그런 다음 파트 2를
App Review Information → Notes에 붙여넣어 향후 제출 시에도 사용할 수 있도록 하십시오.
<아직 채워야 할 플레이스홀더(있는 경우).>

## 파트 1 — 화면 녹화 (항목 1; 직접 녹화)
이유: 실제 기기, 최신 OS, 단일 테이크, 정상 속도, 아이콘 탭부터 시작.
설정 (기본값: Mac에서 설치된 릴리스 빌드; 아래 "리뷰 빌드" 참조):
샌드박스 테스터 생성 (App Store Connect → 사용자 및 액세스 → 샌드박스 → 테스트 계정);
휴대폰에서 앱 삭제; 리뷰 빌드를 빌드 및 설치; 제어 센터에서 마이크 꺼진 상태로 화면 녹화;
방해 금지 켜기; 샌드박스 테스터로 Apple 구매 시트에 로그인 ("샌드박스"라고 표시된 시트는 정상).
번호가 매겨진 샷 리스트: 아이콘 탭 → 온보딩 → 종단 간 일반적인 흐름 → 결과 →
적용되는 모든 녹화 조건 (가입, 로그인, 계정 삭제; 게시, 신고, 차단;
페이월, 샌드박스 구매, 잠금 해제된 기능, 구매 복원) → 사용자가 데이터를 삭제하는 방법 → 중지.
빈 화면이 될 모든 화면 (캡처 차단) 및 이유.

## 파트 2 — 답변 (이것을 붙여넣기)
인사말 및 녹화가 이루어진 기기 및 iOS 버전.
**1. 화면 녹화** … **6. 규제 산업 / 제3자 자료**: 각각 굵은 제목 섹션.
지원 이메일로 마무리.

작성:

  • §1: 녹화 내용, 적용되지 않는 녹화 조건 및 이유, 빈 화면.
  • §2: 대상 사용자, 문제, 앱 해결 방법, 가치. 3~4문장.
  • §3: 시작하는 데 필요한 것 (자격 증명은 App Store Connect에 입력, 파일에 절대 입력 금지), 주요 기능을 짧은 목록으로, 무료 및 유료 여부와 페이월이 나타나는 시기.
  • §4: 각 서비스의 역할을 설명하는 글머리 기호. 그리고 앱이 사용하지 않는 것 (AI, 데이터 제공자, 인증)에 대한 한 줄 설명 (해당되는 경우).
  • §5: 언어 및 지역별 차이점 또는 "모든 지역에서 동일하게 작동".
  • §6: 문서, 또는 "해당 사항 없음"과 이유.
  • 평이하고 사실적이며 정중하게. 마케팅 언어 사용 금지.

6단계: 종단 간 비디오 (항목 1)

리뷰 빌드

리뷰 중인 정확한 버전의 릴리스 빌드를 Mac에서 바로 휴대폰에 설치하여 녹화하십시오. 여러분이 빌드 및 설치하고 사용자가 녹화합니다.

  1. 제출된 버전을 고정하십시오. 사용자에게 App Store Connect의 검토 중인 제출에 표시된 버전 및 빌드 번호 (예: 1.0.0 (1))를 물어보십시오 (아직 제공하지 않은 경우). 이를 생성한 커밋을 찾으십시오: 릴리스 태그, 릴리스 또는 메인 브랜치, "App Store에 출시됨"과 같은 커밋 메시지, 또는 pubspec.yaml/Info.plist가 해당 버전 및 빌드를 설정한 커밋. 일치하는 커밋이 두 개일 수 있는 경우 어느 것인지 물어보십시오. 작업 복사본에서 절대 빌드하지 마십시오: 작업 복사본은 종종 Apple이 보지 못한 커밋되지 않은 변경 사항이 있는 기능 브랜치입니다. 대신 격리된 작업 트리에서 빌드하십시오 (git worktree add --detach <scratch>/review-build <commit>). git에서 무시된 키 파일 (예: keys.json)을 읽지 않고 cp를 사용하여 복사하십시오. 빌드 중인 커밋과 비디오에 포함되지 않을 최신 브랜치의 내용을 사용자에게 알리십시오.
  2. 프로젝트의 일반적인 기기 빌드 (run 스크립트, tool/*.sh, Makefile, Fastlane)를 찾으십시오. DUMMY_PURCHASES, MOCK, FAKE, USE_TEST_STORE, RevenueCat test_ 키 또는 StoreKit 구성 파일과 같이 구매를 시뮬레이션하는 모든 플래그를 제거하십시오. 가짜 구매는 Apple의 시트를 절대 표시하지 않으며, 리뷰어가 유료 기능이 가짜 구매 없이 잠금 해제되는 것을 보면 인앱 구매 회피 (3.1.1)로 간주할 수 있습니다. 접두사만으로 구매 키가 실제 스토어 키인지 확인하십시오 (예: grep -q '"REVENUECAT_IOS_KEY": "appl_'). 키 값을 절대 출력하지 마십시오.
  3. 릴리스 모드로 빌드하십시오. 디버그 모드는 절대 금지: 디버그 Flutter 및 React Native 빌드는 홈 화면 아이콘에서 열 수 없으며, Apple은 녹화가 거기서 시작되기를 원합니다. Flutter: flutter build ios --release와 프로젝트의 일반적인 정의에서 가짜 정의를 제외한 것.
  4. 빌드된 앱이 제출과 일치하는지 확인하십시오: /usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" -c "Print CFBundleVersion" build/ios/iphoneos/Runner.app/Info.plist가 제출된 버전 및 빌드를 출력해야 합니다. 그렇지 않으면 중지하고 사용자에게 알리십시오.
  5. 사용자에게 먼저 휴대폰에서 앱을 삭제하도록 요청하십시오 (휴대폰의 데이터가 지워지므로 사용자의 결정입니다). 그런 다음 설치: xcrun devicectl device install app --device <id> build/ios/iphoneos/Runner.app.
  6. Mac에서 설치된 빌드는 Apple의 샌드박스를 통해 구매하므로 사용자는 구매 시트에 로그인하기 위해 샌드박스 테스터가 필요합니다. 동일한 빌드 번호의 TestFlight 설치도 작동하며 (구매는 자체 Apple ID로 무료), Apple이 보유한 정확한 바이너리를 보장합니다. 사용자가 선호하는 경우 사용하십시오.

녹화 및 확인

녹화가 존재하고 확인될 때까지 패키지는 완료되지 않습니다. 사용자가 녹화하고 여러분이 단계별로 안내합니다. 채팅에서 사용자에게 파트 1의 설정 (샌드박스 테스터 포함)과 번호가 매겨진 샷 리스트를 제공하십시오. AirDrop을 사용하여 app-store-assets/review-recording/에 파일을 넣고 완료되면 알리도록 요청하십시오. 그런 다음:

  1. ffprobe -v error -show_entries format=duration:stream=width,height,codec_name -of default=nw=1 <file>. 해상도가 실제 iPhone 화면 (시뮬레이터 창이나 편집된 크롭이 아닌)과 일치하는지, 지속 시간이 전체 흐름을 포함하는지 확인하십시오.
  2. 10초마다 한 프레임씩 콘택트 시트 생성: ffmpeg -i <file> -vf "fps=1/10,scale=240:-1,tile=8x8" -frames:v 1 <dir>/contact.png. 또한 첫 번째 프레임을 별도로 저장하십시오. 둘 다 읽으십시오.
  3. 순서대로 확인: 첫 번째 프레임이 홈 화면 또는 앱 아이콘을 탭하는 장면을 보여주는지; 모든 샷 리스트 단계가 순서대로 있는지; 녹화 조건이 적용되는 순서대로 있는지; 계정 삭제 (해당되는 경우)가 마지막 작업인지; 녹화가 완전히 중지되었는지.

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

app-icon-design

Create, revise, and audit app icons using Apple's Human Interface Guidelines, with a clear visual identity and production-ready deliverables.

app-keyword-research

Validate an app idea against the App Store before building it. Turns the idea into search phrases, measures demand (App Store autocomplete) and competition (current top-10 apps) for each, ranks keywords by opportunity, and maps which apps own the market. Use when the user wants keyword research, ASO, "is there demand for…", "who are the competitors for…", "what should we call it / which keywords", or to validate or compare app ideas.

app-offer

Designs one opinionated "Grand Slam Offer" for any app idea, new or already shipped, by running Alex Hormozi's $100M Offers method adapted to app stores. It covers the market and niche, the commodity check, a value-equation audit, the problem inventory, delivery vehicles, the trimmed value stack, pricing and tiers, scarcity, urgency, bonuses, the guarantee, naming, the paywall per placement, the onboarding fast win, a test plan and a ship plan. It works within App Store and Google Play rules. For a shipped app it reads the code and notes first and produces a before/after. Use it when the user says "/app-offer", "run app-offer on <idea>", "make a grand slam offer for my app", "Hormozi my app", "price my app" or "design my paywall offer", or asks how to package, price, name, guarantee or paywall an app. It writes offer/grand-slam-offer.md (or ./<app-slug>-grand-slam-offer.md for a new idea).

brand-reference-pack

Build or refresh a shortform brand reference pack for any app from its real surfaces — website, App Store listing and reviews, socials, the live app (driven end to end on the simulator) and its code tokens — plus a status check of the upstream foundations (ICP, voice of customer, brand voice). Produces the context that content formats and design decisions are made from, as markdown, tokens.json and a PDF. Use for "build a brand pack for <app>", "refresh the brand pack", "capture the site/app/socials for shortform", "/brand-reference-pack".

deep-work

Timekeeper and scribe for the user's own timeboxed build session, default 90 min, also 1h / 1.5h / 2h (Orient, Build, Verify, Harden, Close, scaled to the block). Use when the user says "start a session", "deep work", "90 min block", "work block", or invokes /deep-work. Subcommands: status, park <note>, close, abort.

reel-motion-graphics

Turn a script or concept into an on-brand 9:16 explainer reel (luxury tech, warm sand on near-black, glassmorphism, CSS 3D, Bodoni + Instrument Sans) built in HyperFrames, with the animation above the fold and the presenter's talking head below. Use when the user gives a script, transcript, paper summary or concept and asks for a reel, motion graphics, an animated explainer or "the same style as the upcycling reel". Produces a HyperFrames project, a rendered MP4 and a live artifact player.

관련 스킬