Agent skill

Deep Linking

by rshankras in rshankras/claude-code-apple-skills

Generate deep linking infrastructure with URL schemes, Universal Links, and App Intents for Siri/Shortcuts.

MITAuto-check: notesMobile

Install Deep Linking

skills CLI
$ npx skills add rshankras/claude-code-apple-skills --skill deep-linking -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rshankras/claude-code-apple-skills deep-linking --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rshankras/claude-code-apple-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/generators/deep-linking .claude/skills/deep-linking && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
deep-linking
GitHub stars
785
Token cost
~1.8k tokens
SKILL.md length
264 words
Files
6
Skills in repo
41
Repo updated
First seen
Licence
MIT

At a glance

Generate deep linking infrastructure with URL schemes, Universal Links, and App Intents for Siri/Shortcuts.

  • Works in 7 steps: URL Scheme → Universal Links → App Intents / Siri Shortcuts → …
  • Handling custom URL schemes
  • SKILL.md covers When This Skill Activates, Pre-Generation Checks, Configuration Questions and Generated Files, plus 5 more sections
  • Runs Swift scripts from its folder; calls xcrun and curl

What it does

Deep Linking is an agent skill from rshankras/claude-code-apple-skills. Generate deep linking infrastructure with URL schemes, Universal Links, and App Intents for Siri/Shortcuts. Use when handling custom URL schemes, Universal Links/Associated Domains, or routing to specific content from external sources.

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files (for example `deep-linking-patterns.md`).

It sits in Mobile, covering iOS development. The repository describes itself as: Claude Code skills for Apple platform development (iOS, macOS, iPadOS) — product validation, code generation, App Store optimization, and more. The licence is MIT.

When your agent uses it

  • Handling custom URL schemes
  • Universal Links/Associated Domains
  • Routing to specific content from external sources

Example prompts

  • “/deep-linking”

Requirements

  • Pre-approved tools (allowed-tools): Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. URL Scheme
  2. Universal Links
  3. App Intents / Siri Shortcuts
  4. Link Types
  5. Basic URL Handling
  6. Universal Links (UIKit)
  7. App Intents Setup

What it can do on your machine

Read from SKILL.md and the folder at commit 9ffb831. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Glob
    • Grep
    • Bash
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Swift), which the agent can run.

    Shell commands in SKILL.md call:

    • xcrun
    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • developer.apple.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Deep Linking loads about 1.8k tokens when it runs. Until then it costs about 62 tokens; SKILL.md has 264 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~62
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from rshankras/claude-code-apple-skills at commit 9ffb831, republished under its MIT licence (© rshankras). 264 words, ~1,763 tokens.

Download SKILL.mdSave it as .claude/skills/deep-linking/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
deep-linking
description
Generate deep linking infrastructure with URL schemes, Universal Links, and App Intents for Siri/Shortcuts. Use when handling custom URL schemes, Universal Links/Associated Domains, or routing to specific content from external sources.
allowed-tools
Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion
last_verified
2026-07-16
review_by
2027-06-22

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:

  1. Existing Deep Link Handling

    bash
    # Check for existing URL handling
    grep -r "onOpenURL\|open.*url\|handleOpen" --include="*.swift" | head -5
  2. URL Scheme in Info.plist

    bash
    # Check for CFBundleURLTypes
    find . -name "Info.plist" -exec grep -l "CFBundleURLSchemes" {} \;
  3. 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/content 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
  • 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
.well-known/
└── apple-app-site-association  # AASA file template

Key Features

Route Definitions
swift
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
swift
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
swift
@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
swift
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
swift
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)
xml
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myapp</string>
        </array>
        <key>CFBundleURLName</key>
        <string>com.yourcompany.myapp</string>
    </dict>
</array>
xml
<key>com.apple.developer.associated-domains</key>
<array>
    <string>applinks:yourapp.com</string>
    <string>applinks:www.yourapp.com</string>
</array>
Server Configuration (AASA)

