Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when a mobile app needs a release pipeline - fastlane GitHub Actions to TestFlight (iOS) and Play internal track (Android), with code signing and the release naming that maps to TaskTrooper's prod deploy
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Mobile does not deploy to a cloud you run — it deploys to Apple's and Google's stores, so there is no GCP/AWS split. The CD pipeline builds a signed artifact and uploads it to a test track (TestFlight / Play internal), which is the mobile equivalent of a staged deploy. Read [[ci-cd-pipeline-authoring]] for the workflow naming/dispatch contract; this skill fills in the store steps.
Core principle: Signing is the hard part, not the upload. Get reproducible, secret-driven signing right and the release is a one-command fastlane lane.
If the repo has no fastlane/ yet, create it directly: Fastfile lanes beta (stage) and release (prod, store-executor driven), per the iOS/Android sections below, plus deploy-stage/preprod/prod.yml workflow files. There is no search_boilerplate_catalog tool in this agent's tool list — don't call it.
stage → internal test track: TestFlight (iOS) / Play internal track (Android).preprod → TestFlight external group / Play closed (beta) track.prod → App Store / Play production — the workflow file must still contain prod/production/release so the pipeline's prod_deploy check detects it, but nothing dispatches it directly: mobile ships through a batch delivery profile. A merged mobile task joins the component's draft release and waits in done; a human cuts the release on the Deploy tab, and the release engineer then starts the build (store executor) or lets a tag push trigger it (github_actions executor — see [[ci-cd-pipeline-authoring]]'s batch section).runs-on: macos-26; macos-14 is deprecated since 2026-07-06 and unsupported from 2026-11-02, and cannot run Xcode 26, which every App Store Connect upload has needed since 2026-04-28). Select the Xcode version the app needs (≥26) with xcode-select/xcodes; Xcode 27 needs macOS Tahoe 26.6+ on the runner image.MATCH_PASSWORD) — never check certificates into the app repo..p8 + key id + issuer id), not an Apple ID password.fastlane build_app → upload_to_testflight. For prod, submit for review (fastlane deliver).bundleRelease); sign with the upload keystore from a base64 secret decoded at runtime.SUPPLY_JSON_KEY_DATA secret); upload with fastlane supply(track: 'internal') (or production for prod).targetSdk 36 — required for new apps and updates on Play since 2026-08-31 (existing apps may stay on 35 under the extension window).TaskTrooper chooses the build number; the generated scripts/mobile-release.sh reads it from BUILD_NUMBER and passes it to xcodebuild (CURRENT_PROJECT_VERSION) and Gradle (-PversionCode, -Pandroid.injected.version.code). Do not add increment_build_number, a latest_testflight_build_number + 1 lane or a github.run_number versionCode — two counters fight, and the store rejects the lower one.
<sequence>.<task number>.<attempt> (e.g. 412.54.2) — CFBundleVersion takes up to three integers and TestFlight compares the first one first, so every upload is higher than the last whatever task it belongs to. The project's Info.plist must take CFBundleVersion from $(CURRENT_PROJECT_VERSION).versionCode = <sequence>. A project that hardcodes versionCode still gets the number through AGP's injected override.Per-task test builds: a task entering Human UAT is built from its checkout and uploaded to TestFlight (opened to the internal groups) and to Play internal app sharing (a per-build link, no versionCode ordering). A rejected task that comes back to UAT gets the next attempt number. The "What to Test" note carries the task key, attempt and commit. Test builds share the release's marketing version, so the iOS prod channel submits only the build named by the workflow's build_number input, and Android test builds never go to the internal track the release promotes from.
Unlike cloud deploys, mobile signing needs genuine secrets in GitHub secrets: — App Store Connect API key, MATCH_PASSWORD, keystore + passwords, Play service-account JSON. Store them as encrypted secrets, decode at runtime, never commit or log them. There is no OIDC path for the stores.
The "health check" is the store's own processing/validation. Fail the job if fastlane upload fails or the build is rejected. A successful upload is the store gate passing at ready_for_qa time — it still does not move the task anywhere: mobile is a batch delivery profile, so a merged mobile task waits in done, joined into the component's draft release, until a human cuts it.
For a store-executor batch component, deploy_release (called by the release engineer once a human has cut the release) is storeops.Service.StartBuild for every platform with a linked app — the same build this skill's stage lane produces, just started directly instead of by this workflow's own trigger. It records the internal-channel build number before starting (baseline_build) and the release is verified once the internal channel shows a build other than that baseline (build). A platform whose start fails keeps its error on the release; the others still proceed.
Code-level, this agent can act on these directly:
PrivacyInfo.xcprivacy listing required-reason APIs, including ones pulled in by third-party SDKs; an NS*UsageDescription string for every permission the app requests (a missing one terminates the app at the request, not a graceful denial); in-app account deletion if the app creates accounts (guideline 5.1.1(v)); a monotonic build number (see above).targetSdk 36; 16 KB-aligned native libraries (keep Flutter/NDK deps current — only matters if the app ships native code); Photo Picker instead of READ_MEDIA_IMAGES unless media access is the app's core use; declared foreground-service types; an account-deletion path (in-app + web link) if the app creates accounts; a monotonic versionCode (see above).batch delivery profile, a merged task waits in done, and a human cuts the release that then starts the build (see "When the store executor ships a cut release" above).ubuntu trying to build iOS (needs macOS).まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping
日本語の概要は準備中です。原文の説明を表示しています。
Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal
日本語の概要は準備中です。原文の説明を表示しています。
Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task
日本語の概要は準備中です。原文の説明を表示しています。
How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.
日本語の概要は準備中です。原文の説明を表示しています。
Use when deciding whether a request needs an analiz task before implementation - the conditions that require the architect's analysis versus going straight to implementation
日本語の概要は準備中です。原文の説明を表示しています。