Agent Skillsn0an/VivaDicta › analyze-unrecognized-apps

analyze-unrecognized-apps

GitHub

分析Firebase/Google Analytics中的未识别应用Bundle ID,通过跨引用现有映射和调研URL Scheme/AASA,确定需添加的返回链接映射或标记为无方案主机。

.agents/skills/analyze-unrecognized-apps/SKILL.md n0an/VivaDicta

Trigger Scenarios

提供未识别应用的Bundle ID列表或截图 需要更新应用内URL scheme映射表

Install

npx skills add n0an/VivaDicta --skill analyze-unrecognized-apps -g -y
More Options

Non-standard path

npx skills add https://github.com/n0an/VivaDicta/tree/main/.agents/skills/analyze-unrecognized-apps -g -y

Use without installing

npx skills use n0an/VivaDicta@analyze-unrecognized-apps

指定 Agent (Claude Code)

npx skills add n0an/VivaDicta --skill analyze-unrecognized-apps -a claude-code -g -y

安装 repo 全部 skill

npx skills add n0an/VivaDicta --all -g -y

预览 repo 内 skill

npx skills add n0an/VivaDicta --list

SKILL.md

Frontmatter
{
    "name": "analyze-unrecognized-apps",
    "description": "Analyze unrecognized host app bundle IDs from Firebase\/Google Analytics and add URL scheme mappings",
    "disable-model-invocation": true
}

Analyze Unrecognized Host Apps