Host at https://yourapp.com/.well-known/apple-app-site-association:

json
{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAMID.com.yourcompany.yourapp",
        "paths": [
          "/items/*",
          "/users/*",
          "/share/*"
        ]
      }
    ]
  }
}

Integration Steps

1. Basic URL Handling
swift
@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onOpenURL { url in
                    handleDeepLink(url)
                }
        }
    }
}
swift
// 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
  1. Create entities for Spotlight indexing
  2. Implement OpenIntent for each content type
  3. Define AppShortcuts for Siri phrases
  4. Index entities with CSSearchableIndex

Testing

URL Schemes
bash
# Simulator
xcrun simctl openurl booted "myapp://items/123"

# Device
# Open Safari and navigate to myapp://items/123
bash
# 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
  1. Build and run on device
  2. Open Shortcuts app
  3. Your app's shortcuts should appear
  4. Test with Siri: "Hey Siri, [your phrase]"

References

© rshankras, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files in skills/generators/deep-linking of rshankras/claude-code-apple-skills.

  • SKILL.md
  • deep-linking-patterns.md
  • templates/AppShortcuts.swift
  • templates/DeepLink.swift
  • templates/DeepLinkRouter.swift
  • templates/apple-app-site-association

Open the folder on GitHubat commit 9ffb831

Compare with similar skills

Deep Linking next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Deep Linking compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Deep Linking this skillrshankras/claude-code-apple-skills785—~1.8kAutomated safety check: NotesMIT
Swiftui Protwostraws/SwiftUI-Agent-Skill5.2k2 repos~1.5kAutomated safety check: PassMIT
Swiftui UI PatternsAFK-surf/OpenBridge4304 repos~887Automated safety check: PassMIT
Swiftui Performance Auditharperreed/dotfiles3348 repos~1.4kAutomated safety check: PassNone
Swift Testing ExpertAvdLee/Swift-Testing-Agent-Skill4701 repos~1.2kAutomated safety check: PassMIT
Hig Project Contextraintree-technology/hig-doctor1435 repos~1.2kAutomated safety check: PassMIT

Similar skills

  • Swiftui Pro

    twostraws/SwiftUI-Agent-Skill

    Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance.

    5.2k GitHub starsUsed in 2 repos~1.5k tokens
    MobileAuto-check passed
  • Swiftui UI Patterns

    AFK-surf/OpenBridge

    Best practices and example-driven guidance for building SwiftUI views and components.

    430 GitHub starsUsed in 4 repos~887 tokens
    MobileAuto-check passed
  • Swiftui Performance Audit

    harperreed/dotfiles

    Audit and improve SwiftUI runtime performance from code review and architecture.

    334 GitHub starsUsed in 8 repos~1.4k tokens
    MobileAuto-check passed
  • Swift Testing Expert

    AvdLee/Swift-Testing-Agent-Skill

    Expert guidance for Swift Testing: test structure, expect/require macros, traits and tags, parameterized tests, test plans, parallel execution, async waiting patterns, and XCTest migration.

    470 GitHub starsUsed in 1 repo~1.2k tokens
    MobileAuto-check passed
  • Hig Project Context

    raintree-technology/hig-doctor

    Create or update a shared Apple design context document that other HIG skills use to tailor guidance.

    143 GitHub starsUsed in 5 repos~1.2k tokens
    MobileAuto-check passed
  • Swift Testing Pro

    twostraws/Swift-Testing-Agent-Skill

    Writes, reviews, and improves Swift Testing code using modern APIs and best practices.

    453 GitHub stars~1.1k tokensUpdated 4 mo ago
    MobileAuto-check passed

More from rshankras/claude-code-apple-skills

