Skip to content

chore: centralize agent skills via public MetaMask/skills (+ private Consensys overlay)#42488

Merged
abretonc7s merged 36 commits into
mainfrom
feat/centralize-agent-skills
May 21, 2026
Merged

chore: centralize agent skills via public MetaMask/skills (+ private Consensys overlay)#42488
abretonc7s merged 36 commits into
mainfrom
feat/centralize-agent-skills

Conversation

@abretonc7s

@abretonc7s abretonc7s commented May 7, 2026

Copy link
Copy Markdown
Contributor

Description

Per ADR #57. Removes committed agent skills/rules; switches install to the new public MetaMask/skills repo, with the private Consensys/skills repo available as an optional overlay for internal-only material.

Why public

  • Cloud agents (Cursor cloud, Codex cloud, Claude.ai web) can't git clone a private repo or set engineer-managed env vars. The public repo solves this with a one-liner curl bootstrap (no SSH, no auth).
  • New engineers don't need Consensys SSO to start using skills — the public set installs cleanly on its own.
  • Out-of-the-box auto-sync via postinstall.

Engineer experience (zero-config)

yarn install   # postinstall clones MetaMask/skills into .skills-cache/ and installs
yarn skills    # auto-detects the cache, no env var or shell rc edit needed

Override only if you keep a separate clone:

export METAMASK_SKILLS_DIR=~/dev/metamask/skills
export CONSENSYS_SKILLS_DIR=~/dev/Consensys/skills   # optional private overlay

Changes

  • development/skills-sync.mts — multi-source aware wrapper (was bash, ported to node .mts to match lint-changed.mts / lint-baseline.mts conventions and avoid WSL/CRLF issues at the wrapper layer). Resolution order: METAMASK_SKILLS_DIRCONSENSYS_SKILLS_DIR → auto-fallback to .skills-cache/metamask-skills. When the cache is used, injects METAMASK_SKILLS_DIR=<cache> so the bash sync underneath sees the source.
  • development/skills-postinstall.mts (new) — auto-clones MetaMask/skills into .skills-cache/metamask-skills and runs the installer on every yarn install. Layered with CONSENSYS_SKILLS_DIR when set. Best-effort: skipped on CI, on SKILLS_SKIP_POSTINSTALL=1, or when offline. Opt back in on CI with SKILLS_FORCE_POSTINSTALL=1.
  • .gitignore — adds .skills-cache/, updates comments to reference public canonical.
  • package.jsonpostinstall chain extended with node development/skills-postinstall.mts; skills script uses node development/skills-sync.mts.
  • .skills.local.example — documents new zero-config default + optional env-var override.

Plus the original migration changes already in this branch: 12 .cursor/rules/, 3 .claude/skills/, 2 .cursor/skills/, 2 .agents/skills/, 1 .claude/commands/ deleted (now covered by the mms-* inject set). .skills.local per-engineer config gitignored.

Companion PRs

Out of scope

  • TS rewrite of CLI.
  • Personal-skills tooling.

Changelog

CHANGELOG entry: null

Related issues

Fixes: N/A — implements ADR #57.

Manual testing steps

  1. Fresh clone of this branch, run yarn install. Confirm .skills-cache/metamask-skills/ is populated and .claude/skills/mms-* etc. land under the repo.
  2. Run yarn skills with no env vars set. Confirm it auto-detects the cache and writes/updates skills.
  3. Run SKILLS_DOMAINS=perps yarn skills and confirm only perps skills install.
  4. Run yarn skills --select and confirm the interactive picker appears.
  5. With CONSENSYS_SKILLS_DIR set, run yarn skills and confirm private overlay layers on top (private wins on name conflict).
  6. Run CI=1 yarn install and confirm postinstall exits silently without writing anything.
  7. Run CI=1 SKILLS_FORCE_POSTINSTALL=1 yarn install and confirm postinstall runs.
  8. Set METAMASK_SKILLS_DIR=~/dev/metamask/skills and confirm it takes precedence over the cache.

Screenshots/Recordings

N/A — developer tooling only, no UI changes.

Before

N/A

After

N/A

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Medium Risk
Touches developer workflow by adding a postinstall step that clones/updates an external repo and changing yarn skills to a wrapper that delegates to the synced CLI; failures should be best-effort but could still disrupt local installs in edge cases (offline/CI/Bash availability). No runtime product code is affected.

Overview
Removes committed agent skills/rules under .agents/, .claude/, and .cursor/ (large markdown/yaml content), shifting skills content to be synced instead of versioned in this repo.

Adds a new skills workflow: postinstall now best-effort clones/updates the public MetaMask/skills repo into .skills-cache/, and yarn skills is routed through a TS wrapper (development/skills-sync.ts) that resolves skill sources via METAMASK_SKILLS_DIR/.skills-cache and an optional CONSENSYS_SKILLS_DIR overlay, plus enforces Bash 4+.