Last run: 2026-09-05 - added 29 return-URL mappings (Happy Coder, Kelivo, Simplenote, Drafts, Uber, Slack, Evernote, LINE, YouTube, eBay, Google Docs, Taobao, Arc Search, plus 5 AASA universal-link fallbacks for Amazon US/UK, ClassDojo, Mercari and Uber Eats) and 11 knownNoSchemeHosts entries. Three mappings (Alibaba enalibaba://, Beeper beeper://, DiDi diditaxi://) went in at explicitly lower confidence and sit under their own comment block. Two lookup techniques worth reusing: the iTunes lookup API (https://itunes.apple.com/lookup?bundleId=...) resolves a bundle ID to an app name and seller URL in one call, and it caught a misidentification - com.codality.NotationalFlow is Simplenote, not the note app the name suggests; and an AASA is not always at /.well-known/ (Hevy serves its own at https://hevy.com/apple-app-site-association). Also note an AASA entry with an empty paths array (DeepSeek) matches nothing and is not a usable fallback. This sample still predates the iOS 26.4 host-resolution fix, so it under-reports.

You are given the following context: $ARGUMENTS

Task

Analyze unrecognized host app bundle IDs from Firebase/Google Analytics and determine which ones need URL scheme mappings added to the app.

Instructions

  1. Read the current mappings from VivaDicta/VivaDictaApp.swift — find the knownURLs dictionary inside returnURL(forHostId:). The knownNoSchemeHosts set lives just above it, in attemptReturnToHost(hostId:).

  2. Get the analytics data — the user will provide a screenshot or list of bundle IDs from the Google Analytics "Unrecognized Host Apps" exploration (see internal/firebase-analytics-events.md for how to access it)

  3. Cross-reference each bundle ID against knownURLs and knownNoSchemeHosts, and categorize into:

    Already mapped — bundle ID exists in knownURLs (these show up in analytics from before the mapping was added)

    Variant of a mapped app — same app under a different bundle ID: a team-ID suffix (com.spotify.client.L32G8C83V9), a regional build (com.amazon.AmazonDE), or an app extension (net.whatsapp.WhatsApp.ShareExtension). Aliasing a suffixed build to the same URL is safe. An extension is a judgement call — returning to the parent app is not the surface the user was in.

    Not actionable — system services that can't be returned to:

    • (not set) — pre-custom-dimension-registration data
    • com.apple.SafariViewService — SFSafariViewController embedded in other apps
    • com.apple.springboard — iOS home screen
    • Other Apple system services

    Need to add — real third-party apps not yet in knownURLs

  4. Research a way back for the "need to add" apps. Search for:

    • "[app name] iOS URL scheme"
    • "[app name] deep link"
    • "[bundle id] URL scheme"
    • Known URL scheme databases and GitHub repos

    Two sources beat any blog list, and are worth the extra step for high-volume apps:

    • The app's own registration — its open-source Info.plist or build file (CFBundleURLSchemes), or, for Apple apps, the binary in a simulator runtime under /Library/Developer/CoreSimulator/.../RuntimeRoot/Applications/.
    • The app's AASA filehttps://<domain>/.well-known/apple-app-site-association. If it lists the bundle ID, the matching https:// URL is a valid fallback for an app that registers no custom scheme. This works only on this code path, because the lookup runs solely for the app the keyboard was just typing into, so it is installed by definition.

    Watch for schemes shared between apps. Swiftgram registers tg:// and telegram:// alongside official Telegram; iOS picks between claimants unpredictably, so map only a scheme the app owns outright (sg://).

  5. Output a summary table with:

    • Bundle ID
    • Event count
    • Category (already mapped / variant / not actionable / need to add)
    • Return URL (if found) and confidence level
  6. After user confirms which entries to add, update VivaDicta/VivaDictaApp.swift:

    • Apps with a way back → the knownURLs dictionary in returnURL(forHostId:)
    • Apps with none → the knownNoSchemeHosts set, so they stop being reported as unrecognized

    There is no plist step, and adding one is a regression. LSApplicationQueriesSchemes was deleted on 2026-08-29 along with the canOpenURL gate it existed to permit. Apple caps that array at 50 entries, and past the cap canOpenURL returns false whether or not the app is installed — which silently killed the newest mappings. UIApplication.open needs no declaration and reports failure through its own result, so the table can now grow without limit. Do not reintroduce either.

  7. Update the "Last run" line at the top of this file with the date and what changed.

- Do NOT add URL schemes you are not confident about without user confirmation - Low-confidence schemes should be flagged — the most reliable verification is the app's own `CFBundleURLSchemes`, from its source, its shipped binary, or an installed copy - Some bundle IDs (Apple system services, embedded browser views) are not actionable and should be called out as such - Treat the event counts as a floor, not a census. `.unrecognizedHostApp` only fires when the keyboard resolves a host bundle ID, so any period where resolution was broken under-reports every app at once

Version History

  • fbbdfe0 Current 2026-09-09 09:12

    新增29个应用返回URL映射及11个无方案主机记录;更新了AASA查找技巧和Bundle ID识别经验。

  • 888131c 2026-09-03 10:21

    更新代码读取位置至 VivaDictaApp.swift,移除过时的 canOpenURL 检查及 LSApplicationQueriesSchemes 限制,新增对 App Info.plist 和 AASA 文件的深度研究方法。

  • c5601d4 2026-07-25 08:14

Same Skill Collection

.agents/skills/app-container-group/SKILL.md
.agents/skills/app-container/SKILL.md
.agents/skills/asc-aso-audit/SKILL.md
.agents/skills/asc-aso-rankings/SKILL.md
.agents/skills/asc-localize-metadata/SKILL.md
.agents/skills/asc-metadata-sync/SKILL.md
.agents/skills/asc-release-flow/SKILL.md
.agents/skills/asc-whats-new-writer/SKILL.md
.agents/skills/axe-simulator-control/SKILL.md
.agents/skills/coverage-report/SKILL.md
.agents/skills/diagram/SKILL.md
.agents/skills/ios-log-capture/SKILL.md
.agents/skills/ios-simulator-skill/SKILL.md
.agents/skills/krankie-audit/SKILL.md
.agents/skills/krankie-rankings/SKILL.md
.agents/skills/loc-report/SKILL.md
.agents/skills/logs-start/SKILL.md
.agents/skills/logs-stop/SKILL.md
.agents/skills/pr/SKILL.md
.agents/skills/prcdx/SKILL.md
.agents/skills/release-prepare/SKILL.md
.agents/skills/screenshot/SKILL.md
.agents/skills/simulator-screenshot-time/SKILL.md
.agents/skills/spm-build-analysis/SKILL.md
.agents/skills/start-logs-device-structured/SKILL.md
.agents/skills/start-logs-device/SKILL.md
.agents/skills/start-logs/SKILL.md
.agents/skills/stop-logs-device-structured/SKILL.md
.agents/skills/stop-logs-device/SKILL.md
.agents/skills/stop-logs/SKILL.md
.agents/skills/swift-concurrency-pro/SKILL.md
.agents/skills/swift-testing-pro/SKILL.md
.agents/skills/swiftdata-pro/SKILL.md
.agents/skills/swiftui-liquid-glass/SKILL.md
.agents/skills/swiftui-performance-audit/SKILL.md
.agents/skills/swiftui-pro/SKILL.md
.agents/skills/xcode-build-benchmark/SKILL.md
.agents/skills/xcode-build-fixer/SKILL.md
.agents/skills/xcode-build-orchestrator/SKILL.md
.agents/skills/xcode-compilation-analyzer/SKILL.md
.agents/skills/xcode-project-analyzer/SKILL.md
.agents/skills/xcodebuild-testing/SKILL.md
.agents/skills/commit-push/SKILL.md

Metadata

Files
0
Version
fbbdfe0
Hash
3c19f9e6
Indexed
2026-07-25 08:14

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-17 05:33
浙ICP备14020137号-1