All 41 skills in this repo
  • Accessibility Generator

    rshankras/claude-code-apple-skills

    Generate accessibility infrastructure for VoiceOver, Dynamic Type, and accessibility features.

    785 GitHub stars~1.4k tokensUpdated 2 mo ago
    Auto-check: notes
  • Animation Patterns

    rshankras/claude-code-apple-skills

    SwiftUI animation patterns including springs, transitions, PhaseAnimator, KeyframeAnimator, SF Symbol effects, scroll-driven effects, mesh gradients, text renderers, and shader effects.

    785 GitHub stars~2.1k tokensUpdated 2 mo ago
    Auto-check passed
  • App Description Writer

    rshankras/claude-code-apple-skills

    Generate compelling App Store descriptions that convert browsers into users.

    785 GitHub stars~1.3k tokensUpdated 2 mo ago
    Auto-check passed
  • App Icon Generator

    rshankras/claude-code-apple-skills

    Generates an app icon for macOS or iOS — a fast CoreGraphics placeholder and/or flat layered source art to finish in Icon Composer (the Liquid Glass / iOS 26+ standard).

    785 GitHub stars~5.1k tokensUpdated 2 mo ago
    Auto-check: notes
  • App Namer

    rshankras/claude-code-apple-skills

    Turn an app idea into validated, App-Store-ready name candidates.

    785 GitHub stars~3.4k tokensUpdated 2 mo ago
    Auto-check passed
  • Bundles And Licensing

    rshankras/claude-code-apple-skills

    Revenue beyond the single-app price tag — own-app bundles, Family Sharing as a conversion lever, cross-developer bundles & suites, and institutional licensing via Group Purchases / Apple School &…

    785 GitHub stars~1.8k tokensUpdated 2 mo ago
    Auto-check passed

Categories

Questions about Deep Linking

What does Deep Linking do?

Generate deep linking infrastructure with URL schemes, Universal Links, and App Intents for Siri/Shortcuts. Deep Linking is an agent skill from rshankras/claude-code-apple-skills. Generate deep linking infrastructure with URL schemes, Universal Links, and App Intents for Siri/Shortcuts.

When should I use Deep Linking?

Deep Linking fits situations like: handling custom URL schemes; universal Links/Associated Domains; routing to specific content from external sources.

How do I install Deep Linking in Claude Code?

Run `npx skills add rshankras/claude-code-apple-skills --skill deep-linking -a claude-code`. Or copy the skill folder (skills/generators/deep-linking in rshankras/claude-code-apple-skills) into .claude/skills/deep-linking in your project. Claude Code loads it when a task matches its description.

How do I install Deep Linking in Codex?

Run `npx skills add rshankras/claude-code-apple-skills --skill deep-linking -a codex`. Or copy the skill folder (skills/generators/deep-linking in rshankras/claude-code-apple-skills) into .agents/skills/deep-linking in your project. Codex loads it when a task matches its description.

Can I use Deep Linking in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rshankras/claude-code-apple-skills --skill deep-linking -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deep-linking, .gemini/skills/deep-linking, .github/skills/deep-linking and .opencode/skills/deep-linking in your project.

What does Deep Linking need to run?

Going by SKILL.md and its folder, Deep Linking needs Swift for the scripts in its folder and the command-line tools its instructions call (xcrun and curl). Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion.

Does Deep Linking access the network?

SKILL.md names 1 domain. As links in the text: developer.apple.com. This is read from the text; nothing was executed.

Is Deep Linking safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Deep Linking use?

Deep Linking is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Deep Linking use?

About 1.8k tokens (SKILL.md is roughly 7.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Deep Linking?

Skills that share tags, products or a category with Deep Linking: Swiftui Pro (twostraws/SwiftUI-Agent-Skill, 5.2k stars), Swiftui UI Patterns (AFK-surf/OpenBridge, 430 stars), Swiftui Performance Audit (harperreed/dotfiles, 334 stars) and Swift Testing Expert (AvdLee/Swift-Testing-Agent-Skill, 470 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Deep Linking?

rshankras (a GitHub user) maintains it in rshankras/claude-code-apple-skills, which has 785 GitHub stars. The repository holds 41 skills in this directory. The repository was last updated on July 24, 2026.

Source: rshankras/claude-code-apple-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.