[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M72VTMKP4FEEE8KPTBW0TS0Y":3,"skill-same:01M72VTMKP4FEEE8KPTBW0TS0Y":117},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":37,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M72VTMKP4FEEE8KPTBW0TS0Y","migrate-to-meteor-3",null,"Use when migrating a Meteor 2.x application to Meteor 3.x. Triggers on callAsync, *Async Mongo, removed Fibers, implicit-global ReferenceError, lost Blaze reactivity, a publish function returning a Promise, a scheduler dropping a Promise, a read API receiving update modifiers, async allow\u002Fdeny, an Iron Router controller not running, \"Method stub took too long\", Atmosphere resolution, Express 5 WebApp handlers, lost async context, rawCollection callbacks, TypeScript declaration failures during upgrades, useTracker, and useSubscribe. Use this skill when the user asks about upgrading Meteor, async caller propagation, iterators with await, or replacing and forking packages. Standalone declarations and type-checking belong to meteor-typescript.","meteor\u002Fagent-skills","meteor","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F789528?v=4","01M72VQVFCJ72XHP7ZKS3774NA","Meteor","01M72VQVG5VZ0X5VCQYM0MCK1Q",11,"MIT","https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002FSKILL.md",[],[],"2026-11-10 22:39:42",false,"---\nname: migrate-to-meteor-3\ndescription: >\n  Use when migrating a Meteor 2.x application to Meteor 3.x. Triggers on\n  callAsync, *Async Mongo, removed Fibers, implicit-global ReferenceError,\n  lost Blaze reactivity, a publish function returning a Promise, a scheduler\n  dropping a Promise, a read API receiving update modifiers, async allow\u002Fdeny,\n  an Iron Router controller not running, \"Method stub took too long\",\n  Atmosphere resolution, Express 5 WebApp handlers, lost async context,\n  rawCollection callbacks, TypeScript declaration failures during upgrades, useTracker, and\n  useSubscribe. Use this skill when the user asks about upgrading Meteor,\n  async caller propagation, iterators with await, or replacing and forking\n  packages. Standalone declarations and type-checking belong to meteor-typescript.\nmetadata:\n  author: meteor\n  kind: knowledge\n  meteor: \">=3.0\"\n  area: migration\n  tagline: \"Migrate a Meteor 2.x app to 3.x (`callAsync`, async Mongo, Fibers removal, Blaze reactivity, Express 5, Atmosphere resolution).\"\n  bundle: [\"migration\"]\n  docs_synced_at: \"2026-10-07\"\nlicense: MIT\n---\n\n# Migrate a Meteor 2.x application to Meteor 3.x\n\nMeteor 3 removed Fibers. Server-side Mongo APIs are async. The module system\nenforces strict mode. Client reactivity inside async code needs care.\nAtmosphere packages often need forking or replacement. Approach the migration\nin phases. Do not flip the framework version flag first.\n\n## Recommended strategy\n\nFor Meteor 3.6, [prepare retained local data](references\u002Fother-breaking-changes.md#local-database-before-meteor-36)\nunder the previous release before updating.\n\n1. Update the project to the latest 2.x release.\n2. Run the app with `WARN_WHEN_USING_OLD_API=true meteor run`. The console\n   logs every sync-API call that needs an async sibling, giving you a\n   to-do list before the framework flip.\n3. Migrate server-side sync Mongo calls to `*Async` siblings while still\n   on 2.x. Trace each changed function through every server-side caller:\n   await where the caller consumes the value, forward Promises deliberately,\n   and restructure sync-only boundaries. Stop only at an async-capable\n   framework boundary. See `references\u002Fasync-rewrites.md` and\n   `references\u002Fcall-vs-callAsync.md`. A community jscodeshift codemod automates\n   the easy cases, but it misses non-standard collection imports (for example,\n   `meteor\u002F\u003Cpublisher>:collections`). Review the diff by hand, then audit\n   callback Promise ownership and collection argument shapes.\n4. Audit Atmosphere packages. Find replacements or fork outdated ones;\n   pin `api.versionsFrom(['2.x', '3.0'])`. See\n   `references\u002Fpackage-triage.md`. Save `.meteor\u002Fversions` and npm lockfile\n   checkpoints so package-major changes remain distinguishable from Meteor.\n5. Upgrade to the selected Meteor 3.x release.\n6. Sweep implicit globals; rewrite to `const` or `export` \u002F `import`.\n   See `references\u002Fmodule-system.md`.\n7. Audit Blaze helpers and `Tracker.autorun` blocks for lost reactivity\n   after `await`. See `references\u002Fclient-reactivity.md`.\n8. Replace iterators that contain `await` (`forEach`, `map`, `filter`)\n   with `for...of` or `Promise.all`. See `references\u002Fjs-iterators.md`.\n9. Audit publications using internal cursor APIs (`_cursorDescription`,\n   manual `sub.added`) and framework handlers that read invocation `this`.\n   Both synchronous and async publish handlers may return cursors; keep cursor\n   transforms synchronous and use ordinary functions when Meteor must bind\n   `this`. When a package patches `Meteor.publish` with an\n   `EnvironmentVariable`, scope `publish.call` at the wrapper's top level,\n   not inside the invoked handler. Verify invocation context before and after\n   `await`. See `references\u002Fpublications.md` and\n   `references\u002Fother-breaking-changes.md`.\n10. For TypeScript projects, inspect the target release and existing declaration\n    provider. Keep working `@types\u002Fmeteor` or `zodern:types` setups. Meteor\n    3.6 adds explicit native opt-in through `meteor types`; earlier\n    releases retain the legacy workflow. See\n    `references\u002Ftypescript-migration.md`, then use `meteor-typescript` for\n    provider changes and checking.\n11. For React projects, decide whether to adopt the Suspense-aware\n    `react-meteor-data` import. See `references\u002Freact-migration.md`, then use\n    `meteor-react` for current hook, scaffold, and build guidance.\n\n## Symptom router\n\n| Symptom                                              | Reference                              |\n|------------------------------------------------------|----------------------------------------|\n| `TypeError: Collection.findOne is not a function`    | `references\u002Fasync-rewrites.md`         |\n| `Method returns undefined` or returns a `Promise`    | `references\u002Fasync-rewrites.md`         |\n| Downstream caller receives or reads from a `Promise` | `references\u002Fasync-rewrites.md`         |\n| Cron, hook, timer, or event callback drops a Promise | `references\u002Fasync-rewrites.md`         |\n| Read method receives `$set`, `$push`, or another modifier | `references\u002Fasync-rewrites.md`     |\n| `allow` \u002F `deny` validator needs an async database read | `references\u002Fasync-rewrites.md`      |\n| `Meteor.call` callback never fires                   | `references\u002Fcall-vs-callAsync.md`      |\n| `ReferenceError: X is not defined` at startup        | `references\u002Fmodule-system.md`          |\n| Template renders, no data, Minimongo empty           | `references\u002Fmodule-system.md`          |\n| Iron Router controller silently does not run         | `references\u002Fmodule-system.md`          |\n| `{{> partial}}` renders nothing in Blaze             | `references\u002Fmodule-system.md`          |\n| Page renders but live data never updates             | `references\u002Fclient-reactivity.md`      |\n| Blaze helper returns a `Promise`                     | `references\u002Fclient-reactivity.md`      |\n| Cursor `transform` errors with \"returned a Promise\"  | `references\u002Fpublications.md`           |\n| `sub.added` writes never reach the client            | `references\u002Fpublications.md`           |\n| Method or publication loses `this.userId`            | `references\u002Fpublications.md`           |\n| Atmosphere package fails to resolve or build         | `references\u002Fpackage-triage.md`         |\n| `forEach`\u002F`map`\u002F`filter` with `await` skips items    | `references\u002Fjs-iterators.md`           |\n| Middleware on `WebApp.connectHandlers` not firing    | `references\u002Fwebapp-express.md`         |\n| Route uses an unnamed wildcard after Meteor 3.1     | `references\u002Fwebapp-express.md`         |\n| `rawCollection` callback never fires                 | `references\u002Fother-breaking-changes.md` |\n| Patched publication loses `Meteor.userId()` or async context | `references\u002Fother-breaking-changes.md` |\n| `meteor reset` did not wipe the local Mongo          | `references\u002Fother-breaking-changes.md` |\n| `Method stub (X) took too long` console warning      | `references\u002Fcall-vs-callAsync.md`      |\n| \"Cannot enlarge memory array\" during `meteor update` | `references\u002Fother-breaking-changes.md` |\n| External callback lost `this.userId` or env vars     | `references\u002Fother-breaking-changes.md` |\n| Monkey-patched `Meteor.publish` never runs           | `references\u002Fother-breaking-changes.md` |\n| `meteor\u002F*` imports resolve to `any` in TypeScript    | `references\u002Ftypescript-migration.md`   |\n| `useTracker` or `useSubscribe` not re-running        | `references\u002Freact-migration.md`        |\n\n## Anti-patterns\n\n- Do not run `meteor update --release=3` first. Async-convert and\n  package-triage on 2.x first.\n- Do not global-replace `findOne` with `findOneAsync`. Many callers need\n  rewriting, not just `await`.\n- Do not mechanically rewrite client Minimongo calls to async. Both APIs work\n  on the client. Prefer sync calls in naturally synchronous Blaze and Tracker\n  code; use async calls in shared or already-async flows. Wrap reactive reads\n  after an `await` with `Tracker.withComputation`.\n- Do not rely on Iron Router controller naming-convention lookup. Pass\n  `controller:` explicitly on every route.\n- Do not mix `await` and `.then()` in the same function. Pick one.\n- Do not assume implicit globals work. Every top-level identifier in 3.x\n  must be `const`, `let`, or `export`-ed.\n- Do not invent async replacements. `Meteor.userId()` remains synchronous\n  inside methods and publications; there is no `Meteor.userIdAsync()`.\n- Do not use an arrow as a method or publication handler when it reads\n  framework-bound `this`. An arrow ignores the invocation context Meteor\n  supplies.\n- Do not rewrite `api.addFiles` or `api.export` only because the app moved to\n  Meteor 3. They remain supported for Atmosphere packages.\n\n## See also\n\n- Async: `async-rewrites.md`, `call-vs-callAsync.md`, `async-cheatsheet.md`,\n  `js-iterators.md`, `removed-functions.md`.\n- Runtime: `module-system.md`, `client-reactivity.md`, `publications.md`,\n  `webapp-express.md`, `other-breaking-changes.md`.\n- Project: `package-triage.md`, `typescript-migration.md`,\n  `react-migration.md`, `eval-cases.md`.\n- Current Meteor React integration after the upgrade: `meteor-react`.\n\nFor requested case studies, read\n`references\u002Fcommunity-case-studies.md`; use the symptom router for fixes.\n","# Migrate a Meteor 2.x application to Meteor 3.x\n\nMeteor 3 removed Fibers. Server-side Mongo APIs are async. The module system\nenforces strict mode. Client reactivity inside async code needs care.\nAtmosphere packages often need forking or replacement. Approach the migration\nin phases. Do not flip the framework version flag first.\n\n## Recommended strategy\n\nFor Meteor 3.6, [prepare retained local data](references\u002Fother-breaking-changes.md#local-database-before-meteor-36)\nunder the previous release before updating.\n\n1. Update the project to the latest 2.x release.\n2. Run the app with `WARN_WHEN_USING_OLD_API=true meteor run`. The console\n   logs every sync-API call that needs an async sibling, giving you a\n   to-do list before the framework flip.\n3. Migrate server-side sync Mongo calls to `*Async` siblings while still\n   on 2.x. Trace each changed function through every server-side caller:\n   await where the caller consumes the value, forward Promises deliberately,\n   and restructure sync-only boundaries. Stop only at an async-capable\n   framework boundary. See `references\u002Fasync-rewrites.md` and\n   `references\u002Fcall-vs-callAsync.md`. A community jscodeshift codemod automates\n   the easy cases, but it misses non-standard collection imports (for example,\n   `meteor\u002F\u003Cpublisher>:collections`). Review the diff by hand, then audit\n   callback Promise ownership and collection argument shapes.\n4. Audit Atmosphere packages. Find replacements or fork outdated ones;\n   pin `api.versionsFrom(['2.x', '3.0'])`. See\n   `references\u002Fpackage-triage.md`. Save `.meteor\u002Fversions` and npm lockfile\n   checkpoints so package-major changes remain distinguishable from Meteor.\n5. Upgrade to the selected Meteor 3.x release.\n6. Sweep implicit globals; rewrite to `const` or `export` \u002F `import`.\n   See `references\u002Fmodule-system.md`.\n7. Audit Blaze helpers and `Tracker.autorun` blocks for lost reactivity\n   after `await`. See `references\u002Fclient-reactivity.md`.\n8. Replace iterators that contain `await` (`forEach`, `map`, `filter`)\n   with `for...of` or `Promise.all`. See `references\u002Fjs-iterators.md`.\n9. Audit publications using internal cursor APIs (`_cursorDescription`,\n   manual `sub.added`) and framework handlers that read invocation `this`.\n   Both synchronous and async publish handlers may return cursors; keep cursor\n   transforms synchronous and use ordinary functions when Meteor must bind\n   `this`. When a package patches `Meteor.publish` with an\n   `EnvironmentVariable`, scope `publish.call` at the wrapper's top level,\n   not inside the invoked handler. Verify invocation context before and after\n   `await`. See `references\u002Fpublications.md` and\n   `references\u002Fother-breaking-changes.md`.\n10. For TypeScript projects, inspect the target release and existing declaration\n    provider. Keep working `@types\u002Fmeteor` or `zodern:types` setups. Meteor\n    3.6 adds explicit native opt-in through `meteor types`; earlier\n    releases retain the legacy workflow. See\n    `references\u002Ftypescript-migration.md`, then use `meteor-typescript` for\n    provider changes and checking.\n11. For React projects, decide whether to adopt the Suspense-aware\n    `react-meteor-data` import. See `references\u002Freact-migration.md`, then use\n    `meteor-react` for current hook, scaffold, and build guidance.\n\n## Symptom router\n\n| Symptom                                              | Reference                              |\n|------------------------------------------------------|----------------------------------------|\n| `TypeError: Collection.findOne is not a function`    | `references\u002Fasync-rewrites.md`         |\n| `Method returns undefined` or returns a `Promise`    | `references\u002Fasync-rewrites.md`         |\n| Downstream caller receives or reads from a `Promise` | `references\u002Fasync-rewrites.md`         |\n| Cron, hook, timer, or event callback drops a Promise | `references\u002Fasync-rewrites.md`         |\n| Read method receives `$set`, `$push`, or another modifier | `references\u002Fasync-rewrites.md`     |\n| `allow` \u002F `deny` validator needs an async database read | `references\u002Fasync-rewrites.md`      |\n| `Meteor.call` callback never fires                   | `references\u002Fcall-vs-callAsync.md`      |\n| `ReferenceError: X is not defined` at startup        | `references\u002Fmodule-system.md`          |\n| Template renders, no data, Minimongo empty           | `references\u002Fmodule-system.md`          |\n| Iron Router controller silently does not run         | `references\u002Fmodule-system.md`          |\n| `{{> partial}}` renders nothing in Blaze             | `references\u002Fmodule-system.md`          |\n| Page renders but live data never updates             | `references\u002Fclient-reactivity.md`      |\n| Blaze helper returns a `Promise`                     | `references\u002Fclient-reactivity.md`      |\n| Cursor `transform` errors with \"returned a Promise\"  | `references\u002Fpublications.md`           |\n| `sub.added` writes never reach the client            | `references\u002Fpublications.md`           |\n| Method or publication loses `this.userId`            | `references\u002Fpublications.md`           |\n| Atmosphere package fails to resolve or build         | `references\u002Fpackage-triage.md`         |\n| `forEach`\u002F`map`\u002F`filter` with `await` skips items    | `references\u002Fjs-iterators.md`           |\n| Middleware on `WebApp.connectHandlers` not firing    | `references\u002Fwebapp-express.md`         |\n| Route uses an unnamed wildcard after Meteor 3.1     | `references\u002Fwebapp-express.md`         |\n| `rawCollection` callback never fires                 | `references\u002Fother-breaking-changes.md` |\n| Patched publication loses `Meteor.userId()` or async context | `references\u002Fother-breaking-changes.md` |\n| `meteor reset` did not wipe the local Mongo          | `references\u002Fother-breaking-changes.md` |\n| `Method stub (X) took too long` console warning      | `references\u002Fcall-vs-callAsync.md`      |\n| \"Cannot enlarge memory array\" during `meteor update` | `references\u002Fother-breaking-changes.md` |\n| External callback lost `this.userId` or env vars     | `references\u002Fother-breaking-changes.md` |\n| Monkey-patched `Meteor.publish` never runs           | `references\u002Fother-breaking-changes.md` |\n| `meteor\u002F*` imports resolve to `any` in TypeScript    | `references\u002Ftypescript-migration.md`   |\n| `useTracker` or `useSubscribe` not re-running        | `references\u002Freact-migration.md`        |\n\n## Anti-patterns\n\n- Do not run `meteor update --release=3` first. Async-convert and\n  package-triage on 2.x first.\n- Do not global-replace `findOne` with `findOneAsync`. Many callers need\n  rewriting, not just `await`.\n- Do not mechanically rewrite client Minimongo calls to async. Both APIs work\n  on the client. Prefer sync calls in naturally synchronous Blaze and Tracker\n  code; use async calls in shared or already-async flows. Wrap reactive reads\n  after an `await` with `Tracker.withComputation`.\n- Do not rely on Iron Router controller naming-convention lookup. Pass\n  `controller:` explicitly on every route.\n- Do not mix `await` and `.then()` in the same function. Pick one.\n- Do not assume implicit globals work. Every top-level identifier in 3.x\n  must be `const`, `let`, or `export`-ed.\n- Do not invent async replacements. `Meteor.userId()` remains synchronous\n  inside methods and publications; there is no `Meteor.userIdAsync()`.\n- Do not use an arrow as a method or publication handler when it reads\n  framework-bound `this`. An arrow ignores the invocation context Meteor\n  supplies.\n- Do not rewrite `api.addFiles` or `api.export` only because the app moved to\n  Meteor 3. They remain supported for Atmosphere packages.\n\n## See also\n\n- Async: `async-rewrites.md`, `call-vs-callAsync.md`, `async-cheatsheet.md`,\n  `js-iterators.md`, `removed-functions.md`.\n- Runtime: `module-system.md`, `client-reactivity.md`, `publications.md`,\n  `webapp-express.md`, `other-breaking-changes.md`.\n- Project: `package-triage.md`, `typescript-migration.md`,\n  `react-migration.md`, `eval-cases.md`.\n- Current Meteor React integration after the upgrade: `meteor-react`.\n\nFor requested case studies, read\n`references\u002Fcommunity-case-studies.md`; use the symptom router for fixes.\n",{"name":5,"license":15,"metadata":24,"description":31},{"area":25,"kind":26,"author":9,"bundle":27,"meteor":28,"tagline":29,"docs_synced_at":30},"migration","knowledge",[25],">=3.0","Migrate a Meteor 2.x app to 3.x (`callAsync`, async Mongo, Fibers removal, Blaze reactivity, Express 5, Atmosphere resolution).","2026-10-07","Use when migrating a Meteor 2.x application to Meteor 3.x. Triggers on callAsync, *Async Mongo, removed Fibers, implicit-global ReferenceError, lost Blaze reactivity, a publish function returning a Promise, a scheduler dropping a Promise, a read API receiving update modifiers, async allow\u002Fdeny, an Iron Router controller not running, \"Method stub took too long\", Atmosphere resolution, Express 5 WebApp handlers, lost async context, rawCollection callbacks, TypeScript declaration failures during upgrades, useTracker, and useSubscribe. Use this skill when the user asks about upgrading Meteor, async caller propagation, iterators with await, or replacing and forking packages. Standalone declarations and type-checking belong to meteor-typescript.\n","main","0b022e17f4fcd7753440de79bd512603cf832de3","skills\u002Fmigrate-to-meteor-3",3,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills","https:\u002F\u002Fdocs.meteor.com\u002F","https:\u002F\u002Fgithub.com\u002Fmeteor","https:\u002F\u002Fmeteor.com\u002F","2026-11-12 03:34:42",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add meteor\u002Fagent-skills --skill migrate-to-meteor-3",{"tool":47,"command":48},"bunx","bunx skills add meteor\u002Fagent-skills --skill migrate-to-meteor-3",{"tool":50,"command":51},"pnpm","pnpm dlx skills add meteor\u002Fagent-skills --skill migrate-to-meteor-3","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002FSKILL.md",true,[55,61,65,69,73,77,81,85,89,93,97,101,105,109,113],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"references\u002Fasync-cheatsheet.md","REFERENCE","参考文档",2592,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fasync-cheatsheet.md",{"path":62,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":63,"sourceHtmlUrl":64},"references\u002Fasync-rewrites.md",8263,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fasync-rewrites.md",{"path":66,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":67,"sourceHtmlUrl":68},"references\u002Fcall-vs-callAsync.md",3576,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fcall-vs-callAsync.md",{"path":70,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":71,"sourceHtmlUrl":72},"references\u002Fclient-reactivity.md",4908,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fclient-reactivity.md",{"path":74,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Fcommunity-case-studies.md",3546,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fcommunity-case-studies.md",{"path":78,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Feval-cases.md",17833,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Feval-cases.md",{"path":82,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fjs-iterators.md",2613,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fjs-iterators.md",{"path":86,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fmodule-system.md",3702,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fmodule-system.md",{"path":90,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fother-breaking-changes.md",8633,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fother-breaking-changes.md",{"path":94,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fpackage-triage.md",6481,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fpackage-triage.md",{"path":98,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fpublications.md",4949,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fpublications.md",{"path":102,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Freact-migration.md",3841,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Freact-migration.md",{"path":106,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fremoved-functions.md",3718,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fremoved-functions.md",{"path":110,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Ftypescript-migration.md",2002,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Ftypescript-migration.md",{"path":114,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":115,"sourceHtmlUrl":116},"references\u002Fwebapp-express.md",4211,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-meteor-3\u002Freferences\u002Fwebapp-express.md",[118,125,132,139,146,153],{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":19},"01M72VTT678CAVGTRHSCCZMNSN","migrate-to-rspack","Use when migrating an existing Meteor app to Rspack (Meteor 3.4+), or upgrading Rspack 1 to 2 on Meteor 3.6. Triggers on nested imports, mainModule entry points, server-only apps, replacing fourseven:scss \u002F meteor\u002Fless \u002F coffeescript \u002F jorgenvatle:vite \u002F zodern:melte with loaders, Svelte\u002FTypeScript preprocessing or Lingui SWC plugin failures after upgrade, CommonJS default-import interop, module.exports in client graphs, Node built-ins in browser code, _build \u002F build-assets \u002F build-chunks, .meteorignore hiding handoff files, dynamic chunks under ROOT_URL, meteor.modules for CSS\u002FHTML, resolve.symlinks or resolve.alias migration, automatic dependency updates and immutable CI\u002FDocker builds. Use this skill when the user asks about migration compatibility or a build plugin's Rspack replacement. For new-app setup and rspack.config.js helpers, use meteor-modern-build-stack instead.","https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmigrate-to-rspack\u002FSKILL.md",[],[],{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":19},"01M72VTEG9AB229C97SRKZ2FFG","meteor-typescript","Use when setting up or repairing Meteor application declarations, TypeScript configuration, JavaScript IntelliSense, or local and CI type-checking. Triggers on meteor types, meteor\u002F* imports resolving to any, missing declarations, duplicate Meteor identifiers, zodern:types, @types\u002Fmeteor, .meteor\u002Ftypes, tsconfig.json, jsconfig.json, and tsc --noEmit in a Meteor app. Use this skill when choosing or migrating declaration providers without changing the app's runtime or bundler. For a Meteor 2-to-3 runtime migration use migrate-to-meteor-3 first; for SWC\u002FRspack compilation use meteor-modern-build-stack or migrate-to-rspack. General TypeScript language questions and Atmosphere declaration publishing are outside this app scope.","https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmeteor-typescript\u002FSKILL.md",[],[],{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":138,"publishedAt":19},"01M72VT9PART27QBM306JC3PGN","meteor-testing","Use when setting up, designing, writing, or repairing tests and test harnesses in a Meteor 3 app. Triggers on meteortesting:mocha, --driver-package, TEST_WATCH, TEST_BROWSER_DRIVER, MOCHA_GREP, meteor.testModule, focused tests, .only, Meteor.server.method_handlers, Meteor.server.publish_handlers, DDP.connect, --full-app integration mode, sinon, async test signatures, Playwright\u002FCypress E2E. Use this skill when the user asks about test runners, asks about testing publications, or asks about Jest vs Mocha in Meteor. For a failing, hanging, or flaky test whose failing layer or root cause is unknown, use meteor-debugging before changing the test or app.","https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmeteor-testing\u002FSKILL.md",[],[],{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":19},"01M72VT4X6FMW8YDG4GNR8FKNJ","meteor-security","Use when auditing or hardening a Meteor 3 application. Triggers on missing check() on method arguments, missing this.userId guards on publications, browser-policy CSP, DDPRateLimiter rules, oauth-encryption via Accounts.config oauthSecretKey, audit-argument-checks, allow\u002Fdeny legacy patterns, BrowserPolicy.content.disallowInlineScripts, BrowserPolicy.framing.disallow. Use this skill when the user asks about hardening, asks about a security review, or asks about CSP for a third-party script (Stripe, Google Maps, fonts).","https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmeteor-security\u002FSKILL.md",[],[],{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":19},"01M72VSY34AX3TF3AF68E5M4K9","meteor-react","Use when building or debugging React interfaces in Meteor 3: meteor create --react, createRoot, JSX or TSX entry points, Rspack React detection, Fast Refresh, react-meteor-data, useTracker, useSubscribe, useFind, withTracker, Suspense, and Tracker.withComputation. Triggers on isLoading being treated as a boolean, useFind receiving fetch(), stale closure inputs, duplicate tracker side effects, unstable Suspense keys, lost reactivity after await, state reset after refresh, or React tests leaking computations. Use this skill when the user asks about a React skeleton, React Compiler, React-specific rspack.config rules, reactive data hooks, or classic versus Suspense integration. Route general bundler configuration to meteor-modern-build-stack and Meteor 2 upgrades to migrate-to-meteor-3.","https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmeteor-react\u002FSKILL.md",[],[],{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":19},"01M72VSJQ3XWNA0SHZJ0F9SFF1","meteor-mongo-minimongo","Use when authoring or debugging Mongo queries in Meteor 3. Triggers on Mongo.Collection, find\u002FfindOne, server async vs client Minimongo sync, oplog vs change streams, indexes, selectors, modifiers, projections. Use this skill when the user asks about Mongo on the server or asks about Minimongo on the client.","https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmeteor-mongo-minimongo\u002FSKILL.md",[],[]]