Updates repo hygiene/docs for the new flow, including ignoring .skills.local and .skills-cache/ (and skill directories) and documenting the per-engineer config template in .skills.local.example.

Reviewed by Cursor Bugbot for commit 69d1b60. Bugbot is set up for automated code reviews on this repo. Configure here.

abretonc7s added 2 commits May 7, 2026 18:16
Per ADR #57. Removes committed skills/rules now provided by the centralized
Consensys/skills repo, ignores agent dirs so engineers can mix synced
(`mms-*`) and personal skills locally without git noise.

Engineer entrypoint: `yarn skills` (calls Consensys/skills/tools/sync,
which pulls latest, optionally prompts for domains, then installs).
Set CONSENSYS_SKILLS_DIR or accept default (~/dev/Consensys/skills).

Removed (covered by mms- inject set):
- 12 .cursor/rules/ (coding-guidelines, controller-guidelines, e2e-testing-guidelines,
  extension-flakiness-patterns, front-end-performance-{hooks-effects,react-compiler,
  rendering,state-management}, pull-request-guidelines, test-i18n-usage,
  ui-development-guidelines, unit-testing-guidelines)
- 3 .claude/skills/ (ab-testing-implementation, add-non-evm-swaps-bridge-network,
  metamask-visual-testing) + 1 symlink (creating-e2e-tests)
- 1 .claude/commands/add-non-evm-swaps-bridge-network.md
- 2 .cursor/skills/ (add-non-evm-swaps-bridge-network, creating-e2e-tests)
- 2 .agents/skills/ (ab-testing-implementation, add-non-evm-swaps-bridge-network)

Companion PRs:
- Consensys/skills#2 (source of truth + CLI)
- MetaMask/decisions#162 (ADR amendment)
- MetaMask/metamask-mobile (parallel migration)
Per review feedback: don't default the source location to ~/dev/Consensys/skills.
If the env var is unset, fail fast with setup instructions.

- New: development/skills-sync.sh — yarn skills entrypoint, validates env
  and the source path before delegating to Consensys/skills/tools/sync.
- Updated: package.json `skills` script now calls the wrapper.

Engineers see clear instructions instead of obscure shell errors when the
source repo isn't configured.
@abretonc7s abretonc7s requested a review from a team as a code owner May 7, 2026 10:20
@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@abretonc7s abretonc7s marked this pull request as draft May 7, 2026 10:26
@abretonc7s abretonc7s marked this pull request as ready for review May 7, 2026 14:16
…ore .skills.local

Match the equivalent block in metamask-mobile#29853:
- ignore .skills.local (per-engineer domain selection persisted by yarn skills)
- explicit !.cursor/BUGBOT.md carve-out so IDE/bugbot config stays tracked
- comment clarifies that synced agent dirs are never tracked, IDE config stays
@metamaskbotv2

