[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6WM7PW75SQZYNX7KYPB9W41":3,"skill-same:01M6WM7PW75SQZYNX7KYPB9W41":62},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":47,"install":48,"resources":61},"01M6WM7PW75SQZYNX7KYPB9W41","mobile-investigations",null,"Use for mobile browser investigations in this repo, especially Firebase\u002FGoogle auth, iOS Safari or Chrome iOS, Incognito\u002FPrivate Browsing, storage partitioning, redirect flows, and user-visible mobile-only failures.","jleechanorg\u002Fjleechan-skills","jleechanorg","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F221404966?v=4","01M6C1VJ99XG950X1DWPEBCBGX","01M6C1VJDK5YVDNT3362RT5WSB",6,"MIT","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002Fplugins\u002Fworldarchitect\u002Fskills\u002Fmobile-investigations\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"investigations","mobile","mobile investigations","use","browsing","for","flows","safari","only","google","user","repo","firebase","ios","browser","auth","chrome","storage","2026-11-10 10:12:30",false,"---\nname: mobile-investigations\ndescription: Use for mobile browser investigations in this repo, especially Firebase\u002FGoogle auth, iOS Safari or Chrome iOS, Incognito\u002FPrivate Browsing, storage partitioning, redirect flows, and user-visible mobile-only failures.\n---\n\n# Mobile Investigations\n\nUse this workflow when investigating a mobile-only bug, especially auth flows\ninvolving Firebase, Google OAuth, redirects, iframes, browser storage, or\nSafari\u002FChrome iOS behavior.\n\n## First classify the claim\n\nBefore running tests, write the exact same-symptom target and use one of these\nverdict labels:\n\n- `REPRO`: the same user-visible symptom happens. For the mobile auth bug, that\n  means the browser returns from Google to the app and remains unauthenticated\n  on the welcome\u002Fsign-in surface.\n- `RELATED_REDIRECT_BOUNDARY_REACHED`: the flow reaches a related boundary such\n  as `\u003Cfirebase-project-id>.firebaseapp.com\u002F__\u002Fauth\u002Fhandler` or\n  `accounts.google.com`, but does not prove the user-visible failure.\n- `RELATED_SILENT_NULL_SIGNATURE`: `getRedirectResult()` resolves without an\n  error and without a user, e.g. `{resolved: true, hasUser: false, error: null}`.\n- `NON_REPRO`: auth succeeds, or failure is an unrelated OAuth\u002Fconfig\u002Fnetwork\n  error such as `redirect_uri_mismatch`, blocked connection, or missing test\n  credentials.\n\nDo not call a lower-fidelity storage or redirect boundary test an exact repro\nunless it produces the same user-visible symptom.\n\n## Fidelity ladder\n\nClimb only as far as the claim requires:\n\n1. Refresh live PR\u002Fbranch\u002Fdeploy state: PR URL, head SHA, preview\u002Fprod URL,\n   `authDomain`, `\u002F__\u002Fauth\u002Fhandler`, CSP\u002Fproxy behavior, and current evidence.\n2. Prefer an existing repo harness before inventing one. For this mobile auth\n   family, check:\n   - `$PROJECT_ROOT\u002Ffrontend_v1\u002Ftests\u002Fmobile_auth_emulator_repro\u002FREADME.md`\n   - `testing_ui\u002Fmobile_3pc_repro\u002F` when present on the branch or related PR.\n3. Use Playwright Chromium for basic redirect and third-party-storage boundary\n   checks. Treat it as related evidence, not iOS proof.\n4. Use Playwright WebKit with an iPhone profile for the WebKit storage\n   signature. Record the exact JSON state and screenshots.\n5. Use iOS Simulator Safari or MobileSafari Private Browsing when the claim is\n   iOS-engine behavior. Capture the before\u002Faction\u002Fafter screenshots or video.\n6. Use a physical device or trusted device cloud only for exact Chrome iOS\n   Incognito claims. Verify BrowserStack\u002FSauce\u002Ftest-account environment\n   variables by name only; never print secret values.\n\n## Commands\n\nUse Node 22 for Node-based mobile harnesses:\n\n```bash\nPATH=\"$(dirname \"$(nvm which 22)\")\":$PATH node --version\n```\n\nFor the same-origin Firebase auth helper repro in this PR family:\n\n```bash\ncd $PROJECT_ROOT\u002Ffrontend_v1\u002Ftests\u002Fmobile_auth_emulator_repro\nPATH=\"$(dirname \"$(nvm which 22)\")\":$PATH node run_repro.mjs\n```\n\nFor the third-party-storage\u002Fsilent-null repro when available:\n\n```bash\nPATH=\"$(dirname \"$(nvm which 22)\")\":$PATH \\\n  node --test --test-timeout=90000 testing_ui\u002Fmobile_3pc_repro\u002Frepro_3pc_auth.spec.mjs\n```\n\nRun targeted unit\u002Fintegration checks for any code you change. For the mobile auth\nsame-origin fix, the minimum local regression checks are:\n\n```bash\nPATH=\"$(dirname \"$(nvm which 22)\")\":$PATH \\\n  node --test $PROJECT_ROOT\u002Ffrontend_v1\u002Ftests\u002Fauth_domain_resolution.test.js\n\nTESTING=true .\u002Fvpython -m pytest $PROJECT_ROOT\u002Ftests\u002Ftest_firebase_auth_helper_proxy.py -q\n```\n\n## Evidence requirements\n\nProduce a short evidence table with:\n\n- exact repo path, branch, PR URL, and head SHA\n- browser\u002Fdevice mode and whether it is normal, Private Browsing, or Incognito\n- exact URL topology: app origin, auth handler origin, same-origin vs\n  cross-site\u002Fcross-origin\n- verdict label from the first section\n- artifact paths for JSON, screenshots, GIF\u002Fvideo, logs, and checksums when\n  evidence will be cited in a PR\n- remaining unproven scope\n\nFor mobile auth, explicitly say whether the evidence proves:\n\n- popup-to-redirect transport\n- third-party-storage or partitioning boundary\n- WebKit\u002FiOS engine behavior\n- exact Chrome iOS Incognito user-visible failure\n- production readiness after OAuth Authorized redirect URI registration\n\n## Common pitfalls\n\n- Do not mistake reaching `\u002F__\u002Fauth\u002Fhandler` for reproducing the final failure.\n- Do not overclaim desktop Chromium evidence for Chrome iOS; Chrome iOS uses\n  WebKit.\n- Do not use dynamic preview hosts as same-origin `authDomain` unless their\n  exact `https:\u002F\u002F\u003Chost>\u002F__\u002Fauth\u002Fhandler` URI is registered in Google Cloud.\n- Do not print passwords, OAuth tokens, Firebase keys beyond already-public\n  client config, or BrowserStack\u002FSauce credentials.\n- If the flow succeeds on iOS Safari\u002FChrome normal mode, classify it as\n  `NON_REPRO` for the exact failure and keep climbing only if the claim requires\n  Incognito\u002FPrivate Browsing.\n","# Mobile Investigations\n\nUse this workflow when investigating a mobile-only bug, especially auth flows\ninvolving Firebase, Google OAuth, redirects, iframes, browser storage, or\nSafari\u002FChrome iOS behavior.\n\n## First classify the claim\n\nBefore running tests, write the exact same-symptom target and use one of these\nverdict labels:\n\n- `REPRO`: the same user-visible symptom happens. For the mobile auth bug, that\n  means the browser returns from Google to the app and remains unauthenticated\n  on the welcome\u002Fsign-in surface.\n- `RELATED_REDIRECT_BOUNDARY_REACHED`: the flow reaches a related boundary such\n  as `\u003Cfirebase-project-id>.firebaseapp.com\u002F__\u002Fauth\u002Fhandler` or\n  `accounts.google.com`, but does not prove the user-visible failure.\n- `RELATED_SILENT_NULL_SIGNATURE`: `getRedirectResult()` resolves without an\n  error and without a user, e.g. `{resolved: true, hasUser: false, error: null}`.\n- `NON_REPRO`: auth succeeds, or failure is an unrelated OAuth\u002Fconfig\u002Fnetwork\n  error such as `redirect_uri_mismatch`, blocked connection, or missing test\n  credentials.\n\nDo not call a lower-fidelity storage or redirect boundary test an exact repro\nunless it produces the same user-visible symptom.\n\n## Fidelity ladder\n\nClimb only as far as the claim requires:\n\n1. Refresh live PR\u002Fbranch\u002Fdeploy state: PR URL, head SHA, preview\u002Fprod URL,\n   `authDomain`, `\u002F__\u002Fauth\u002Fhandler`, CSP\u002Fproxy behavior, and current evidence.\n2. Prefer an existing repo harness before inventing one. For this mobile auth\n   family, check:\n   - `$PROJECT_ROOT\u002Ffrontend_v1\u002Ftests\u002Fmobile_auth_emulator_repro\u002FREADME.md`\n   - `testing_ui\u002Fmobile_3pc_repro\u002F` when present on the branch or related PR.\n3. Use Playwright Chromium for basic redirect and third-party-storage boundary\n   checks. Treat it as related evidence, not iOS proof.\n4. Use Playwright WebKit with an iPhone profile for the WebKit storage\n   signature. Record the exact JSON state and screenshots.\n5. Use iOS Simulator Safari or MobileSafari Private Browsing when the claim is\n   iOS-engine behavior. Capture the before\u002Faction\u002Fafter screenshots or video.\n6. Use a physical device or trusted device cloud only for exact Chrome iOS\n   Incognito claims. Verify BrowserStack\u002FSauce\u002Ftest-account environment\n   variables by name only; never print secret values.\n\n## Commands\n\nUse Node 22 for Node-based mobile harnesses:\n\n```bash\nPATH=\"$(dirname \"$(nvm which 22)\")\":$PATH node --version\n```\n\nFor the same-origin Firebase auth helper repro in this PR family:\n\n```bash\ncd $PROJECT_ROOT\u002Ffrontend_v1\u002Ftests\u002Fmobile_auth_emulator_repro\nPATH=\"$(dirname \"$(nvm which 22)\")\":$PATH node run_repro.mjs\n```\n\nFor the third-party-storage\u002Fsilent-null repro when available:\n\n```bash\nPATH=\"$(dirname \"$(nvm which 22)\")\":$PATH \\\n  node --test --test-timeout=90000 testing_ui\u002Fmobile_3pc_repro\u002Frepro_3pc_auth.spec.mjs\n```\n\nRun targeted unit\u002Fintegration checks for any code you change. For the mobile auth\nsame-origin fix, the minimum local regression checks are:\n\n```bash\nPATH=\"$(dirname \"$(nvm which 22)\")\":$PATH \\\n  node --test $PROJECT_ROOT\u002Ffrontend_v1\u002Ftests\u002Fauth_domain_resolution.test.js\n\nTESTING=true .\u002Fvpython -m pytest $PROJECT_ROOT\u002Ftests\u002Ftest_firebase_auth_helper_proxy.py -q\n```\n\n## Evidence requirements\n\nProduce a short evidence table with:\n\n- exact repo path, branch, PR URL, and head SHA\n- browser\u002Fdevice mode and whether it is normal, Private Browsing, or Incognito\n- exact URL topology: app origin, auth handler origin, same-origin vs\n  cross-site\u002Fcross-origin\n- verdict label from the first section\n- artifact paths for JSON, screenshots, GIF\u002Fvideo, logs, and checksums when\n  evidence will be cited in a PR\n- remaining unproven scope\n\nFor mobile auth, explicitly say whether the evidence proves:\n\n- popup-to-redirect transport\n- third-party-storage or partitioning boundary\n- WebKit\u002FiOS engine behavior\n- exact Chrome iOS Incognito user-visible failure\n- production readiness after OAuth Authorized redirect URI registration\n\n## Common pitfalls\n\n- Do not mistake reaching `\u002F__\u002Fauth\u002Fhandler` for reproducing the final failure.\n- Do not overclaim desktop Chromium evidence for Chrome iOS; Chrome iOS uses\n  WebKit.\n- Do not use dynamic preview hosts as same-origin `authDomain` unless their\n  exact `https:\u002F\u002F\u003Chost>\u002F__\u002Fauth\u002Fhandler` URI is registered in Google Cloud.\n- Do not print passwords, OAuth tokens, Firebase keys beyond already-public\n  client config, or BrowserStack\u002FSauce credentials.\n- If the flow succeeds on iOS Safari\u002FChrome normal mode, classify it as\n  `NON_REPRO` for the exact failure and keep climbing only if the claim requires\n  Incognito\u002FPrivate Browsing.\n",{"name":5,"description":7},"main","8144f00ebafc4306264c63239e4b9fa42e48a90e","plugins\u002Fworldarchitect\u002Fskills\u002Fmobile-investigations",0,"https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills","https:\u002F\u002Fgithub.com\u002Fjleechanorg","2026-11-14 14:55:35",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add jleechanorg\u002Fjleechan-skills --skill mobile-investigations",{"tool":54,"command":55},"bunx","bunx skills add jleechanorg\u002Fjleechan-skills --skill mobile-investigations",{"tool":57,"command":58},"pnpm","pnpm dlx skills add jleechanorg\u002Fjleechan-skills --skill mobile-investigations","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002Fplugins\u002Fworldarchitect\u002Fskills\u002Fmobile-investigations\u002FSKILL.md",true,[],[63,79,100,114,127,143],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":36},"01M716Y5MTJ6GYJZ2ATXCJK8G4","instinct","Use when the user invokes \u002Finstinct or \u002Fin, or asks to \"message Instinct\", \"ask Instinct\", \"tell Instinct\", \"check Instinct\", or read replies from the configured peer assistant. iMessage first, WhatsApp Web as fallback.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finstinct\u002FSKILL.md",[],[65,28,70,71,72,21,73,74,75,76,77,78],"when","replies","check","identity","whatsapp","gmail","read","message","ask",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":90,"publishedAt":36},"01M716Y4HF7FVVMJSA2CCVN5VF","hr","Compatibility alias for history-resume; produce the same fresh-state, provenance-aware resume briefing.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fhr\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[81,91,92,93,23,94,95,96,97,98,99],"resume","compatibility","provenance","history","produce","alias","briefing","state","fresh",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":107,"publishedAt":36},"01M716Y1FFNFKFJYYKF8HQA6T8","history-resume","Resume briefing for the current repository branch or worktree using fresh state and admitted history sources.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fhistory-resume\u002FSKILL.md",[106],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[94,91,108,109,28,110,97,111,23,112,113,98,99],"history resume","branch","analysis","repository","worktree","sources",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":36},"01M716XWXJ8EPHK4RH9T14TR85","grok","Alias for the canonical grokbot browser conversation workflow; \u002Fgrok talks to the Grok bot the same way \u002Fdot talks to Dot.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgrok\u002FSKILL.md",[],[116,121,122,123,23,124,96,125,32,126],"dot","bot","workflow","canonical","conversation","grokbot",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":36},"01M70N9Q07DTE0EW5KFXMMMSJ0","codexa-bench","Compare `codexa` and normal `codex` on a fair split of comparable work by default; use `--strict` for duplicate runs of the exact same task.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcodexa-bench\u002FSKILL.md",[],[134,135,136,21,137,23,138,139,140,141,142],"codexa bench","work","split","default","duplicate","task","compare","normal","codex",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":147,"licenseFileUrl":148,"sourceHtmlUrl":149,"categories":150,"keywords":162,"publishedAt":36},"01M6C24S2X60SP8BBFGAEKPEGW","frontend-design","Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML\u002FCSS layouts, or when styling\u002Fbeautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ffrontend-design\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ffrontend-design\u002FSKILL.md",[151,156,159],{"categoryNo":152,"categoryName":153,"taxonomyType":154,"taxonomyTypeDesc":155},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":157,"categoryName":158,"taxonomyType":154,"taxonomyTypeDesc":155},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":160,"categoryName":161,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000032","设计师",[163,164,165,21,166,167,168,28,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,70,187],"frontend","design","frontend design","generic","ui design","react","html","components","code","artifacts","ui","aesthetics","Production","web components","landing","applications","quality","web","css","create","examples","with","react components","web ui","pages"]