ai/ios-skills/ios-axiom-shipping/SKILL.md
Use when preparing ANY app for submission, handling App Store rejections, managing code signing, or setting up CI/CD. Covers App Store submission, rejection troubleshooting, metadata requirements, privacy manifests, age ratings, export compliance.
npx skillsauth add kurko/dotfiles axiom-shippingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You MUST use this skill when preparing to submit ANY app, handling App Store rejections, or working on release workflow.
Use this router when you encounter:
Triggers:
Why app-store-submission: Discipline skill with 8 anti-patterns, decision trees, and pressure scenarios. Prevents the mistakes that cause 90% of rejections.
Invoke: /skill axiom-app-store-submission
Triggers:
Why app-store-ref: 10-part reference covering every metadata field, guideline, and compliance requirement with exact specifications.
Invoke: /skill axiom-app-store-ref
Triggers:
Why app-store-diag: 7 diagnostic patterns mapping rejection types to root causes and fixes. Includes appeal writing guidance and crisis scenario for repeated rejections.
Invoke: /skill axiom-app-store-diag
Triggers:
Why security-privacy-scanner: Autonomous agent that scans for security vulnerabilities and privacy compliance issues that cause rejections.
Invoke: Launch security-privacy-scanner agent or /axiom:audit security
Triggers:
Why iap-auditor: Scans IAP code for the patterns that cause StoreKit rejections.
Invoke: Launch iap-auditor agent
digraph shipping {
"Shipping question?" [shape=diamond];
"Rejected?" [shape=diamond];
"Need specific specs?" [shape=diamond];
"IAP issue?" [shape=diamond];
"Want code scan?" [shape=diamond];
"app-store-submission" [shape=box, label="app-store-submission\n(pre-flight checklist)"];
"app-store-ref" [shape=box, label="app-store-ref\n(metadata/guideline specs)"];
"app-store-diag" [shape=box, label="app-store-diag\n(rejection troubleshooting)"];
"security-privacy-scanner" [shape=box, label="security-privacy-scanner\n(Agent)"];
"iap-auditor" [shape=box, label="iap-auditor\n(Agent)"];
"Shipping question?" -> "Rejected?" [label="yes, about to submit or general"];
"Rejected?" -> "app-store-diag" [label="yes, app was rejected"];
"Rejected?" -> "Need specific specs?" [label="no"];
"Need specific specs?" -> "app-store-ref" [label="yes, looking up field/guideline"];
"Need specific specs?" -> "IAP issue?" [label="no"];
"IAP issue?" -> "iap-auditor" [label="yes"];
"IAP issue?" -> "Want code scan?" [label="no"];
"Want code scan?" -> "security-privacy-scanner" [label="yes, scan for privacy/security"];
"Want code scan?" -> "app-store-submission" [label="no, general prep"];
}
Simplified:
| Thought | Reality | |---------|---------| | "I'll just submit and see what happens" | 40% of rejections are Guideline 2.1 (completeness). app-store-submission catches them in 10 min. | | "I've submitted apps before, I know the process" | Requirements change yearly. Privacy manifests, age rating tiers, EU DSA, Accessibility Nutrition Labels are all new since 2024. | | "The rejection is wrong, I'll just resubmit" | Resubmitting without changes wastes 24-48 hours per cycle. app-store-diag finds the root cause. | | "Privacy manifests are only for big apps" | Every app using Required Reason APIs needs a manifest since May 2024. Missing = automatic rejection. | | "I'll add the metadata later" | Missing metadata blocks submission entirely. app-store-ref has the complete field list. | | "It's just a bug fix, I don't need a full checklist" | Bug fix updates still need What's New text, correct screenshots, and valid build. app-store-submission covers it. |
Do NOT use axiom-shipping for these — use the correct router instead:
| Issue | Correct Router | Why NOT axiom-shipping | |-------|---------------|----------------------| | Build fails before archiving | ios-build | Environment/build issue, not submission | | SwiftData migration crash | ios-data | Schema issue, not App Store | | Privacy manifest coding (writing the file) | ios-build | security-privacy-scanner handles code scanning | | StoreKit 2 implementation (writing IAP code) | ios-integration | in-app-purchases / storekit-ref covers implementation | | Performance issues found during testing | ios-performance | Profiling issue, not submission | | Accessibility implementation | ios-accessibility | Code-level accessibility, not App Store labels |
axiom-shipping is for the submission workflow, not code implementation:
User: "How do I submit my app to the App Store?"
→ Invoke: /skill axiom-app-store-submission
User: "My app was rejected for Guideline 2.1"
→ Invoke: /skill axiom-app-store-diag
User: "What screenshots do I need?"
→ Invoke: /skill axiom-app-store-ref
User: "What fields are required in App Store Connect?"
→ Invoke: /skill axiom-app-store-ref
User: "How do I fill out the age rating questionnaire?"
→ Invoke: /skill axiom-app-store-ref
User: "Do I need an encryption compliance declaration?"
→ Invoke: /skill axiom-app-store-submission
User: "My app keeps getting rejected, what do I do?"
→ Invoke: /skill axiom-app-store-diag
User: "How do I appeal an App Store rejection?"
→ Invoke: /skill axiom-app-store-diag
User: "Scan my code for App Store compliance issues"
→ Invoke: security-privacy-scanner agent
User: "Check my IAP implementation before submission"
→ Invoke: iap-auditor agent
User: "What's new in App Store Connect for 2025?"
→ Invoke: /skill axiom-app-store-ref
User: "I need to set up DSA trader status for the EU"
→ Invoke: /skill axiom-app-store-ref
User: "What are Accessibility Nutrition Labels?"
→ Invoke: /skill axiom-app-store-submission
User: "This is my first app submission ever"
→ Invoke: /skill axiom-app-store-submission
data-ai
Merge the current worktree branch into main and sync main back. Use when the user says "merge to main", "ship it", "merge and continue", or after completing a task in a worktree and wanting to continue with the next one.
tools
Synchronize AI agent skills, commands, configs, permissions, hooks, and instructions across Claude Code, Codex CLI, and other Agent Skills-compatible tools. Use when the user asks to pull skills from Claude into Codex, sync Codex work back to Claude, migrate agent commands, reconcile frontmatter, update permissions, or keep agent setup files in parity.
testing
Write or update UI-independent use cases for QA. Use when the user says "write use cases", "add use cases", "QA use cases", "update use cases", "compose use cases", or when starting implementation of a new feature (after plan approval). Also activates for "what should we test", "regression cases", or "use cases for QA".
documentation
Skill on how to write a task. Use when user asks you to write a task (for Asana, Linear, Jira, Notion and equivalent). Also activates when user says "create task", "write task", or similar task creation workflow requests.