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

ns-android-play-console-release

Finish NowStack Mobile Google Play setup and internal Android releases. Use for signed AAB upload, gpc/browser fallback, privacy/app-content gates, or gpc commit failures.

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

설치 방법 보기

포함된 파일(3)

  • SKILL.md6.6 KB
  • agents/openai.yaml243 B
  • scripts/upload-internal-release.cjs7.3 KB

SKILL.md(원문)

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

Android Play Console Release

Use this skill for the practical NowStack Android Play Console path after the Play app/package exists: build a production AAB, validate it, upload it to the Play internal track, and finish the Play Console compliance gates that cannot be safely automated from the API.

Decision

  • Use CLI/API for binary work: building, validating, uploading to internal, checking release status, and reading the internal track.
  • Use browser UI for Play Console questionnaires: App access/login instructions, Data safety, content rating, target audience, ads, advertising ID, government/financial/health declarations, privacy policy, and final send-for-review decisions.
  • Use browser UI when gpc listings/apps mutations fail with rejected-update acknowledgement bugs even when --changes-not-sent-for-review is passed.
  • Stop before production or final review submission unless the user explicitly confirms that step.

Preconditions

Read the repo rules before mutations:

.agents/rules/store-release.md
.agents/rules/mobile-app.md
.agents/rules/auth-payments-storage.md

Confirm:

  • site-config.ts > androidPackage matches the Play app package.
  • mobile-app/app.config.ts resolves the same Android package.
  • mobile-app/google-play-service-account.json exists, is ignored, and works with the target Play app.
  • The user has explicitly asked for the build/upload/setup mutation.

Never print service-account private keys or commit credential files.

Build

Detect the OS before choosing the build path:

uname -s || node -p "process.platform"
  • macOS / Darwin: prefer the repo's configured local EAS build when the user wants to avoid cloud credits but still use EAS-managed Android signing.
  • Windows/Linux: do not attempt local Android production builds. Load/follow .agents/skills/ns-setup-expo/SKILL.md, verify eas-cli, eas whoami, linked easProjectId, and expo-doctor, then use EAS cloud for the signed AAB.

macOS local EAS build:

cd mobile-app
eas build --platform android --profile production --local --non-interactive --output /tmp/nowstack-android-local-v<N>.aab

Windows/Linux EAS cloud build:

cd mobile-app
npx eas-cli@latest build --platform android --profile production --non-interactive

Verify generated Expo config before building:

cd mobile-app
npx expo config --type public

Expected success signals:

  • EAS increments versionCode.
  • Remote Android credentials are used.
  • Gradle finishes :app:bundleRelease.
  • The AAB is written to the explicit /tmp/...aab output path.

Validate

Run local and server-side validation before mutation:

ls -lh /tmp/nowstack-android-local-v<N>.aab
shasum -a 256 /tmp/nowstack-android-local-v<N>.aab
gpc validate /tmp/nowstack-android-local-v<N>.aab --output json
gpc --app dev.melvynx.nowstack publish /tmp/nowstack-android-local-v<N>.aab --track internal --notes "Initial internal test release." --validate-only --changes-not-sent-for-review

gpc preflight is useful when it works, but do not treat a local CLI crash as a Play rejection. Record the crash and continue with stronger signals.

Upload

Try gpc first:

gpc --app dev.melvynx.nowstack --no-interactive --yes releases upload /tmp/nowstack-android-local-v<N>.aab \
  --track internal \
  --notes "Initial internal test release." \
  --name "1.0.0 (<versionCode>)" \
  --changes-not-sent-for-review \
  --output json

If gpc publish or gpc releases upload validates but fails during real commit, use the bundled direct API fallback:

node .agents/skills/ns-android-play-console-release/scripts/upload-internal-release.cjs \
  --app dev.melvynx.nowstack \
  --aab /tmp/nowstack-android-local-v<N>.aab \
  --service-account mobile-app/google-play-service-account.json \
  --track internal \
  --name "1.0.0 (<versionCode>)" \
  --notes "Initial internal test release."

The script creates an Android Publisher edit, uploads the AAB, assigns the track, and commits with retry. It auto-recovers from both states observed in practice:

  • changesNotSentForReview required.
  • changesNotSentForReview must not be set.
  • Bundle upload not completed yet at commit time.

Verify after upload:

gpc --app dev.melvynx.nowstack releases status --output json

Success looks like:

[
  {
    "track": "internal",
    "status": "completed",
    "versionCodes": ["6"]
  }
]

Play Console UI Gates

Binary upload can be done via CLI/API. Play Console setup is only partly automatable.

Use browser UI for:

  • Privacy policy URL.
  • Ads declaration.
  • App access/login instructions.
  • Data safety.
  • Content rating.
  • Target audience and content.
  • Advertising ID.
  • Government apps.
  • Financial features.
  • Health apps.
  • Store listing contact details when gpc apps/listings update hits rejected-update acknowledgement bugs.

Known reviewer account pattern for this repo:

Email: appstoretest@email.com
OTP/code: 123456
Instructions:
Open the app, choose Continue with email, enter appstoretest@email.com, then use verification code 123456. If the onboarding paywall appears, continue with the available non-purchase path. No Google or Apple sign-in is required.

Do not claim premium/full paid access unless the account is actually granted it in production.

If Chrome automation is blocked by an extension popup such as 1Password, stop and ask the user to dismiss the popup. Do not switch to risky OS-level browser control for Play Console forms.

Failure Modes

  • API_CHANGES_NOT_SENT_FOR_REVIEW even with the flag: use the direct API fallback script or browser UI.
  • changesNotSentForReview must not be set: commit the same edit without that query parameter; the fallback script handles this.
  • Some of the Android App Bundle uploads are not completed yet: retry commit on the same edit after waiting; the fallback script handles this.
  • This Edit has been deleted: the failed CLI edit is gone; create a new edit and re-upload.
  • Empty gpc status releases but gpc releases status shows internal: trust the track-specific release status for binary proof.
  • Chrome says automation is blocked by another extension UI: user must dismiss the extension popup before browser work can continue.

Report

Include:

  • Package name.
  • AAB path and SHA256.
  • VersionCode.
  • Track and status from gpc releases status.
  • Which Play Console UI declarations were completed.
  • Which UI declarations remain blocked/manual.

리뷰

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

댓글

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

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

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

0 / 1,000자

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

같은 저장소의 스킬

Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.

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

Melvynx/saveit.now322026년 10월 19일 업데이트

convex

무료

Routes general Convex requests to the right project skill. Use when the user asks which Convex skill to use or gives an underspecified Convex app task.

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

Melvynx/saveit.now322026년 10월 19일 업데이트

Use when optimizing Convex database read bandwidth, documents-read cost, query indexes, full-table scans, function-level usage dashboard findings, or code that uses .filter(), unbounded .collect(), N+1 reads, or expensive reactive Convex queries.

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

Melvynx/saveit.now322026년 10월 19일 업데이트

Build reusable Convex components with isolated tables and app-facing wrappers. Use for defineComponent, app.use, ComponentApi, or shared backend modules.

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

Melvynx/saveit.now322026년 10월 19일 업데이트

Plan safe Convex schema and data migrations. Use for widen-migrate-narrow rollouts, backfills, breaking field changes, table splits, or failed schema deploys.

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

Melvynx/saveit.now322026년 10월 19일 업데이트

Audit Convex performance for hot reads, write contention, subscriptions, function limits, OCC conflicts, latency, read amplification, and expensive reactive queries.

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

Melvynx/saveit.now322026년 10월 19일 업데이트

Melvynx의 스킬 모두 보기

이 스킬의 문제 신고