feat: Add /deeplink-handler extension overlay and move it to security domain - #139
Open
MajorLift wants to merge 2 commits into
Open
feat: Add /deeplink-handler extension overlay and move it to security domain#139MajorLift wants to merge 2 commits into
/deeplink-handler extension overlay and move it to security domain#139MajorLift wants to merge 2 commits into
Conversation
The skill shipped a `repos/` directory with only `metamask-mobile.md`, so the overlay gate skipped it for `metamask-extension` entirely. Extension authors a deep link as a `Route` in `shared/lib/deep-links/routes/`, which the mobile `SUPPORTED_ACTIONS` handler pattern does not describe. The overlay draws its security model from ADR-0011 and ADR-0020, and the recurring defects from review on #38003, #40995 and #45504. It names the CODEOWNERS split so a feature team can tell which paths are theirs. Description rewritten from 36 chars, which could not match a request.
coding domain - deeplink-handler extension overlay
coding domain - deeplink-handler extension overlaycoding domain - /deeplink-handler extension overlay
MajorLift
marked this pull request as ready for review
August 31, 2026 14:36
coding domain - /deeplink-handler extension overlay/deeplink-handler extension overlay
/deeplink-handler extension overlay/deeplink-handler extension overlay and move it to security domain
MajorLift
added a commit
that referenced
this pull request
Aug 31, 2026
A deep link is an external entry point into the wallet, and the parts that decide whether a link is trusted — the interstitial, signature verification, param canonicalization — are owned by the extension security team rather than by the feature team adding a route. That is a security boundary, so the skill belongs beside the other two that guard one. Files are byte-identical to #139, relocated from `domains/coding/`. Both repo overlays come with it.
MajorLift
added a commit
that referenced
this pull request
Sep 1, 2026
#139 adds the extension overlay and is the PR for that skill. Copying it in here forked it rather than moving it: the same skill sat at `domains/coding/` on `main` and #139, and at `domains/security/` here. This PR is back to its own subject — the two dependency-and-capability skills and the knowledge file they cite.
The security model and the recurring review defects hold in both clients, so they belong in `skill.md` rather than in one client's section. The symbols that implement them do not: `TRUSTED_WEB_ORIGINS` and `shouldShowDeepLinkInterstitial` appear nowhere in `metamask-mobile`, so the split is by abstraction level, not by section. Neither deeplink ADR is accepted. `0011-deep-linking-into-wallet` is on `main`; `0020-shared-deeplink-registry` is an open draft whose own non-goals exclude implementing the package. The skill now says which is which instead of calling both authority, and cites them by path, since `decisions/core/` already holds two files numbered 0020. The extension section becomes a pointer to `docs/deeplink-route-authoring.md` in `metamask-extension`, where its audience reads. `handlerSearchParams` is dropped: a reverted field nobody outside the authoring session can resolve.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
deeplink-handler'srepos/holds onlymetamask-mobile.md. This adds themetamask-extensionoverlay, replaces the description, and argues for keeping the skill always-loaded.Motivation
The installer skips a skill whose
repos/lacks the target repo's overlay (tools/install:520-524), sodeeplink-handleris unreachable frommetamask-extension— and the mobile content would not transfer: mobile registers againstSUPPORTED_ACTIONS, extension builds aRouteinshared/lib/deep-links/routes/.Reachable is not findable: the shipped description,
Deeplink handler creation guidelines, carries no phrase a request would match. Always-loaded is the only ask that costs anything scarce — a share of the fixed description budget every skill competes for — and the skill applies whenever a deep link route is added or re-pointed.Showcase
--repo metamask-extensioninstalls 26 skills without the overlay, nodeeplink-handler; 27 with it. The generated body has six@MetaMask/extension-security-teamreferences and zeroSUPPORTED_ACTIONS— nothing came in from the mobile overlay.Sources: ADR-0011 (Deep Linking Into Wallet), ADR-0020 (Shared Deeplink Registry, open PR), defects from #38003 (settings deep link), #40995 (Gator Permissions deep link) and #45504 (privacy settings deeplink).
The overlay covers
handlerSearchParamsonly to warn against reintroducing it — absent frommaintoday; if it returns, that section needs revisiting.