Skip to content

feat: Add /deeplink-handler extension overlay and move it to security domain - #139

Open
MajorLift wants to merge 2 commits into
mainfrom
jongsun/add/deeplink-authoring-extension
Open

feat: Add /deeplink-handler extension overlay and move it to security domain#139
MajorLift wants to merge 2 commits into
mainfrom
jongsun/add/deeplink-authoring-extension

Conversation

@MajorLift

@MajorLift MajorLift commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Overview

deeplink-handler's repos/ holds only metamask-mobile.md. This adds the metamask-extension overlay, 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), so deeplink-handler is unreachable from metamask-extension — and the mobile content would not transfer: mobile registers against SUPPORTED_ACTIONS, extension builds a Route in shared/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-extension installs 26 skills without the overlay, no deeplink-handler; 27 with it. The generated body has six @MetaMask/extension-security-team references and zero SUPPORTED_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 handlerSearchParams only to warn against reintroducing it — absent from main today; if it returns, that section needs revisiting.

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.
@MajorLift MajorLift changed the title feat(coding): add extension overlay to deeplink-handler feat: Extends coding domain - deeplink-handler extension overlay Aug 31, 2026
@MajorLift MajorLift changed the title feat: Extends coding domain - deeplink-handler extension overlay feat: Extends coding domain - /deeplink-handler extension overlay Aug 31, 2026
@MajorLift
MajorLift marked this pull request as ready for review August 31, 2026 14:36
@MajorLift
MajorLift requested a review from davidmurdoch August 31, 2026 14:37
@MajorLift MajorLift changed the title feat: Extends coding domain - /deeplink-handler extension overlay feat: Add /deeplink-handler extension overlay Aug 31, 2026
@MajorLift MajorLift changed the title feat: Add /deeplink-handler extension overlay feat: Add /deeplink-handler extension overlay and move it to security domain Aug 31, 2026
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant