linkrunner-troubleshoot-deep-linkslisted
Install: claude install-skill linkrunner-labs/skills
# Linkrunner - deep link troubleshooter
The symptom is almost always: **an HTTPS link opens the browser instead of the
app.** That means domain verification is failing somewhere between the hosted
file, Apple/Google's cache, the app's native config, and the device. Diagnose in
order - do not guess.
## 0. Gather the facts first
Ask for / detect these before running anything:
- The **domain** the links use (e.g. `app.example.com`).
- **Android package name** (from `applicationId` in `android/app/build.gradle` or
the manifest).
- **iOS appID** = `TEAM_ID.BUNDLE_ID` (Team ID from Apple Developer → Membership;
bundle id from Xcode).
- Which **build** is on the device (debug vs release - they are signed with
different keystores and have different fingerprints).
- Whether the user is testing by **typing the URL into Safari** - that never
opens the app on iOS; it must be tapped from another app (e.g. Notes). Rule
this out first.
## 1. Run the diagnostic
From the app project root:
```bash
bash scripts/diagnose-deep-links.sh <domain> <android_package> <ios_team_id.bundle_id>
```
It checks the hosted files, Apple's CDN, the Google Digital Asset Links API, the
local native wiring, and - if a device is connected over `adb` - the live
Android verification state. Read its output, then use the references below to fix
whatever it flags.
## 2. Interpret and fix
| What you see | Go to |
| --- | --- |
| assetlinks 404, fingerprint mismatch, `1024`/`legacy_failure`, works on d