Install
$ agentstack add skill-muvon-octomind-tap-programming-ios ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Mental model
A modern iOS app is SwiftUI views over @Observable models, with SwiftData (or a small repository layer) for persistence and App Intents for system-level integration. UIKit is the escape hatch for what SwiftUI can't yet express. Architectural mistakes show up as massive view bodies, scattered singletons, and tight coupling to UIApplication — design for testability by isolating side effects behind protocols.
Architecture
- Feature-first organization: each feature owns its views, models, intents, and tests in one folder
- Domain logic lives in framework-free Swift modules (a separate SPM target) — the UI imports the domain, not the other way around
- Side effects (network, persistence, system services) hide behind protocols injected via
@Environmentor initializer parameters - Avoid singletons except for genuinely process-wide resources (logger, telemetry); inject everything else
- Keep
AppandScenedefinitions thin — they wire dependencies and nothing more
SwiftUI patterns
@Observablemodel classes for view state;@Bindableto create bindings to their propertiesNavigationStackwith typedNavigationLink(value:)for type-safe routing;NavigationPathfor heterogeneous stacksNavigationSplitViewfor iPad/macOS layouts — collapses to stack on iPhone automatically.taskmodifier for async work tied to view lifetime — cancels on disappear.environment(...)to inject services down the tree; customEnvironmentKeyfor app-specific dependencies- View bodies should read like a layout description — push computation into the model
Data and persistence
- SwiftData with
@Modelfor new projects — schema is derived from the type, lightweight migrations are automatic @Queryin views for filtered, sorted, animated fetchesModelContainerconfigured at the app entry point; injected via.modelContainer(...)- CloudKit sync via SwiftData when cross-device persistence is needed
#Predicatemacro for type-safe queries;VersionedSchema+SchemaMigrationPlanfor non-trivial migrations- For non-SwiftData persistence, hide Core Data / files / keychain behind a repository protocol
System integration
- App Intents make actions discoverable by Shortcuts, Siri, Spotlight, and Apple Intelligence
AppEntityfor domain objects the system can reason about;AppShortcutsProviderfor surfaced shortcuts- Widgets via WidgetKit with
TimelineProvider; Live Activities via ActivityKit for lock-screen and Dynamic Island - StoreKit 2 (
Product.products(for:),Transaction.currentEntitlements) — no delegate callbacks, no receipt parsing PrivacyInfo.xcprivacydeclares all required-reason API usage — ship with it from day one
UIKit interop
- Wrap UIKit views with
UIViewRepresentable/UIViewControllerRepresentableonly when SwiftUI lacks an equivalent - Keep the bridge thin: a single representable per feature, not scattered across views
- For UIKit-first apps, embed SwiftUI screens via
UIHostingController— incremental migration works well
Concurrency
- Adopt Swift 6 strict concurrency — main-thread mistakes become compile errors
@MainActoron view models and anything touching UIKit/SwiftUI- Network and persistence on background actors or detached tasks; results cross back via
await - Cancel structured tasks (
.task) automatically; for unstructured work, holdTaskhandles and cancel explicitly
Testing
- Swift Testing (
@Test,#expect,@Suite) for unit and integration tests - Test the domain target without the app — fast, deterministic, no simulator
#Previewdoubles as a visual test for layout across states- XCUITest for end-to-end flows; keep them short and focused on critical user paths
- Mock system services by injecting the protocol you defined, not by stubbing Apple's classes
Distribution
- TestFlight for internal and external betas; phased rollouts on App Store releases
- Stay current with the Privacy Manifest required-reason API list — Apple expands it regularly
- Symbolicate crash reports via dSYMs uploaded with each build
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Muvon
- Source: Muvon/octomind-tap
- License: Apache-2.0
- Homepage: https://octomind.run/tap/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.