app-store
App Store optimization and marketing skills for descriptions, screenshots, keywords, review responses, and comprehensive…
Generates a developer debug menu with feature flag toggles, environment switching, network log viewer, cache clearing, crash trigger, and diagnostic info export. Only included in DEBUG builds. Use when user wants a debug panel, dev tools menu, or shake-to-debug functionality.
Claude Code
$ npx -y skills add rshankras/claude-code-apple-skills --skill debug-menu --agent claude-code
Codex
$ npx skills add rshankras/claude-code-apple-skills --skill debug-menu -a codex -y
Cursor
$ npx skills add rshankras/claude-code-apple-skills --skill debug-menu -a cursor -y
Gemini CLI
$ npx skills add rshankras/claude-code-apple-skills --skill debug-menu -a gemini-cli -y
GitHub Copilot
$ npx skills add rshankras/claude-code-apple-skills --skill debug-menu -a github-copilot -y
OpenCode
$ npx skills add rshankras/claude-code-apple-skills --skill debug-menu -a opencode -y
Windsurf
$ npx skills add rshankras/claude-code-apple-skills --skill debug-menu -a windsurf -y
name: debug-menu description: Generates a developer debug menu with feature flag toggles, environment switching, network log viewer, cache clearing, crash trigger, and diagnostic info export. Only included in DEBUG builds. Use when user wants a debug panel, dev tools menu, or shake-to-debug functionality. allowed-tools: [Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion] last_verified: 2026-07-16 review_by: 2027-06-22 os_version: iOS 27 / macOS 27
Generate a comprehensive developer debug menu accessible via shake gesture or hidden tap. Includes feature flag toggles, environment switching, network log viewer, cache clearing, crash trigger, and diagnostic info export. All code is wrapped in `#if DEBUG` so it never ships to production.
Use this skill when the user:
Search for existing debug/dev menu code:
Glob: **/*Debug*Menu*.swift, **/*DevMenu*.swift, **/*DevTools*.swift, **/*DebugPanel*.swift Grep: "DebugMenu" or "DevMenu" or "motionEnded" or "shake" in *.swift
If existing debug menu found:
Search for existing feature flag setup:
Glob: **/*FeatureFlag*.swift, **/*Feature*Toggle*.swift Grep: "FeatureFlag" or "featureFlag" or "isFeatureEnabled"
If found, integrate debug menu toggles with existing feature flag system rather than creating a new one.
Ask user via AskUserQuestion:
1. **Access method?**
2. **Sections to include?** (multi-select)
3. **Include push notification testing?**
4. **Include export diagnostics?**
Read `templates.md` for production Swift code wrapped in `#if DEBUG`.
Generate these files (all wrapped in `#if DEBUG`): 1. `DebugMenuView.swift` -- Main NavigationStack with all sections 2. `DebugSection.swift` -- Enum defining available debug sections
Based on configuration: 3. `DebugEnvironmentSwitcher.swift` -- If environment switcher selected 4. `DebugNetworkLogger.swift` -- If network logs selected 5. `DiagnosticInfo.swift` -- If diagnostics or export selected
6. `DebugMenuTrigger.swift` -- ShakeDetector + hidden tap gesture + ViewModifier
7. `DebugActions.swift` -- Collection of debug utility actions
Check project structure:
Entire folder is `#if DEBUG` and should be excluded from release builds.
After generation, provide:
DebugMenu/ ├── DebugMenuView.swift # Main NavigationStack with all sections ├── DebugSection.swift # Enum of available sections ├── DebugEnvironmentSwitcher.swift # Environment switching (optional) ├── DebugNetworkLogger.swift # Network request logger (optional) ├── DiagnosticInfo.swift # Device and app diagnostics (optional) ├── DebugMenuTrigger.swift # Shake gesture + hidden tap trigger └── DebugActions.swift # Utility actions (reset, clear, crash)
**Add the debug trigger to your root view:**
#if DEBUG
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.debugMenuTrigger() // Adds shake + tap to open debug menu
}
}
}
#endif**Or add only to specific views:**
struct SettingsView: View {
var body: some View {
Form {
// ... your settings
}
#if DEBUG
.debugMenuTrigger(method: .hiddenTap)
#endif
}
}**Hook up the network logger to your API client:**
#if DEBUG
func performRequest(_ request: URLRequest) async throws -> (Data, URLResponse) {
let start = Date()
let (data, response) = try await session.data(for: request)
DebugNetworkLogger.shared.log(request: request, response: response, data: data, duration: Date().timeIntervalSince(start))
return (data, response)
}
#endif**Register your feature flags:**
#if DEBUG
extension DebugMenuView {
static let featureFlags: [FeatureFlag] = [
FeatureFlag(key: "new_onboarding", title: "New Onboarding Flow", defaultValue: false),
FeatureFlag(key: "dark_mode_v2", title: "Dark Mode V2", defaultValue: false),
FeatureFlag(key: "premium_paywall", title: "Premium Paywall", defaultValue: true),
]
}
#endif#if DEBUG
@Test
func debugMenuSectionsRender() {
let view = DebugMenuView()
// Verify all sections aA collection of Claude Code skills for iOS, macOS, watchOS, visionOS, and Apple platform development. These skills help you plan and build apps, maintain code quality, ensure HIG compliance, and guide you from idea to App Store.
App Store optimization and marketing skills for descriptions, screenshots, keywords, review responses, and comprehensive…
Privacy-preserving ad measurement with AdAttributionKit (SKAdNetwork's successor) — install and re-engagement attribution,…
Generate compelling App Store descriptions that convert browsers into users. Use when writing initial descriptions, improving…
Apple Search Ads campaign strategy for indie developers — paid acquisition, keyword bidding, budget planning, and ROAS…
Take a one-time in-app purchase from MISSING_METADATA to READY_TO_SUBMIT in App Store Connect — set its price schedule and…
Optimize app title, subtitle, and keywords for maximum App Store discoverability. Use when launching a new app, improving search…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.