{"id":"62b2db8d-f7bf-4102-b322-ff846de116cc","slug":"ios-hidden-feature-audit","kind":"skill","name":"ios-hidden-feature-audit","summary":"Agent skill for Apple App Review Guideline 2.5.19: hidden feature audits, iOS distribution isolation, and artifact scanning.","owner":"sinyu1012","repoUrl":"https://github.com/sinyu1012/ios-hidden-feature-audit","license":"MIT","licenseTier":"permissive","trust":"community","stars":4,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-10-19T13:40:29.000Z","addedAt":"2026-10-21T11:47:58.690Z","logoUrl":"https://avatars.githubusercontent.com/u/11555978?u=735034dd82aa803a5cd9bb4fd83281281f10f81b&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["writing"],"tags":["app-review","app-store","apple","codex","flutter","ios"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-27T02:01:39.241Z","sample":false,"url":"https://conduits.dev/tools/ios-hidden-feature-audit","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# Apple App Review 2.5.19 — Hidden Feature Audit Skill\n\n[English](README.md) | [简体中文](README.zh-CN.md)\n\nA reusable agent skill for auditing **hidden, dormant, and undocumented functionality** under **Apple App Review Guideline 2.5.19**, with practical guidance for native iOS, Flutter, and React Native projects.\n\nIt helps you separate production features from internal testing, preserve legitimate behavior, document exceptions, and verify the actual shipping artifact. Includes a read-only, dependency-free Python bundle scanner.\n\n**Independent community project. Not affiliated with or endorsed by Apple. This is an engineering workflow, not an approval guarantee or a way to conceal functionality from App Review.** See [Apple's official guidelines](https://developer.apple.com/app-store/review/guidelines/#software-requirements) for current requirements.\n\n## What it covers\n\n- Risk-prioritized inventory of internal tools, purchase overrides, simulated data, hidden entrypoints, and remote configuration.\n- Compilation boundaries across native targets, generated bridges, shared packages, localized strings, and bundled resources.\n- Debug, internal Release, production candidate, TestFlight, App Store, and Android behavior matrices.\n- Limited tool access, direct-route protection, startup latency, transient errors, historical settings, and upgrade compatibility.\n- Semantic naming and versioned configuration migration without disguising behavior or breaking older clients.\n- StoreKit-based purchase testing, positive checks for real purchase code, and archive gates before upload.\n- Remote-feature inventories, reviewer access, rollout plans, and project-specific artifact policies.\n\n**TestFlight is an installation channel, not a build configuration.** A candidate installed through TestFlight contains the same compiled capabilities as that candidate when submitted to the store. Receipt-based restrictions do not remove code.\n\n## Install\n\nFor Codex, clone this repository into your skills directory. Use a different destination if a skill already exists there; inspect it before replacing anything.\n\n```sh\ngit clone https://github.com/sinyu1012/ios-hidden-feature-audit.git   \"${CODEX_HOME:-$HOME/.codex}/skills/ios-hidden-feature-audit\"\n```\n\nReload the skill list or start a new session if needed. For another agent that supports `SKILL.md`, place the complete folder in that agent's documented skills location. The guidance and scanner can also be used manually.\n\n## Example prompts\n\n```text\nUse $ios-hidden-feature-audit to audit this iOS project against Apple\nApp Review Guideline 2.5.19. Do not modify code. Report evidence and a\nrisk-prioritized plan, including native code and all localized resources.\n```\n\n```text\nUse $ios-hidden-feature-audit to isolate the agreed internal capabilities\nfrom the production candidate while preserving internal Release and\nAndroid behavior. Only run source-level checks; do not build or use devices.\n```\n\nThe skill follows the requested scope. Auditing does not authorize publishing, uploading a build, or changing production configuration.\n\n## Scan an artifact\n\nUse Python 3.9 or later. The scanner uses only the standard library and runs without Xcode. It expects an **unencrypted** `.app` or an `.xcarchive` with exactly one main app. Unpack IPA files separately.\n\n```sh\n# Inventory only: exit 0 does NOT mean compliance or policy approval.\npython3 scripts/scan_bundle.py /path/to/Example.app\n\n# Copy and adapt the template to YOUR project's stable markers and paths.\ncp assets/audit-policy.example.json /path/to/project-policy.json\n# Edit the copied policy and remove example_only before running:\npython3 scripts/scan_bundle.py /path/to/Example.xcarchive   --policy /path/to/project-policy.json --profile app-store\n```\n\nThe example is deliberately rejected until adapted. It is not an Apple blacklist.\n\n| Exit code | Meaning |\n|---|---|\n| 0 | Inventory complete or project policy passed; inspect `mode` / `status` |\n| 1 | Project policy violation or missing required evidence |\n| 2 | Input, policy, parsing, size, or scan error |\n\nThe scanner identifies Mach-O files by magic bytes, scans supported resources, and checks both forbidden and required project markers. Broad terms such as `debug`, `mock`, and `purchase` are only investigation clues. Marker absence does not prove feature removal, and marker presence does not prove an executable feature or certain rejection. See [scanner behavior and limitations](references/artifact-scanning.md).\n\nNo binaries or reports are uploaded by the scanner. Output omits raw matching contexts, but filenames, configured markers, and configuration-error paths may still be sensitive. Sanitize reports before sharing.\n\n## Repository guide\n\n| File | Purpose |\n|---|---|\n| [SKILL.md](SKILL.md) | Agent entrypoint and workflow |\n| [Policy and evidence](references/policy-and-evidence.md) | Official sources and limits of evidence |\n| [Implementation](references/implementation.md) | Build boundaries, runtime access, configuration migration |\n| [Submission checks](references/submission-checks.md) | StoreKit testing, purchase retention, release CI, remote features |\n| [Project templates](references/project-templates.md) | Capability matrix, AGENTS.md, testing and review notes |\n| [Artifact scanning](references/artifact-scanning.md) | Policy schema and scanner limitations |\n| [Example policy](assets/audit-policy.example.json) | Adaptable, non-production policy template |\n\n## Validation and contributions\n\n```sh\npython3 -m unittest discover -s tests -v\n```\n\nTests use synthetic bundles and do not build or launch an iOS app. They validate scanner behavior, not App Review compliance. CI runs the suite on Python 3.9 and 3.13.\n\nIssues and pull requests are welcome. Share sanitized minimal reproductions only: no private application identifiers, credentials, personal data, internal URLs, proprietary binaries, or unredacted scan reports. Policy claims should link to current Apple documentation and distinguish evidence from inference.\n\n## License\n\n[MIT](LICENSE). English is the default language for the skill and technical references; the Chinese README provides an equivalent introduction and usage guide.\n"}