From axiom
Routes App Store submission tasks to specialist skills: pre-submission checklists, rejection diagnosis, metadata specs, privacy manifests, age ratings, export compliance, and appeals.
npx claudepluginhub charleswiltgen/axiom --plugin axiomThis skill uses the workspace's default tool permissions.
**You MUST use this skill when preparing to submit ANY app, handling App Store rejections, or working on release workflow.**
Provides Ktor server patterns for routing DSL, plugins (auth, CORS, serialization), Koin DI, WebSockets, services, and testApplication testing.
Conducts multi-source web research with firecrawl and exa MCPs: searches, scrapes pages, synthesizes cited reports. For deep dives, competitive analysis, tech evaluations, or due diligence.
Provides demand forecasting, safety stock optimization, replenishment planning, and promotional lift estimation for multi-location retailers managing 300-800 SKUs.
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: 9 diagnostic patterns mapping rejection types to root causes and fixes, including subjective rejections (4.2/4.3, 1.x). 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
Triggers:
Why screenshot-validator: Multimodal agent that visually inspects each screenshot for placeholder text, wrong dimensions, debug artifacts, broken UI, and competitor references. Catches issues that manual review misses.
Invoke: Launch screenshot-validator agent or /axiom:audit screenshots
Triggers:
Why asc-mcp: Workflow-focused skill teaching Claude to use asc-mcp MCP tools for release pipelines, TestFlight distribution, review management, and feedback triage — all without leaving Claude Code.
Invoke: /skill axiom-asc-mcp
Triggers:
Why app-store-connect-ref: ASC navigation for crash dashboards, TestFlight feedback, performance metrics, and data export workflows.
Invoke: /skill axiom-app-store-connect-ref
Triggers:
Why code-signing: Distribution signing errors are the #1 cause of upload failures. Diagnosing with CLI tools takes 5 minutes. code-signing-diag has 6 decision trees mapping ITMS errors to root causes.
Invoke: /skill axiom-code-signing-diag (troubleshooting) or /skill axiom-code-signing (setup)
digraph shipping {
"Shipping question?" [shape=diamond];
"Rejected?" [shape=diamond];
"Post-submission monitoring?" [shape=diamond];
"Automate via MCP?" [shape=diamond];
"Screenshot review?" [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)"];
"app-store-connect-ref" [shape=box, label="app-store-connect-ref\n(ASC dashboards/metrics)"];
"security-privacy-scanner" [shape=box, label="security-privacy-scanner\n(Agent)"];
"iap-auditor" [shape=box, label="iap-auditor\n(Agent)"];
"screenshot-validator" [shape=box, label="screenshot-validator\n(Agent)"];
"asc-mcp" [shape=box, label="asc-mcp\n(MCP tool workflows)"];
"code-signing" [shape=box, label="code-signing\n(distribution signing)"];
"Signing error?" [shape=diamond];
"Shipping question?" -> "Rejected?" [label="yes, about to submit or general"];
"Rejected?" -> "app-store-diag" [label="yes, app was rejected"];
"Rejected?" -> "Post-submission monitoring?" [label="no"];
"Post-submission monitoring?" -> "app-store-connect-ref" [label="yes, crash data/metrics/TestFlight"];
"Post-submission monitoring?" -> "Automate via MCP?" [label="no"];
"Automate via MCP?" -> "asc-mcp" [label="yes, programmatic ASC access"];
"Automate via MCP?" -> "Screenshot review?" [label="no"];
"Screenshot review?" -> "screenshot-validator" [label="yes, validate screenshots"];
"Screenshot review?" -> "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?" -> "Signing error?" [label="no"];
"Want code scan?" -> "security-privacy-scanner" [label="yes, scan for privacy/security"];
"Signing error?" -> "code-signing" [label="yes, ITMS/cert/profile error"];
"Signing error?" -> "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. |
| "I'll just eyeball the screenshots myself" | Human review misses dimension mismatches (even 1px off = rejection), subtle placeholder text, and debug indicators. A single missed issue costs 24-48 hours in resubmission. screenshot-validator catches it in 2 minutes. |
| "I'll just do it in the ASC web dashboard" | If asc-mcp is configured, MCP tools are faster for bulk operations — distributing builds, responding to reviews, creating versions. asc-mcp has the workflow. |
| "Upload failed with ITMS error, let me re-archive" | ITMS signing errors are configuration — wrong cert, expired profile, missing entitlement. Re-archiving with the same config produces the same result. code-signing-diag has the fix. |
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: "My app was rejected for Guideline 4.2 minimum functionality"
→ Invoke: /skill axiom-app-store-diag
User: "Rejected for being a web wrapper / duplicate app"
→ Invoke: /skill axiom-app-store-diag
User: "Rejection for user-generated content without moderation"
→ Invoke: /skill axiom-app-store-diag
User: "Kids category compliance 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: "Check my App Store screenshots in ~/Screenshots"
→ Invoke: screenshot-validator agent
User: "Are my screenshots the right dimensions?"
→ Invoke: screenshot-validator agent
User: "How do I find crash data in App Store Connect?"
→ Invoke: /skill axiom-app-store-connect-ref
User: "Where are my TestFlight crash reports in ASC?"
→ Invoke: /skill axiom-app-store-connect-ref
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
User: "Submit this build to App Store programmatically"
→ Invoke: /skill axiom-asc-mcp
User: "Set up asc-mcp for App Store Connect"
→ Invoke: /skill axiom-asc-mcp
User: "Distribute build 42 to my beta testers via MCP"
→ Invoke: /skill axiom-asc-mcp
User: "Respond to negative App Store reviews from Claude"
→ Invoke: /skill axiom-asc-mcp
User: "ITMS-90035 Invalid Signature when uploading"
→ Invoke: /skill axiom-code-signing-diag
User: "My provisioning profile expired and I can't upload"
→ Invoke: /skill axiom-code-signing-diag