Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By j-morgan6
Enforce best practices and prevent common mistakes when adding a native iOS client to an existing web application. SwiftUI, iOS 17+, XcodeGen, App Store pipeline.
npx claudepluginhub j-morgan6/ios-from-web-guide --plugin ios-from-web-guideRead-only auditor for iOS project layout. Verifies App/, Models/, Services/, ViewModels/, Views/, Extensions/, Assets.xcassets/ structure; checks project.yml for Swift 6 + iOS 17+ + DEVELOPMENT_TEAM; flags misplaced files.
Read-only SwiftUI code reviewer. Dispatch after writing or editing a SwiftUI view file to catch common pitfalls against the ios-from-web-guide anti-patterns list.
MANDATORY for any AsyncImage rendering a URL from a JSON response. Invoke before writing AsyncImage(url:) anywhere in the View layer.
MANDATORY for model structs used in SwiftUI views, especially with NavigationLink(value:) or @Observable arrays. Invoke before writing custom Equatable or Hashable conformances on model types.
MANDATORY for any view combining ScrollView, VStack, AsyncImage, or a custom Layout. Invoke before writing a ScrollView-based screen.
MANDATORY for any screen with navigation. Invoke before writing a NavigationStack, NavigationLink, or navigationDestination.
MANDATORY for creating any ViewModel. Invoke before writing any file under ViewModels/ or any class whose name ends in ViewModel.
Executes bash commands
Hook triggers when Bash tool is used
Modifies files
Hook triggers on file write and edit operations
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Memory compression system for Claude Code - persist context across sessions
AI image generation Creative Director powered by Google Gemini Nano Banana models. Claude interprets intent, selects domain expertise, constructs optimized prompts, and orchestrates Gemini for best results.
Essential Elixir and Phoenix LiveView development guide with enforced skills, hooks, and patterns for idiomatic code
Enforce iOS/SwiftUI best practices when adding a native iOS client to an existing web app.
12 skills · 13 hooks · 2 agents · 7 templates · 4 scripts
A Claude Code plugin. Targets SwiftUI, iOS 17+, XcodeGen, and the App Store release pipeline. Pairs enforced skills with PreToolUse/PostToolUse/SessionStart/SubagentStart hooks and opinionated templates so common mistakes are caught before they ship.
Five concrete scars from shipping a real iOS client on top of a web backend:
.buttonStyle(.plain) inside a NavigationLink silently eats the tap. Hook H-W-3 blocks this; skill swiftui-navigation-foundations teaches it.==. A custom id-only == on a model struct makes SwiftUI think nothing changed. Hook H-W-8 warns; skill swiftui-equatable-hashable-for-diffing explains.swiftui-layout-pitfalls covers containerRelativeFrame and sibling issues.URL(string:) with a relative path returns nil. Hook H-W-4 warns; skill swiftui-async-image-with-backend-paths + template String+BackendURL.swift give the fix.validate_pre_archive.sh catches it before Archive; strip-alpha-from-icon.sh fixes it.Plus a handful of "one-hour-to-recover" pitfalls: UserDefaults-for-tokens (blocked), @Published when iOS 17 wants @Observable, DispatchQueue.main.async inside @MainActor, print() shipping to production, missing privacy strings, non-incrementing build number.
Install via Claude Code's plugin system:
/plugin marketplace add j-morgan6/iOS-from-web-guide
/plugin install ios-from-web-guide@ios-from-web-guide
Restart Claude Code. Skills, agents, and hooks load automatically.
Drop CLAUDE.md.template into your iOS project root (it tells Claude which skills to invoke when):
cp ~/.claude/plugins/cache/ios-from-web-guide/ios-from-web-guide/*/CLAUDE.md.template ./CLAUDE.md
/plugin uninstall ios-from-web-guide@ios-from-web-guide
MIT. See LICENSE.