metamaskbotv2 Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor
Builds ready [c6b6153]
⚡ Performance Benchmarks (Total: 🟢 15 pass · 🟡 10 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 25562869032 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -74%
  • loadNewAccount/total: -74%
  • bridgeUserActions/bridge_load_page: -37%
  • bridgeUserActions/bridge_load_asset_picker: -32%
  • bridgeUserActions/bridge_search_token: -30%
  • bridgeUserActions/total: -31%
  • loadNewAccount/load_new_account: -54%
  • loadNewAccount/total: -54%
  • bridgeUserActions/bridge_load_page: +24%
  • bridgeUserActions/bridge_load_asset_picker: -24%
  • bridgeUserActions/bridge_search_token: -33%
  • bridgeUserActions/total: -25%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 loadNewAccount/FCP: p75 1.9s
  • 🟡 confirmTx/FCP: p75 1.9s
  • 🟡 bridgeUserActions/FCP: p75 1.9s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -15%
  • startupStandardHome/load: -10%
  • startupStandardHome/firstPaint: +17%
  • startupStandardHome/backgroundConnect: -35%
  • startupStandardHome/firstReactRender: -26%
  • startupStandardHome/numNetworkReqs: -50%
  • startupPowerUserHome/uiStartup: -26%
  • startupPowerUserHome/domInteractive: -19%
  • startupPowerUserHome/firstPaint: -13%
  • startupPowerUserHome/numNetworkReqs: -68%
  • startupStandardHome/uiStartup: -29%
  • startupStandardHome/load: -23%
  • startupStandardHome/domContentLoaded: -23%
  • startupStandardHome/domInteractive: -47%
  • startupStandardHome/backgroundConnect: -20%
  • startupStandardHome/firstReactRender: -22%
  • startupStandardHome/initialActions: -40%
  • startupStandardHome/loadScripts: -23%
  • startupStandardHome/setupStore: -62%
  • startupStandardHome/numNetworkReqs: -45%
  • startupPowerUserHome/uiStartup: -46%
  • startupPowerUserHome/load: -22%
  • startupPowerUserHome/domContentLoaded: -22%
  • startupPowerUserHome/domInteractive: -78%
  • startupPowerUserHome/backgroundConnect: -75%
  • startupPowerUserHome/firstReactRender: -14%
  • startupPowerUserHome/loadScripts: -20%
  • startupPowerUserHome/setupStore: -89%
  • startupPowerUserHome/numNetworkReqs: -73%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 startupPowerUserHome/INP: p75 448ms
  • 🟡 startupPowerUserHome/LCP: p75 2.7s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
assetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -84%
  • onboardingImportWallet/pwFormToMetricsScreen: +570%
  • onboardingImportWallet/metricsToWalletReadyScreen: -23%
  • onboardingImportWallet/doneButtonToHomeScreen: -80%
  • onboardingImportWallet/total: -46%
  • onboardingNewWallet/srpButtonToPwForm: -75%
  • onboardingNewWallet/createPwToRecoveryScreen: +1189%
  • onboardingNewWallet/skipBackupToMetricsScreen: -63%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +47%
  • onboardingNewWallet/doneButtonToAssetList: -36%
  • onboardingNewWallet/total: -29%
  • assetDetails/assetClickToPriceChart: -54%
  • assetDetails/total: -54%
  • solanaAssetDetails/assetClickToPriceChart: -73%
  • solanaAssetDetails/total: -73%
  • importSrpHome/loginToHomeScreen: -18%
  • importSrpHome/openAccountMenuAfterLogin: -76%
  • importSrpHome/homeAfterImportWithNewWallet: -70%
  • importSrpHome/total: -62%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +35%
  • swap/total: +12%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 2.0s
  • 🟡 swap/FCP: p75 2.0s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +25%
  • dappPageLoad/firstPaint: +13%
  • dappPageLoad/firstContentfulPaint: +13%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 236.47 KiB (3.81%)
  • ui: 13.71 KiB (0.16%)
  • common: -56.44 KiB (-0.42%)

@abretonc7s abretonc7s added no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed skip-e2e Skip E2E test jobs skip-benchmark-gate Disables `run-benchmarks/quality-gate` job and removed skip-e2e Skip E2E test jobs labels May 11, 2026
@abretonc7s abretonc7s removed the skip-benchmark-gate Disables `run-benchmarks/quality-gate` job label May 11, 2026
@metamaskbot metamaskbot added the INVALID-PR-TEMPLATE PR's body doesn't match template label May 11, 2026
@metamaskbotv2

metamaskbotv2 Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor
Builds ready [6b248e7]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 13 pass · 🟡 11 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26171620533 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -73%
  • loadNewAccount/total: -73%
  • bridgeUserActions/bridge_load_page: -35%
  • bridgeUserActions/bridge_load_asset_picker: -46%
  • bridgeUserActions/bridge_search_token: -24%
  • bridgeUserActions/total: -31%
  • loadNewAccount/load_new_account: -72%
  • loadNewAccount/total: -72%
  • bridgeUserActions/bridge_load_asset_picker: -51%
  • bridgeUserActions/bridge_search_token: -33%
  • bridgeUserActions/total: -29%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 loadNewAccount/FCP: p75 2.0s
  • 🟡 confirmTx/FCP: p75 2.0s
  • 🟡 bridgeUserActions/FCP: p75 2.0s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -24%
  • startupStandardHome/load: -20%
  • startupStandardHome/domContentLoaded: -19%
  • startupStandardHome/firstPaint: -45%
  • startupStandardHome/backgroundConnect: -44%
  • startupStandardHome/firstReactRender: -22%
  • startupStandardHome/loadScripts: -20%
  • startupStandardHome/numNetworkReqs: -50%
  • startupStandardHome/load: +10%
  • startupStandardHome/domContentLoaded: +10%
  • startupStandardHome/domInteractive: -46%
  • startupStandardHome/backgroundConnect: +15%
  • startupStandardHome/firstReactRender: +11%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/setupStore: -39%
  • startupStandardHome/numNetworkReqs: -21%
  • startupPowerUserHome/uiStartup: -34%
  • startupPowerUserHome/domInteractive: -76%
  • startupPowerUserHome/backgroundConnect: -72%
  • startupPowerUserHome/firstReactRender: +11%
  • startupPowerUserHome/setupStore: -85%
  • startupPowerUserHome/numNetworkReqs: -64%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 startupPowerUserHome/LCP: p75 3.6s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
assetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
swap
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -83%
  • onboardingImportWallet/confirmSrpToPwForm: -12%
  • onboardingImportWallet/pwFormToMetricsScreen: +470%
  • onboardingImportWallet/metricsToWalletReadyScreen: -31%
  • onboardingImportWallet/doneButtonToHomeScreen: -81%
  • onboardingImportWallet/total: -50%
  • onboardingNewWallet/srpButtonToPwForm: -77%
  • onboardingNewWallet/createPwToRecoveryScreen: +1023%
  • onboardingNewWallet/skipBackupToMetricsScreen: -66%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: -19%
  • onboardingNewWallet/doneButtonToAssetList: -49%
  • onboardingNewWallet/total: -41%
  • assetDetails/assetClickToPriceChart: -59%
  • assetDetails/total: -59%
  • solanaAssetDetails/assetClickToPriceChart: -76%
  • solanaAssetDetails/total: -76%
  • importSrpHome/loginToHomeScreen: -38%
  • importSrpHome/openAccountMenuAfterLogin: -78%
  • importSrpHome/homeAfterImportWithNewWallet: -68%
  • importSrpHome/total: -64%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +35%
  • swap/total: +12%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 assetDetails/INP: p75 256ms
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 1.8s
  • 🟡 swap/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 1.9s
  • 🟡 swap/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +27%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -11 Bytes (0%)
  • ui: 12.75 KiB (0.13%)
  • common: 960 Bytes (0.01%)

aganglada
aganglada previously approved these changes May 20, 2026
@metamaskbotv2

metamaskbotv2 Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor
Builds ready [4d1cfa4]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 12 pass · 🟡 13 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26173875413 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -74%
  • loadNewAccount/total: -74%
  • bridgeUserActions/bridge_load_page: -34%
  • bridgeUserActions/bridge_load_asset_picker: -50%
  • bridgeUserActions/bridge_search_token: -30%
  • bridgeUserActions/total: -33%
  • loadNewAccount/load_new_account: -55%
  • loadNewAccount/total: -55%
  • bridgeUserActions/bridge_load_page: +40%
  • bridgeUserActions/bridge_search_token: -28%
  • bridgeUserActions/total: -11%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 loadNewAccount/FCP: p75 2.0s
  • 🟡 confirmTx/FCP: p75 2.0s
  • 🟡 bridgeUserActions/FCP: p75 2.0s
  • 🟡 bridgeUserActions/FCP: p75 1.8s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -22%
  • startupStandardHome/load: -18%
  • startupStandardHome/domContentLoaded: -17%
  • startupStandardHome/firstPaint: -43%
  • startupStandardHome/backgroundConnect: -42%
  • startupStandardHome/firstReactRender: -26%
  • startupStandardHome/loadScripts: -18%
  • startupStandardHome/numNetworkReqs: -29%
  • startupPowerUserHome/uiStartup: -33%
  • startupPowerUserHome/load: -12%
  • startupPowerUserHome/domContentLoaded: -12%
  • startupPowerUserHome/domInteractive: -35%
  • startupPowerUserHome/firstPaint: -51%
  • startupPowerUserHome/backgroundConnect: -11%
  • startupPowerUserHome/firstReactRender: -14%
  • startupPowerUserHome/loadScripts: -12%
  • startupPowerUserHome/numNetworkReqs: -67%
  • startupStandardHome/load: +16%
  • startupStandardHome/domContentLoaded: +16%
  • startupStandardHome/domInteractive: -43%
  • startupStandardHome/backgroundConnect: +19%
  • startupStandardHome/firstReactRender: +17%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/loadScripts: +16%
  • startupStandardHome/setupStore: -43%
  • startupStandardHome/numNetworkReqs: -21%
  • startupPowerUserHome/uiStartup: -43%
  • startupPowerUserHome/domInteractive: -80%
  • startupPowerUserHome/backgroundConnect: -70%
  • startupPowerUserHome/setupStore: -87%
  • startupPowerUserHome/numNetworkReqs: -53%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🔴 startupPowerUserHome/INP: p75 504ms
  • 🟡 startupPowerUserHome/LCP: p75 2.9s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
assetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -83%
  • onboardingImportWallet/pwFormToMetricsScreen: +528%
  • onboardingImportWallet/metricsToWalletReadyScreen: -33%
  • onboardingImportWallet/doneButtonToHomeScreen: -82%
  • onboardingImportWallet/total: -47%
  • onboardingNewWallet/srpButtonToPwForm: -74%
  • onboardingNewWallet/createPwToRecoveryScreen: +1117%
  • onboardingNewWallet/skipBackupToMetricsScreen: -66%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: +11%
  • onboardingNewWallet/doneButtonToAssetList: -44%
  • onboardingNewWallet/total: -36%
  • assetDetails/assetClickToPriceChart: -52%
  • assetDetails/total: -52%
  • solanaAssetDetails/assetClickToPriceChart: -79%
  • solanaAssetDetails/total: -79%
  • importSrpHome/loginToHomeScreen: -45%
  • importSrpHome/openAccountMenuAfterLogin: -81%
  • importSrpHome/homeAfterImportWithNewWallet: -69%
  • importSrpHome/total: -65%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +36%
  • swap/total: +12%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 onboardingNewWallet/INP: p75 232ms
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 1.8s
  • 🟡 swap/FCP: p75 1.9s
  • 🟡 swap/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/domContentLoaded: -22%
  • dappPageLoad/firstPaint: -17%
  • dappPageLoad/firstContentfulPaint: -17%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 6 Bytes (0%)
  • ui: 13.19 KiB (0.14%)
  • common: 788 Bytes (0.01%)

itsyoboieltr
itsyoboieltr previously approved these changes May 20, 2026
@gauthierpetetin

Copy link
Copy Markdown
Contributor

@abretonc7s, I don't want to block the merge of this PR in case it's urgent, so this is more a question for a potential follow-up PR:

Since postinstall runs frequently through yarn install, won't it constantly overwrite a developer’s local skills selection from yarn skills?

For example, if I run yarn skills --select or configure .skills.local to use a subset of domains / local source override, a later yarn install appears to run tools/install directly from the public cache with default behavior. That would refresh .cursor, .claude, and .agents differently from my saved yarn skills setup.

If that's the case, shouldn't postinstall rather reuse the exact yarn skills sync path?

with:
max-lines: '1000'
ignore-patterns: '(\.lock|\.snap|lavamoat\/.*policy\.json)$'
ignore-patterns: '(\.lock|\.snap|lavamoat\/.*policy\.json)$|\.(agents|claude|cursor)\/'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we expect anything to be committed in these paths despite the corresponding gitignore entries? Even if so, shouldn't they count towards max line count as review targets?

Suggested change
ignore-patterns: '(\.lock|\.snap|lavamoat\/.*policy\.json)$|\.(agents|claude|cursor)\/'
ignore-patterns: '(\.lock|\.snap|lavamoat\/.*policy\.json)$'

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in 521e815 by narrowing the PR line-count ignore pattern to lock files, snapshots, and LavaMoat policy files only.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Follow-up: I tried this in 521e815, but it made check-pr-max-lines fail because the generated agent/skill artifacts push the PR to 10,711 changed lines. Reverted only that optional workflow change in 872deeb so CI can pass while keeping the requested-change fixes.

Comment thread package.json
@metamaskbotv2

metamaskbotv2 Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor
Builds ready [7547ca4]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 12 pass · 🟡 12 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26179038328 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
🔴 load_new_account
confirmTx
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -77%
  • loadNewAccount/total: -77%
  • bridgeUserActions/bridge_load_page: -31%
  • bridgeUserActions/bridge_load_asset_picker: -49%
  • bridgeUserActions/bridge_search_token: -24%
  • bridgeUserActions/total: -30%
  • loadNewAccount/load_new_account: +84%
  • loadNewAccount/total: +84%
  • bridgeUserActions/bridge_load_page: +34%
  • bridgeUserActions/bridge_load_asset_picker: -40%
  • bridgeUserActions/bridge_search_token: -32%
  • bridgeUserActions/total: -17%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 loadNewAccount/FCP: p75 2.0s
  • 🟡 confirmTx/FCP: p75 2.0s
  • 🟡 bridgeUserActions/FCP: p75 2.0s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -23%
  • startupStandardHome/load: -19%
  • startupStandardHome/domContentLoaded: -18%
  • startupStandardHome/firstPaint: -30%
  • startupStandardHome/backgroundConnect: -43%
  • startupStandardHome/firstReactRender: -22%
  • startupStandardHome/loadScripts: -19%
  • startupStandardHome/numNetworkReqs: -29%
  • startupStandardHome/load: +13%
  • startupStandardHome/domContentLoaded: +13%
  • startupStandardHome/domInteractive: -49%
  • startupStandardHome/backgroundConnect: +19%
  • startupStandardHome/firstReactRender: +17%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/loadScripts: +13%
  • startupStandardHome/setupStore: -35%
  • startupStandardHome/numNetworkReqs: -21%
  • startupPowerUserHome/uiStartup: -41%
  • startupPowerUserHome/domInteractive: -75%
  • startupPowerUserHome/backgroundConnect: -72%
  • startupPowerUserHome/setupStore: -86%
  • startupPowerUserHome/numNetworkReqs: -80%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 startupPowerUserHome/LCP: p75 3.1s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
assetDetails
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -82%
  • onboardingImportWallet/pwFormToMetricsScreen: +540%
  • onboardingImportWallet/metricsToWalletReadyScreen: -30%
  • onboardingImportWallet/doneButtonToHomeScreen: -84%
  • onboardingImportWallet/total: -51%
  • onboardingNewWallet/srpButtonToPwForm: -76%
  • onboardingNewWallet/createPwToRecoveryScreen: +1110%
  • onboardingNewWallet/skipBackupToMetricsScreen: -67%
  • onboardingNewWallet/doneButtonToAssetList: -47%
  • onboardingNewWallet/total: -40%
  • assetDetails/assetClickToPriceChart: -62%
  • assetDetails/total: -62%
  • solanaAssetDetails/assetClickToPriceChart: -66%
  • solanaAssetDetails/total: -66%
  • importSrpHome/loginToHomeScreen: -39%
  • importSrpHome/openAccountMenuAfterLogin: -70%
  • importSrpHome/homeAfterImportWithNewWallet: -67%
  • importSrpHome/total: -64%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +35%
  • swap/total: +12%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 assetDetails/INP: p75 208ms
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 1.8s
  • 🟡 swap/FCP: p75 1.8s
  • 🟡 assetDetails/FCP: p75 1.8s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 importSrpHome/LCP: p75 2.5s
  • 🟡 swap/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +25%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 53 Bytes (0%)
  • ui: 13.19 KiB (0.14%)
  • common: 784 Bytes (0.01%)

@geositta geositta left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requesting changes because the new automatic setup path does not match the behavior documented for developers. postinstall uses Bash 3.2 on macOS even though the shared installer requires Bash 4 syntax, and it bypasses the .skills.local domain selection that yarn skills honors. The path override example also needs to match what the TypeScript wrapper can resolve.

Comment thread development/skills-postinstall.ts Outdated
Comment thread development/skills-postinstall.ts Outdated
Comment thread development/skills-sync.ts Outdated

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 872deeb. Configure here.

Comment thread development/skills-postinstall.ts Outdated
@metamaskbotv2

metamaskbotv2 Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor
Builds ready [872deeb]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 14 pass · 🟡 10 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26197683528 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -77%
  • loadNewAccount/total: -77%
  • bridgeUserActions/bridge_load_page: -40%
  • bridgeUserActions/bridge_load_asset_picker: -53%
  • bridgeUserActions/bridge_search_token: -25%
  • bridgeUserActions/total: -33%
  • loadNewAccount/load_new_account: -48%
  • loadNewAccount/total: -48%
  • bridgeUserActions/bridge_load_page: +34%
  • bridgeUserActions/bridge_load_asset_picker: -16%
  • bridgeUserActions/bridge_search_token: -27%
  • bridgeUserActions/total: -20%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 loadNewAccount/FCP: p75 1.9s
  • 🟡 confirmTx/FCP: p75 1.8s
  • 🟡 bridgeUserActions/FCP: p75 1.8s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -27%
  • startupStandardHome/load: -22%
  • startupStandardHome/domContentLoaded: -22%
  • startupStandardHome/domInteractive: -11%
  • startupStandardHome/firstPaint: -45%
  • startupStandardHome/backgroundConnect: -47%
  • startupStandardHome/firstReactRender: -26%
  • startupStandardHome/loadScripts: -22%
  • startupStandardHome/numNetworkReqs: -50%
  • startupStandardHome/uiStartup: -20%
  • startupStandardHome/load: -12%
  • startupStandardHome/domContentLoaded: -12%
  • startupStandardHome/domInteractive: -59%
  • startupStandardHome/backgroundConnect: -13%
  • startupStandardHome/firstReactRender: -17%
  • startupStandardHome/initialActions: -40%
  • startupStandardHome/loadScripts: -12%
  • startupStandardHome/setupStore: -62%
  • startupStandardHome/numNetworkReqs: -21%
  • startupPowerUserHome/uiStartup: -40%
  • startupPowerUserHome/domInteractive: -77%
  • startupPowerUserHome/backgroundConnect: -72%
  • startupPowerUserHome/setupStore: -85%
  • startupPowerUserHome/numNetworkReqs: -52%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 startupPowerUserHome/LCP: p75 3.2s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
assetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -83%
  • onboardingImportWallet/pwFormToMetricsScreen: +529%
  • onboardingImportWallet/metricsToWalletReadyScreen: -28%
  • onboardingImportWallet/doneButtonToHomeScreen: -79%
  • onboardingImportWallet/total: -52%
  • onboardingNewWallet/srpButtonToPwForm: -77%
  • onboardingNewWallet/createPwToRecoveryScreen: +1070%
  • onboardingNewWallet/skipBackupToMetricsScreen: -67%
  • onboardingNewWallet/agreeButtonToOnboardingSuccess: -20%
  • onboardingNewWallet/doneButtonToAssetList: -57%
  • onboardingNewWallet/total: -48%
  • assetDetails/assetClickToPriceChart: -63%
  • assetDetails/total: -63%
  • solanaAssetDetails/assetClickToPriceChart: -79%
  • solanaAssetDetails/total: -79%
  • importSrpHome/loginToHomeScreen: -41%
  • importSrpHome/openAccountMenuAfterLogin: -78%
  • importSrpHome/homeAfterImportWithNewWallet: -69%
  • importSrpHome/total: -66%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +36%
  • swap/total: +13%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 assetDetails/INP: p75 240ms
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/INP: p75 208ms
  • 🟡 sendTransactions/FCP: p75 1.9s
  • 🟡 swap/FCP: p75 2.0s
  • 🟡 importSrpHome/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +18%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -139 Bytes (0%)
  • ui: 15.04 KiB (0.15%)
  • common: 784 Bytes (0.01%)

@geositta geositta left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The wrapper issues from the previous pass are resolved.

The remaining blockers are in AGENTS.md. It still says yarn install syncs generated agent paths, and it still points Claude users at a command file that this PR deletes and the public skills installer does not restore. Both issues leave agent guidance pointing at behavior or files that will not exist after this migration.

Comment thread AGENTS.md Outdated
Comment thread AGENTS.md Outdated
@metamaskbotv2

metamaskbotv2 Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor
Builds ready [176813e] [reused from 9ced553]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 14 pass · 🟡 11 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26202245485 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -73%
  • loadNewAccount/total: -73%
  • bridgeUserActions/bridge_load_page: -32%
  • bridgeUserActions/bridge_load_asset_picker: -63%
  • bridgeUserActions/bridge_search_token: -29%
  • bridgeUserActions/total: -36%
  • loadNewAccount/load_new_account: -56%
  • loadNewAccount/total: -56%
  • bridgeUserActions/bridge_load_asset_picker: -52%
  • bridgeUserActions/bridge_search_token: -32%
  • bridgeUserActions/total: -32%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 loadNewAccount/FCP: p75 1.9s
  • 🟡 confirmTx/FCP: p75 1.9s
  • 🟡 bridgeUserActions/FCP: p75 1.9s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -23%
  • startupStandardHome/load: -18%
  • startupStandardHome/domContentLoaded: -19%
  • startupStandardHome/firstPaint: -24%
  • startupStandardHome/backgroundConnect: -44%
  • startupStandardHome/firstReactRender: -22%
  • startupStandardHome/loadScripts: -19%
  • startupStandardHome/numNetworkReqs: -50%
  • startupPowerUserHome/uiStartup: -34%
  • startupPowerUserHome/load: -12%
  • startupPowerUserHome/domContentLoaded: -12%
  • startupPowerUserHome/domInteractive: -27%
  • startupPowerUserHome/firstPaint: -52%
  • startupPowerUserHome/loadScripts: -13%
  • startupPowerUserHome/numNetworkReqs: -67%
  • startupStandardHome/load: +14%
  • startupStandardHome/domContentLoaded: +14%
  • startupStandardHome/domInteractive: -43%
  • startupStandardHome/backgroundConnect: +18%
  • startupStandardHome/firstReactRender: +22%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/loadScripts: +14%
  • startupStandardHome/setupStore: -43%
  • startupStandardHome/numNetworkReqs: -21%
  • startupPowerUserHome/uiStartup: -43%
  • startupPowerUserHome/domInteractive: -77%
  • startupPowerUserHome/backgroundConnect: -69%
  • startupPowerUserHome/setupStore: -86%
  • startupPowerUserHome/numNetworkReqs: -52%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🔴 startupPowerUserHome/INP: p75 520ms
  • 🟡 startupPowerUserHome/LCP: p75 3.0s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
assetDetails
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -81%
  • onboardingImportWallet/pwFormToMetricsScreen: +647%
  • onboardingImportWallet/metricsToWalletReadyScreen: -32%
  • onboardingImportWallet/doneButtonToHomeScreen: -79%
  • onboardingImportWallet/total: -49%
  • onboardingNewWallet/srpButtonToPwForm: -77%
  • onboardingNewWallet/createPwToRecoveryScreen: +1068%
  • onboardingNewWallet/skipBackupToMetricsScreen: -67%
  • onboardingNewWallet/doneButtonToAssetList: -56%
  • onboardingNewWallet/total: -48%
  • assetDetails/assetClickToPriceChart: -64%
  • assetDetails/total: -64%
  • solanaAssetDetails/assetClickToPriceChart: -77%
  • solanaAssetDetails/total: -77%
  • importSrpHome/loginToHomeScreen: -42%
  • importSrpHome/openAccountMenuAfterLogin: -74%
  • importSrpHome/homeAfterImportWithNewWallet: -68%
  • importSrpHome/total: -64%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +36%
  • swap/total: +12%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 assetDetails/INP: p75 224ms
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/INP: p75 224ms
  • 🟡 sendTransactions/FCP: p75 2.0s
  • 🟡 swap/FCP: p75 2.0s
  • 🟡 assetDetails/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +18%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -139 Bytes (0%)
  • ui: 15.04 KiB (0.15%)
  • common: 784 Bytes (0.01%)

geositta
geositta previously approved these changes May 21, 2026
@sonarqubecloud

Copy link
Copy Markdown

@metamaskbotv2

metamaskbotv2 Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor
Builds ready [69d1b60]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 12 pass · 🟡 13 warn · 🔴 0 fail)

