Install
$ agentstack add skill-rshankras-claude-code-apple-skills-deep-linking ✓ 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 Used
- ✓ 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
Deep Linking Generator
Generate deep linking infrastructure with URL schemes, Universal Links, and App Intents for Siri/Shortcuts.
When This Skill Activates
- User wants to handle custom URL schemes (myapp://)
- User mentions Universal Links or Associated Domains
- User wants Siri Shortcuts or App Intents
- User needs to navigate to specific content from external sources
Pre-Generation Checks
Before generating, verify:
- Existing Deep Link Handling
``bash # Check for existing URL handling grep -r "onOpenURL\|open.*url\|handleOpen" --include="*.swift" | head -5 ``
- URL Scheme in Info.plist
``bash # Check for CFBundleURLTypes find . -name "Info.plist" -exec grep -l "CFBundleURLSchemes" {} \; ``
- Associated Domains Entitlement
``bash find . -name "*.entitlements" -exec grep -l "associated-domains" {} \; ``
Configuration Questions
1. URL Scheme
- What custom URL scheme? (e.g.,
myapp) - This enables
myapp://path/to/contentlinks
2. Universal Links
- Yes - Handle HTTPS links (requires AASA file on server)
- No - Custom URL scheme only
3. App Intents / Siri Shortcuts
- Yes - Enable voice commands and Shortcuts app
- No - URL-based deep linking only
4. Link Types
- Profile:
/users/{id} - Content:
/items/{id} - Actions:
/actions/share,/actions/create - Custom routes based on app needs
Generated Files
Core Infrastructure
Sources/DeepLinking/
├── DeepLinkRouter.swift # Central router
├── DeepLink.swift # Route definitions
└── UniversalLinkHandler.swift # Universal link processing
App Intents (Optional)
Sources/AppIntents/
├── OpenContentIntent.swift # Open specific content
├── AppShortcuts.swift # Shortcuts provider
└── ContentEntity.swift # Entities for Spotlight/Siri
Server Files (Universal Links)
.well-known/
└── apple-app-site-association # AASA file template
Key Features
Route Definitions
enum DeepLink: Equatable {
case home
case profile(userId: String)
case item(itemId: String)
case settings
case action(ActionType)
enum ActionType {
case share(itemId: String)
case create
}
}
URL Parsing
extension DeepLink {
init?(url: URL) {
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: true) else {
return nil
}
let pathComponents = components.path.split(separator: "/").map(String.init)
switch pathComponents {
case ["users", let userId]:
self = .profile(userId: userId)
case ["items", let itemId]:
self = .item(itemId: itemId)
case ["settings"]:
self = .settings
default:
self = .home
}
}
}
SwiftUI Integration
@main
struct MyApp: App {
@State private var router = DeepLinkRouter()
var body: some Scene {
WindowGroup {
ContentView()
.environment(router)
.onOpenURL { url in
router.handle(url)
}
}
}
}
App Intents Integration
OpenIntent for Navigation
struct OpenItemIntent: OpenIntent {
static let title: LocalizedStringResource = "Open Item"
@Parameter(title: "Item")
var target: ItemEntity
func perform() async throws -> some IntentResult {
await router.navigate(to: .item(itemId: target.id))
return .result()
}
}
App Shortcuts
struct AppShortcuts: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] {
AppShortcut(
intent: OpenItemIntent(),
phrases: [
"Open \(\.$target) in \(.applicationName)",
"Show \(\.$target)"
],
shortTitle: "Open Item",
systemImageName: "doc"
)
}
}
Required Capabilities
URL Scheme (Info.plist)
CFBundleURLTypes
CFBundleURLSchemes
myapp
CFBundleURLName
com.yourcompany.myapp
Universal Links (Entitlements)
com.apple.developer.associated-domains
applinks:yourapp.com
applinks:www.yourapp.com
Server Configuration (AASA)
Host at https://yourapp.com/.well-known/apple-app-site-association:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAMID.com.yourcompany.yourapp",
"paths": [
"/items/*",
"/users/*",
"/share/*"
]
}
]
}
}
Integration Steps
1. Basic URL Handling
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.onOpenURL { url in
handleDeepLink(url)
}
}
}
}
2. Universal Links (UIKit)
// In SceneDelegate
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let url = userActivity.webpageURL else {
return
}
handleUniversalLink(url)
}
3. App Intents Setup
- Create entities for Spotlight indexing
- Implement OpenIntent for each content type
- Define AppShortcuts for Siri phrases
- Index entities with CSSearchableIndex
Testing
URL Schemes
# Simulator
xcrun simctl openurl booted "myapp://items/123"
# Device
# Open Safari and navigate to myapp://items/123
Universal Links
# Test AASA file
curl -I "https://yourapp.com/.well-known/apple-app-site-association"
# Should return Content-Type: application/json
# Validate with Apple
# Use Apple's tool or Branch.io validator
App Intents
- Build and run on device
- Open Shortcuts app
- Your app's shortcuts should appear
- Test with Siri: "Hey Siri, [your phrase]"
References
- Supporting Universal Links
- App Intents Framework
- Defining Custom URL Schemes
- Making App Entities Available in Spotlight
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: rshankras
- Source: rshankras/claude-code-apple-skills
- License: MIT
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.