B2B iOS Dev Tool 6 Python scripts macOS / Windows / Linux

Catch Apple Rejections
Before You Push Your Tag

6 Python lints + 8 integration wrappers. Catches the 5 most common Apple Review and CI rejection categories in ~20 seconds — while you still have time to fix them.

Buy on Gumroad — $79 See what's inside
# Run all 5 lints in one shot — takes ~20 seconds
python ios_preflight_master.py /path/to/your-ios-repo

# Output: 5 categories checked. 0 surprises left.

The problem

You submit. Apple rejects. You fix. You resubmit. Apple takes 24-48h to review. Each round-trip costs you 1-3 days and burns your review credits.

The worst part: most rejections fall into a handful of predictable categories. Signed integer overflow in accumulators. Bundle(for:) inside @testable import. Capability drift between Xcode and App Store Connect. These are all catchable — before you ever tag a build.

The fix

iOS Pre-Ship Lint Suite runs 6 targeted checks against your repo in ~20 seconds. It catches the 5 rejection categories that cause the most round-trips — so you fix them in your IDE, not after Apple's review cycle.

Works on any xcodegen-based iOS project. Fastlane match assumed but adaptable. Python 3.10+. Runs locally, in CI, or as a pre-commit hook.

What you get

6 Core Lints

LintCatchesOffline?
swift_modular_lint.pytruncatingRemainder + signed % on accumulators
test_bundle_audit.pyBundle(for:) inside @testable import
match_audit.pyMatchfile vs project.yml bundle ID drift
asc_capability_consistency.pyCode uses HealthKit/iCloud/App Group not registered on Apple
asc_health_check_one_shot.pySubmission readiness (build attach / locales / IAP)
ios_preflight_master.pyAll 5 above in one command

Lints marked ❌ require ASC API credentials (Key ID + Issuer ID + .p8 key file). Lints marked ✅ run fully offline — no network, no API key needed.

8 Integration Wrappers

  • 01_run_all_local.sh — local dev loop (run after every build)
  • 02_run_in_ci.sh — GitHub Actions CI gate
  • 03_lint_single_repo.py — programmatic JSON output for tooling
  • 04_run_swift_modular_with_filter.py — false-positive suppression
  • 05_run_asc_health_on_schedule.py — cron snapshot before submission
  • 06_pre_commit_hook.sh — git hook drop-in (block bad tags)
  • 07_verify_before_tag.sh — pre-tag readiness probe
  • 08_verify_i18n_kit_completeness.py — companion to the i18n template kit

Documentation

  • LESSONS.md — the 5 rejection case studies each lint encodes (real Apple rejection patterns)
  • CHANGELOG.md — version history
  • LICENSE — MIT, free for private and open-source projects

Why this exists

I shipped 4 iOS apps in 60 days using one Claude Code agent. The hardest part wasn't building — it was Apple's review cycle. Each rejection took 24-48h to hear back, and the fix was usually trivial once I knew what to look for.

I built these 6 lints after watching the same categories of rejections repeat across 4 different apps. They're the post-mortem of 60 days of Apple review cycles — encoded into scripts you can run in 20 seconds.

Built for iOS developers who ship fast and can't afford to burn review credits on preventable rejections.

Who this is for

Indie iOS devs

Ship fast, burn fewer review credits. 5 rejections prevented = ~1 week saved.

Small studios

CI gate prevents bad builds from reaching App Store review. Team-wide.

Agent-driven workflows

Claude Code / Cursor / Copilot can run these lints between "build done" and "tag pushed".

$79
one-time purchase · MIT license · instant delivery
Buy on Gumroad →

Gumroad processes payment. Download link arrives immediately.

FAQ

Does this guarantee my app won't get rejected?
No. Apple reviews ~50 rejection categories. This suite catches the 5 most common ones based on 60 days of real submissions across 4 apps. It's the highest-value subset — not a complete solution.
Why Python and not Swift?
These lints run against your Xcode project structure, build outputs, and ASC API — not Swift source code. Python is the natural choice for tooling that bridges Xcode, Fastlane, and App Store Connect's REST API.
What about App Store Review Guideline checks?
Those are human judgment calls. This suite handles structural and technical checks (code patterns, bundle IDs, capability registration, IAP completeness).
Can I use this with manual signing (no Fastlane)?
The match_audit.py assumes Fastlane match directory structure. The other 5 lints work with any signing setup. You can adapt match_audit.py for manual setups — it's ~50 lines.
Is there a trial version?
The offline lints (swift_modular_lint.py, test_bundle_audit.py, match_audit.py) are fully functional and don't require a license key. Run them directly against your repo to verify the quality before buying.
What's your refund policy?
If the product doesn't work as described, email me and I'll refund. No questions asked.