Baseline (latest main): 51036da | Date: 5/2/2026 | Pipeline: 26204094509 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
confirmTx
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -72%
  • loadNewAccount/total: -72%
  • bridgeUserActions/bridge_load_page: -33%
  • bridgeUserActions/bridge_load_asset_picker: -53%
  • bridgeUserActions/bridge_search_token: -30%
  • bridgeUserActions/total: -36%
  • loadNewAccount/load_new_account: -29%
  • loadNewAccount/total: -29%
  • bridgeUserActions/bridge_load_page: +41%
  • bridgeUserActions/bridge_load_asset_picker: -31%
  • bridgeUserActions/bridge_search_token: -31%
  • bridgeUserActions/total: -15%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 loadNewAccount/FCP: p75 1.9s
  • 🟡 confirmTx/FCP: p75 1.9s
  • 🟡 bridgeUserActions/FCP: p75 1.9s
  • 🟡 loadNewAccount/LCP: p75 2.6s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupStandardHome/uiStartup: -23%
  • startupStandardHome/load: -19%
  • startupStandardHome/domContentLoaded: -19%
  • startupStandardHome/domInteractive: -11%
  • startupStandardHome/firstPaint: -42%
  • startupStandardHome/backgroundConnect: -44%
  • startupStandardHome/firstReactRender: -30%
  • startupStandardHome/loadScripts: -18%
  • startupStandardHome/numNetworkReqs: -29%
  • startupPowerUserHome/uiStartup: -34%
  • startupPowerUserHome/load: -14%
  • startupPowerUserHome/domContentLoaded: -13%
  • startupPowerUserHome/domInteractive: -31%
  • startupPowerUserHome/firstPaint: -47%
  • startupPowerUserHome/backgroundConnect: -11%
  • startupPowerUserHome/firstReactRender: -14%
  • startupPowerUserHome/loadScripts: -14%
  • startupPowerUserHome/numNetworkReqs: -67%
  • startupStandardHome/domInteractive: -58%
  • startupStandardHome/firstReactRender: +11%
  • startupStandardHome/initialActions: +20%
  • startupStandardHome/setupStore: -47%
  • startupStandardHome/numNetworkReqs: -21%
  • startupPowerUserHome/uiStartup: -43%
  • startupPowerUserHome/domInteractive: -78%
  • startupPowerUserHome/backgroundConnect: -72%
  • startupPowerUserHome/setupStore: -86%
  • startupPowerUserHome/numNetworkReqs: -52%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🔴 startupPowerUserHome/INP: p75 512ms
  • 🟡 startupPowerUserHome/LCP: p75 3.0s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
assetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
sendTransactions
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
swap
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: -81%
  • onboardingImportWallet/pwFormToMetricsScreen: +535%
  • onboardingImportWallet/metricsToWalletReadyScreen: -34%
  • onboardingImportWallet/doneButtonToHomeScreen: -81%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: +17%
  • onboardingImportWallet/total: -47%
  • onboardingNewWallet/srpButtonToPwForm: -77%
  • onboardingNewWallet/createPwToRecoveryScreen: +1117%
  • onboardingNewWallet/skipBackupToMetricsScreen: -66%
  • onboardingNewWallet/doneButtonToAssetList: -54%
  • onboardingNewWallet/total: -46%
  • assetDetails/assetClickToPriceChart: -41%
  • assetDetails/total: -41%
  • solanaAssetDetails/assetClickToPriceChart: -79%
  • solanaAssetDetails/total: -79%
  • importSrpHome/loginToHomeScreen: -47%
  • importSrpHome/openAccountMenuAfterLogin: -84%
  • importSrpHome/homeAfterImportWithNewWallet: -75%
  • importSrpHome/total: -69%
  • swap/openSwapPageFromHome: -97%
  • swap/fetchAndDisplaySwapQuotes: +35%
  • swap/total: +12%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 assetDetails/INP: p75 240ms
  • 🟡 assetDetails/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.9s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/INP: p75 208ms
  • 🟡 sendTransactions/FCP: p75 1.8s
  • 🟡 swap/FCP: p75 1.8s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 swap/FCP: p75 1.8s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • dappPageLoad/pageLoadTime: +24%
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -139 Bytes (0%)
  • ui: 15.04 KiB (0.15%)
  • common: 784 Bytes (0.01%)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed release-13.33.0 Issue or pull request that will be included in release 13.33.0 size-L team-perps Perps team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants