deep-linking
Skill2 starsChanged 9 months agoMITView on GitHub
Deep linking with Universal Links (iOS) and App Links (Android). Platform setup, domain verification, GoRouter integration, path-based routing. Use when implementing deep links, URL handling, or app-to-web navigation.
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 3 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 40
Create apple-app-site-association file (see ios-guide.md)
- Very specific: line 41
Create assetlinks.json file (see android-guide.md)
- Distinctive: line 43
Verify HTTPS and correct MIME types
- Distinctive: line 47
Add Associated Domains capability in Xcode
- Very specific: line 48
Add domain to Runner.entitlements
- Very specific: line 53
Add intent filters to AndroidManifest.xml
- Distinctive: line 60
Add route parameter extraction
- Very specific: line 62
Test with adb and xcrun commands
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Deep Linking - Universal Links & App Links
Deep linking setup for iOS (Universal Links) and Android (App Links) with GoRouter integration.
When to Use This Skill
- Adding deep link support to a Flutter app
- Configuring Universal Links for iOS
- Configuring App Links for Android
- Handling custom URL schemes
- Integrating deep links with GoRouter
- User asks "add deep linking", "universal links", "app links", or "URL handling"
Questions to Ask
- Domain: What domain will host the deep links? (e.g.,
example.com) - Paths: Which paths should open the app? (e.g.,
/products/*,/users/*) - Custom scheme: Need a custom URL scheme fallback? (e.g.,
myapp://) - Environments: Multiple domains? (e.g., staging.example.com, example.com)
- Backend access: Can you host
.well-knownfiles on the server?
Reference Files
reference/router/deep_link_handler.dart- GoRouter deep link configtemplates/ios/Runner.entitlements- Associated Domainstemplates/android/android_manifest_deeplinks.xml- Intent filters
See: implementation-guide.md for complete setup.
Workflow
Phase 1: Domain Verification
- Create
apple-app-site-associationfile (see ios-guide.md) - Create
assetlinks.jsonfile (see android-guide.md) - Host files at
https://domain.com/.well-known/ - Verify HTTPS and correct MIME types
Phase 2: iOS Configuration
- Add Associated Domains capability in Xcode
- Add domain to
Runner.entitlements - Handle links in AppDelegate (if needed)
Phase 3: Android Configuration
- Add intent filters to
AndroidManifest.xml - Set
autoVerify="true"for App Links - Generate and add SHA-256 fingerprint to
assetlinks.json
Phase 4: GoRouter Integration
- Configure
GoRouterwith deep link paths - Add route parameter extraction
- Handle unknown deep links gracefully
- Test with
adbandxcruncommands
Core API
// GoRouter handles deep links automatically
GoRouter(routes: [
GoRoute(path: '/products/:id', builder: (context, state) =>
ProductScreen(productId: state.pathParameters['id']!)),
]);
// Manual: GoRouter.of(context).go(Uri.parse(deepLink).path);URL Types
| Type | iOS | Android | Format |
| Universal/App Links | Yes | Yes | https://domain.com/path |
| Custom Scheme | Yes | Yes | myapp://path |
| Firebase Dynamic Links | Deprecated | Deprecated | Use Universal/App Links |
Domain Verification Files
iOS: apple-app-site-association
Host at: https://domain.com/.well-known/apple-app-site-association
{
"applinks": {
"apps": [],
"details": [{
"appID": "TEAM_ID.com.example.app",
"paths": ["/products/*", "/users/*"]
}]
}
}Android: assetlinks.json
Host at: https://domain.com/.well-known/assetlinks.json
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.app",
"sha256_cert_fingerprints": ["SHA256_FINGERPRINT"]
}
}]Platform Requirements
iOS
- Associated Domains capability enabled
- HTTPS domain with valid certificate
apple-app-site-associationfile accessible (no redirects)- MIME type:
application/json
Android
- Intent filters with
autoVerify="true" - SHA-256 fingerprints (debug, release, Play Store)
assetlinks.jsonfile accessible- MIME type:
application/json
Testing Commands
xcrun simctl openurl booted "https://example.com/products/123" # iOS
adb shell am start -a android.intent.action.VIEW -d "https://example.com/products/123" com.example.app
adb shell pm get-app-links com.example.app # Verify Android
curl -I https://example.com/.well-known/apple-app-site-associationGuides
| File | Content |
| ios-guide.md | Universal Links, Associated Domains, AASA file |
| android-guide.md | App Links, Intent Filters, Digital Asset Links |
| implementation-guide.md | GoRouter integration, path handling |
| checklist.md | Verification checklist |
Common Issues
| Issue | Cause | Solution |
| iOS link opens Safari | AASA not found | Check .well-known path and MIME type |
| Android shows app chooser | autoVerify failed | Verify assetlinks.json and SHA-256 |
| Path not matched | Wrong pattern | Check path patterns in AASA/router |
| Works in dev, not prod | Wrong fingerprint | Add release/Play Store SHA-256 |
Checklist
- Domain supports HTTPS with valid certificate
apple-app-site-associationhosted at.well-known/assetlinks.jsonhosted at.well-known/- iOS: Associated Domains capability added in Xcode
- iOS: Domain added to
Runner.entitlements - Android: Intent filters added to
AndroidManifest.xml - Android: All SHA-256 fingerprints in
assetlinks.json - GoRouter configured with deep link paths
- Deep links tested on both platforms
- Unknown paths handled gracefully
Related Skills
/core- GoRouter setup (run first)/push-notifications- Deep links from notifications/release- iOS capabilities, Android signing/testing- Deep link integration tests
In this repository27 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- a11ySkill
- account-deletionSkill
- analyticsSkill
- authSkill
- ci-cdSkill
- coreSkill
- dataSkill
- designSkill
- domainSkill
- feature-initSkill
- flavorsSkill
- force-updateSkill
- i18nSkill
- in-app-purchasesSkill
- initSkill
- local-authSkill
- network-connectivitySkill
- offlineSkill
- phone-authSkill
- planSkill
- presentationSkill
- push-notificationsSkill
- releaseSkill
- skill-createSkill
- social-loginSkill
- testingSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

