BUNDLE Security scanned4 skills

    Indie Mobile Release Pipeline (Flutter & React Native)

    Four paid skills that take a small Flutter, React Native or Expo app from a fork of one you already ship to a build in App Store review, then keep a whole shelf of apps updating without a burst of submissions that looks like spam to Apple.

    • New App from a Fork: copy one of your apps into a new one without carrying over the parent's Firebase project, ad ids or bundle ids. On Expo it also catches the parent's EAS project id, updates URL and App Store Connect app id.
    • Bug Hunt: find the bugs that pass your analyzer and your whole test suite (flutter analyze, or tsc, eslint and jest), and fix each one with a test that fails first.
    • iOS Release to TestFlight: signing, store records and upload in the order Apple enforces, with a fix written down for each known error. Flutter builds, bare React Native through xcodebuild, Expo through eas build and eas submit.
    • Release Cadence for Many Apps: pick which app goes to review today, run the pre-release checks, and pace submissions across the account. Finds Flutter, React Native and Expo apps in the same folder.

    The release checks these call (app similarity for guideline 4.3, listing accuracy, the Google Play release guide, polish and frame performance) are free on my profile and cover both stacks.

    For solo developers shipping several mobile apps. I use these to ship my own. Written for and tested in Claude Code.

    Works with every agent that reads SKILL.md — Claude Code, Cursor, Codex CLI, Gemini CLI, GitHub Copilot, Windsurf, OpenClaw, and more.

    James Krupnik
    Created by
    James Krupnik
    $39$60
    Save 35% · $21

    One payment, lifetime access. 4 skills unlock instantly in your library.

    30-day refund guarantee

    Instant unlock in your library

    Free updates from the creator

    What's included

    4 skills

    See it in action

    New App from a Fork (Flutter & React Native)

    New App from a Fork (Flutter & React Native)

    Example session with this skill installed

    Make a new app called Chore Jar from my-app-template. It's a simple counter for kids' chores.

    • Read your context and instructions
    • Compiled the new app from

    What the skill printed

    The residue check, run straight after the copy and before the rename:

    Scanned 208 files in ~/apps/chore-jar
    Tokens: basic-app, basicApp, BasicApp, basicapp, com.example.basicapp.RunnerTests, 123456789012, ca-app-pub-0000000000000000~1111111111, ca-app-pub-0000000000000000~1111111111
    
    FAIL  '123456789012' x12
            android/app/google-services.json:3  "project_number": "123456789012",
            android/app/google-services.json:10  "mobilesdk_app_id": "1:123456789012:android:a1b2c3d4e5f6a7b8c9d0e1",
            firebase.json:7  "appId": "1:123456789012:android:a1b2c3d4e5f6a7b8c9d0e1",
            firebase.json:14  "appId": "1:123456789012:ios:a1b2c3d4e5f6a7b8c9d0e1",
            firebase.json:23  "android": "1:123456789012:android:a1b2c3d4e5f6a7b8c9d0e1",
            ... 7 more
    FAIL  'basic-app' x15
            .firebaserc:3  "default": "basic-app"
            android/app/google-services.json:4  "project_id": "basic-app",
            android/app/google-services.json:5  "storage_bucket": "basic-app.firebasestorage.app"
            firebase.json:6  "projectId": "basic-app",
            firebase.json:13  "projectId": "basic-app",
            ... 10 more
    note  'basic-app' x1
            CLAUDE.md:22  `lib/firebase_options.dart` points at a Firebase project alias (`basic-app`)
    FAIL  'basicApp' x1
            scripts/rename_app.sh:30  readonly OLD_CAMEL="basicApp"               # iOS test target bundle id
    FAIL  'basicapp' x15
            android/app/build.gradle.kts:20  namespace = "com.example.basicapp"
            android/app/build.gradle.kts:31  applicationId = "com.example.basicapp"
            android/app/google-services.json:12  "package_name": "com.example.basicapp"
            android/app/src/main/kotlin/com/example/basic_app/MainActivity.kt:1  package com.example.basicapp
            ios/Runner.xcodeproj/project.pbxproj:521  PRODUCT_BUNDLE_IDENTIFIER = com.example.basicapp;
            ... 10 more
    note  'basicapp' x1
            scripts/release_android.sh:8  #   - Google Play Console app created with package com.example.basicapp
    FAIL  'ca-app-pub-0000000000000000~1111111111' x1
            android/app/src/main/AndroidManifest.xml:32  android:value="ca-app-pub-0000000000000000~1111111111" />
    FAIL  'ca-app-pub-0000000000000000~1111111111' x1
            ios/Runner/Info.plist:28  <string>ca-app-pub-0000000000000000~1111111111</string>
    FAIL  'com.example.basicapp.RunnerTests' x3
            ios/Runner.xcodeproj/project.pbxproj:539  PRODUCT_BUNDLE_IDENTIFIER = com.example.basicapp.RunnerTests;
            ios/Runner.xcodeproj/project.pbxproj:558  PRODUCT_BUNDLE_IDENTIFIER = com.example.basicapp.RunnerTests;
            ios/Runner.xcodeproj/project.pbxproj:575  PRODUCT_BUNDLE_IDENTIFIER = com.example.basicapp.RunnerTests;
    
    FAIL = rename it. regen = rerun the generator / pub get / pod install. note = docs or a comment; fine if it names the parent on purpose, stale if it describes the parent as this app.
    

    Every FAIL line is a value the copy still shares with its parent.

    How to use

    Skills on Agensi run inside your AI agent. Copy the prompt, paste it into your agent, and it connects to Agensi and installs these skills for you. If a payment is needed, your agent shows it to you first.

    Reviews

    No reviews yet

    Be one of the first to try it. Every skill in this bundle passes our trust checks.

    Security scanned

    Passed our 8-point scan before listing

    Fresh listing

    Recently published to Agensi

    30-day refund

    Not a fit? Get your money back

    Frequently asked questions