[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71MZF0GA2KFTGJ0VMDR7PPC":3,"skill-same:01M71MZF0GA2KFTGJ0VMDR7PPC":84},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":14,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M71MZF0GA2KFTGJ0VMDR7PPC","eas-observe",null,"EAS service (paid). Use for anything related to EAS Observe - adding `expo-observe` to an Expo project (AppMetricsRoot\u002FObserveRoot HOC, markInteractive, the useObserve hook, the Expo Router \u002F React Navigation integrations for per-route metrics, and user-defined events via `Observe.logEvent`), querying via the EAS CLI (`eas observe:metrics-summary`, `observe:metrics`, `observe:routes`, `observe:events`, `observe:versions`), or interpreting the resulting metrics (cold\u002Fwarm launch, TTR, TTI, navigation cold\u002Fwarm TTR, update download, and the TTI frameRate params for triaging slow startups).","pattanation\u002FNorvik","pattanation","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F235419268?v=4","01M71M5THHYYB15ME8R2E4FCZG","Patta","01M71M5TJM1NDM992M8PDKYR2K",0,"MIT","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Feas-observe\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"eas observe","observe","service","summary","expo","launch","update","via","cli","route","router","react","use","project","for","paid","integrations","cold","expo router","startups","2026-11-10 10:56:23",false,"---\nname: eas-observe\ndescription: EAS service (paid). Use for anything related to EAS Observe - adding `expo-observe` to an Expo project (AppMetricsRoot\u002FObserveRoot HOC, markInteractive, the useObserve hook, the Expo Router \u002F React Navigation integrations for per-route metrics, and user-defined events via `Observe.logEvent`), querying via the EAS CLI (`eas observe:metrics-summary`, `observe:metrics`, `observe:routes`, `observe:events`, `observe:versions`), or interpreting the resulting metrics (cold\u002Fwarm launch, TTR, TTI, navigation cold\u002Fwarm TTR, update download, and the TTI frameRate params for triaging slow startups).\nversion: 1.0.0\nlicense: MIT\n---\n\n# EAS Observe\n\n> **EAS service - costs apply.** EAS Observe is a paid Expo Application Services product with free-tier limits. Ingesting and querying production metrics counts against your plan's event\u002Fusage allowance. Review https:\u002F\u002Fexpo.dev\u002Fpricing before enabling it in production.\n\nEAS Observe tracks startup, navigation, and custom-event performance from production Expo apps.\n\n> **Source of truth:** https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002F — always consult the canonical docs when API details matter, especially get-started, configuration, integrations, and the metrics reference. EAS Observe is evolving; this skill's references are written to stay accurate but may lag the docs.\n\n## Which reference to read\n\nThe three reference files in `.\u002Freferences\u002F` cover the three things people typically need this skill for:\n\n- **Adding EAS Observe to a project** → [`.\u002Freferences\u002Fsetup.md`](.\u002Freferences\u002Fsetup.md). Install, wrap the root layout (`AppMetricsRoot` on SDK 55, `ObserveRoot` on SDK 56+), call `markInteractive()` (global on SDK 55, via the `useObserve()` hook on SDK 56+), optional per-route navigation metrics through the Expo Router \u002F React Navigation integrations, and user-defined events via `Observe.logEvent` (SDK 56+).\n- **Querying metrics from the terminal** → [`.\u002Freferences\u002Fqueries.md`](.\u002Freferences\u002Fqueries.md). The five `eas observe:*` commands — `metrics-summary`, `metrics`, `routes`, `events`, `versions` — with flags, table layouts, JSON shapes, and common workflows.\n- **Reading a dashboard or CLI output** → [`.\u002Freferences\u002Fmetrics.md`](.\u002Freferences\u002Fmetrics.md). Target thresholds per metric, what the TTI `frameRate.*` params mean, and diagnostic patterns for telling slow-but-smooth startup apart from main-thread contention or hard blocks.\n\n## Quick links to the docs\n\n- Get started: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fget-started\u002F\n- Dashboard guide: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fdashboard\u002F\n- Metrics reference: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Freference\u002Fmetrics\u002F\n- Expo Router integration: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fintegrations\u002Fexpo-router\u002F\n- React Navigation integration: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fintegrations\u002Freact-navigation\u002F\n- User-defined events: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fevents\u002F\n- Configuration: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fconfiguration\u002F\n","# EAS Observe\n\n> **EAS service - costs apply.** EAS Observe is a paid Expo Application Services product with free-tier limits. Ingesting and querying production metrics counts against your plan's event\u002Fusage allowance. Review https:\u002F\u002Fexpo.dev\u002Fpricing before enabling it in production.\n\nEAS Observe tracks startup, navigation, and custom-event performance from production Expo apps.\n\n> **Source of truth:** https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002F — always consult the canonical docs when API details matter, especially get-started, configuration, integrations, and the metrics reference. EAS Observe is evolving; this skill's references are written to stay accurate but may lag the docs.\n\n## Which reference to read\n\nThe three reference files in `.\u002Freferences\u002F` cover the three things people typically need this skill for:\n\n- **Adding EAS Observe to a project** → [`.\u002Freferences\u002Fsetup.md`](.\u002Freferences\u002Fsetup.md). Install, wrap the root layout (`AppMetricsRoot` on SDK 55, `ObserveRoot` on SDK 56+), call `markInteractive()` (global on SDK 55, via the `useObserve()` hook on SDK 56+), optional per-route navigation metrics through the Expo Router \u002F React Navigation integrations, and user-defined events via `Observe.logEvent` (SDK 56+).\n- **Querying metrics from the terminal** → [`.\u002Freferences\u002Fqueries.md`](.\u002Freferences\u002Fqueries.md). The five `eas observe:*` commands — `metrics-summary`, `metrics`, `routes`, `events`, `versions` — with flags, table layouts, JSON shapes, and common workflows.\n- **Reading a dashboard or CLI output** → [`.\u002Freferences\u002Fmetrics.md`](.\u002Freferences\u002Fmetrics.md). Target thresholds per metric, what the TTI `frameRate.*` params mean, and diagnostic patterns for telling slow-but-smooth startup apart from main-thread contention or hard blocks.\n\n## Quick links to the docs\n\n- Get started: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fget-started\u002F\n- Dashboard guide: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fdashboard\u002F\n- Metrics reference: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Freference\u002Fmetrics\u002F\n- Expo Router integration: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fintegrations\u002Fexpo-router\u002F\n- React Navigation integration: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fintegrations\u002Freact-navigation\u002F\n- User-defined events: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fevents\u002F\n- Configuration: https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fobserve\u002Fconfiguration\u002F\n",{"name":5,"license":15,"version":44,"description":7},"1.0.0","claude\u002Finstall-gsd-build-foQdV","d86cd127f527124b5fd0fd0bc679a4d79b7d01d7",".agents\u002Fskills\u002Feas-observe","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik","https:\u002F\u002Fnorvik-orpin.vercel.app","https:\u002F\u002Fgithub.com\u002Fpattanation","2026-07-17 11:17:04",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add pattanation\u002FNorvik --skill eas-observe",{"tool":58,"command":59},"bunx","bunx skills add pattanation\u002FNorvik --skill eas-observe",{"tool":61,"command":62},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill eas-observe","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Feas-observe\u002FSKILL.md",true,[66,72,76,80],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"agents\u002Fopenai.yaml","REFERENCE","参考文档",424,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Feas-observe\u002Fagents\u002Fopenai.yaml",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fmetrics.md",3473,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Feas-observe\u002Freferences\u002Fmetrics.md",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fqueries.md",13545,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Feas-observe\u002Freferences\u002Fqueries.md",{"path":81,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fsetup.md",12631,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Feas-observe\u002Freferences\u002Fsetup.md",[85,119,143,165,187,200],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":89,"licenseFileUrl":90,"sourceHtmlUrl":91,"categories":92,"keywords":101,"publishedAt":118},"01M71QDV4DM8T19HEHWATEF1K4","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[93,98],{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":99,"categoryName":100,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000009","前端开发",[102,103,104,33,105,106,107,108,109,110,111,112,113,114,115,116,117],"webapp","testing","webapp testing","applications","local","frontend","debugging","toolkit","logs","browser","with","playwright","web","behavior","ui","screenshots","2026-11-10 13:02:02",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":89,"licenseFileUrl":123,"sourceHtmlUrl":124,"categories":125,"keywords":127,"publishedAt":118},"01M71QDH2GGMXGA9105C9W1N7B","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FSKILL.md",[126],{"categoryNo":99,"categoryName":100,"taxonomyType":96,"taxonomyTypeDesc":97},[128,129,130,114,131,132,133,33,134,135,107,136,31,137,138,30,139,140,141,142],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","file","components","multi","state","routing","state management",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":147,"sourceHtmlUrl":148,"categories":149,"keywords":151,"publishedAt":118},"01M71QD9T2XC3EWMQNN9ACNWQ1","vueuse-functions","Apply VueUse composables where appropriate to build concise, maintainable Vue.js \u002F Nuxt features.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FSKILL.md",[150],{"categoryNo":99,"categoryName":100,"taxonomyType":96,"taxonomyTypeDesc":97},[152,153,154,32,155,156,157,158,159,160,161,162,163,164],"functions","vueuse","vueuse functions","nuxt","apply","github","concise","build","https","features","vue","js","composables",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":169,"sourceHtmlUrl":170,"categories":171,"keywords":174,"publishedAt":118},"01M71QD51HWSGYMCMB7RW7PGK8","vue-testing-best-practices","Use for Vue.js testing. Covers Vitest, Vue Test Utils, component testing, mocking, testing patterns, and Playwright for E2E testing.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FSKILL.md",[172,173],{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},{"categoryNo":99,"categoryName":100,"taxonomyType":96,"taxonomyTypeDesc":97},[175,103,176,162,177,113,178,179,180,157,181,33,182,183,184,31,185,163,186],"vue testing best practices","testing best practices","best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":191,"sourceHtmlUrl":192,"categories":193,"keywords":195,"publishedAt":118},"01M71QD358H2DJ9THJRBP77T3T","vue-router-best-practices","Vue Router 4 patterns, navigation guards, route params, and route-component lifecycle interactions.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FSKILL.md",[194],{"categoryNo":99,"categoryName":100,"taxonomyType":96,"taxonomyTypeDesc":97},[29,162,196,177,28,180,197,157,185,198,199],"vue router best practices","guards","navigation","lifecycle",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":204,"sourceHtmlUrl":205,"categories":206,"keywords":208,"publishedAt":118},"01M71QCYPNWDE2MQZ1TF3ED5S4","vue-best-practices","MUST be used for Vue.js tasks. Strongly recommends Composition API with `\u003Cscript setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FSKILL.md",[207],{"categoryNo":99,"categoryName":100,"taxonomyType":96,"taxonomyTypeDesc":97},[209,162,177,210,32,211,212,213,29,214,215,216,217,218,219,33,220,31,221,222],"vue best practices","Composition","files","tasks","api","pinia","work","options","ssr","typescript","as","vite","load","standard"]