[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-wix-rp-execute-import":3,"mdc-71m1y6-key":31,"related-repo-wix-rp-execute-import":1087,"related-org-wix-rp-execute-import":1169},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":26,"sourceUrl":29,"mdContent":30},"rp-execute-import","execute migration pipelines to Wix","Runs the generated extract\u002Fimport pipeline and records execution results. Use when setup and codegen are complete and the user has approved the execution plan.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"wix","Wix","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fwix.jpg",[12,14,17],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"Data Pipeline","data-pipeline",{"name":18,"slug":19,"type":13},"Migration","migration",23,"https:\u002F\u002Fgithub.com\u002Fwix\u002Fskills","2026-07-01T08:08:07.038962",null,28,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"Wix Skills","https:\u002F\u002Fgithub.com\u002Fwix\u002Fskills\u002Ftree\u002FHEAD\u002Freplatform\u002Frp-execute-import","---\nname: rp-execute-import\ndescription: >-\n  Runs the generated extract\u002Fimport pipeline and records execution results. Use when setup\n  and codegen are complete and the user has approved the execution plan.\n---\n\n# rp-execute-import\n\nExecute the generated migration pipeline and capture import results.\n\n## Purpose\n\nThis skill runs the generated extract\u002Fimport pipeline for the active project once setup and code generation are complete.\n\n## Required inputs\n\n- generated code under `migrations\u002F\u003Cproject>\u002Fsrc\u002F`\n- `migrations\u002F\u003Cproject>\u002Fimport-plan.md`\n- `migrations\u002F\u003Cproject>\u002Fsetup-verification.md`\n\n## Preconditions\n\nDo not proceed until:\n\n- setup verification shows required items are passed or accepted; an unrecovered blocker\n  halts to needs-user\n- reader, transform, and writer code exist for the intended entities\n- execution strategy for batching, retries, and checkpoints is clear\n- the **execution plan report has been presented and the user has accepted it** (see\n  below)\n\n## Execution plan & user acceptance (required gate)\n\nThis gate precedes **all** writes to the user's site — both `rp-execute-setup`\nprovisioning and this import. Before writing anything, produce a human-readable\n**execution plan report** and obtain explicit user acceptance. Do not write anything until\nthe user accepts. The report must show:\n\n- **Setup changes to be made first:** apps to install (Blog \u002F Members \u002F Wix-Data enabler),\n  Wix Data enablement, and collections to create — so the user sees the site changes, not\n  just the content writes.\n- **What will be imported and where:** each source entity → its Wix target (app or\n  collection) with record counts — e.g. posts → Wix Blog (1088); episodes →\n  `PodcastEpisodes` (86); categories\u002Ftags → Blog taxonomies; media → Media Manager (~1499).\n- **What will NOT migrate cleanly \u002F needs manual action:** the lossy and blocked items,\n  drawn from the mapping plan's faithfulness ledger and any `setup-verification.md` items\n  still manual or blocked — e.g. category hierarchy flattened, comments anonymized,\n  drafts absent without auth, storage-plan upgrade required. **This must also include any\n  target with no verified Wix primitive** — state whether it falls back to a generic CMS\n  collection, to an `unverified`\u002Fbest-effort runtime-derived call, or is skipped. Nothing\n  unverified or lossy may be written without first appearing here for consent.\n  Coupons follow the same native-first rule as other native Wix entities: prefer native\n  Wix Coupons, and mention CMS fallback only for truly unsupported coupon semantics.\n  - **Always state the analytics-data exclusion explicitly.** Historical analytics data —\n    traffic \u002F visitor stats accumulated on the source — is **out of scope** and is **not**\n    imported (see \"Out of scope\" below). Call this out in the plan so the user knows before\n    accepting that analytics data will not migrate; do not let it pass silently.\n- **Order & idempotency:** the write order and how re-runs dedupe. Be explicit that\n  source IDs are the stable migration key, while many native Wix target IDs are\n  server-assigned. The plan must state whether each entity re-run resolves via a\n  client-controlled source-id field on the target or via a durable `sourceId -> targetId`\n  crosswalk.\n\nPersist this in `import-plan.md` (or a sibling report). This is the defined approval\ncheckpoint: the job pauses, surfaces the plan to the user, and resumes **only** on\naccept. Nothing is written before acceptance.\n\n## Out of scope — analytics (future enhancement)\n\n**Do not attempt to import analytics data.** Historical traffic \u002F visitor statistics —\nthe accumulated analytics records on the source (page views, sessions, visitor counts,\ntime-series reports) — are **not** part of the migration. Do not generate readers,\ntransforms, or writers for them. (This is about the *data*, not analytics\nconfiguration\u002Fsetup such as tracking tags — that is a separate concern and not what this\nexclusion covers.)\n\n- **Surface it before execute.** This exclusion must appear in the execution-plan report's\n  \"What will NOT migrate\" list (see the gate above) so the user is told **before** they\n  accept and we begin writing — not discovered afterward.\n- **Future enhancement.** Analytics migration is a deferred scope item, not a permanent\n  limitation. If\u002Fwhen a faithful source→Wix analytics path exists, revisit and lift this\n  exclusion. Until then, treat analytics as explicitly skipped.\n\n## Execute the generated scripts — never an agentic MCP flow (required)\n\nThe **import** is performed by **running the generated artifact** (`node` the project's\nentrypoint under `migrations\u002F\u003Cproject>\u002Fsrc\u002F`), which writes to Wix via its own transport\n(`fetch` + injected credentials to `www.wixapis.com`, or the Wix client SDK). The agent\n**must not** perform the import writes itself by issuing per-record Wix MCP calls\n(`CallWixSiteAPI`) and hand-translating shapes.\n\n(Scope: this rule is **import-specific**. Setup execution (`rp-execute-setup`) may\ncurrently use the agent+MCP for provisioning writes — an interim decision, with other\noptions still under discussion.)\n\nWhy the import must run the artifact:\n\n- **Reproducibility & idempotency.** Re-runs, resume-from-checkpoint, write ordering, and\n  dedup keyed by source ID live in the artifact. For native Wix entities whose target IDs\n  are server-assigned, that means the artifact must maintain and consult a durable\n  `sourceId -> targetId` crosswalk. An agent reconstructing writes ad hoc bypasses all of\n  it — a bulk, restartable data pipeline can't be driven by hand per record.\n- **Verified shapes.** The artifact calls `rp-target-wix`'s verified primitives. An agent\n  rebuilding request bodies live re-opens the exact shape-bug class we eliminated\n  (FR-007 Ricos enums, FR-009 tag body, FR-010 `heroImage.id`).\n- **MCP may be absent at runtime.** Interactively-authenticated MCP servers can be missing\n  in headless\u002Fcron runs, so MCP can't be depended on as the write transport regardless of\n  whether the runtime is a pure script-runner or an agent. Either way the writes should\n  flow through the tested artifact, not be reconstructed by the model.\n- **Validation honesty.** Writing by hand via MCP leaves the artifact's own auth, request\n  execution, async-media polling, retry, and checkpoint code unexercised — a green test\n  then says nothing about the path real users get. The Wix MCP's role here is\n  grounding\u002Fverification at codegen time and the one-time live contract test in\n  `rp-target-wix`, **not** the import transport.\n\nConsequence for credentials: the artifact needs real Wix write credentials to run. If they\nare absent, **halt to needs-user** — do **not** substitute the agent's MCP account auth to\n\"get the writes done.\" Missing credentials is a blocker to surface, not a path to route\naround. (Note: the wporg-news Run 2\u002F3 live writes went through the agent+MCP as a no-token\ntest stand-in. That validated request *shapes* only; it is explicitly **not** how import\nruns — the artifact's own `fetch`\u002Fauth\u002Fpolling path still needs a live end-to-end validation.)\n\n## Config files\n\nBefore running the generated entrypoint, verify the project-local config files exist and\ncontain required values:\n\n- `migrations\u002F\u003Cproject>\u002Fconfig\u002Fwix.env`\n  - `WIX_SITE_ID`\n  - `WIX_AUTH_TOKEN` or another generated-code-supported Wix auth key\n- `migrations\u002F\u003Cproject>\u002Fconfig\u002Fsource.\u003Cplatform>.env`\n  - platform-specific source values, for example WordPress:\n    `WP_BASE_URL`, `WP_USERNAME`, `WP_APPLICATION_PASSWORD`\n\nThe generated script should load these files and then allow process env to override them.\nIf a required key is missing or blank, halt to needs-user with the exact key name. Never\nprint secret values.\n\nTreat `migrations\u002F\u003Cproject>\u002Fconfig\u002F*.env` as secret-bearing once they may contain real\nvalues. Do not inspect them with whole-file reads that print contents into tool output;\ncheck only existence and required-key status (`present`, `blank`, `missing`).\n\n## Workflow\n\n1. Resolve the active project.\n2. Review the import plan and generated code; present the execution plan report and obtain\n   acceptance (see above) before any write.\n3. Run a safe validation path first when possible, such as dry-run, sample batch, or read-only validation.\n   If media import is in scope and source media URLs are local\u002Fprivate (`localhost`,\n   `127.0.0.1`, Docker-only hosts, etc.), do not treat a successful dry-run as proof that\n   live media import can work. Wix Media import fetches URLs from Wix servers, so the user\n   must either expose the source through a public HTTPS tunnel or skip\u002Fdefer media. This\n   is optional and, as far as we know today, only affects media import.\n4. **Run source extraction first** using the generated reader entrypoint (for example\n   `node src\u002Fextract-source.js`, or an equivalent `run-import.js --extract-only` mode).\n   This step writes durable source files under the project and must complete before the\n   write phase.\n5. **Execute the import by running the generated import entrypoint** (for example\n   `node src\u002Frun-import.js` or `node src\u002Frun-import.js --import-only`) with credentials\n   injected via config\u002Fenv. The import must read from the extracted files on disk — not by\n   re-reading the source into memory, and not by issuing writes through the agent\u002FMCP.\n6. Capture counts, errors, retries, skipped records, and checkpoint information.\n7. Save a durable execution log.\n\n## Localhost media before live import\n\nWhen source media URLs are local\u002Fprivate, ask the user to choose one path before live\nmedia writes:\n\n- Expose the source with a public HTTPS tunnel such as ngrok:\n\n  ```bash\n  brew install ngrok\n  ngrok config add-authtoken \"\u003CYOUR_AUTHTOKEN>\"\n  ngrok http 8090\n  export WP_BASE_URL=https:\u002F\u002F\u003Cid>.ngrok-free.app\n  ```\n\n- Or skip\u002Fdefer media import and record the effect on hero images, galleries, downloadable\n  files, and other media-dependent references.\n\nNon-media entities may continue if the execution plan clearly excludes or defers media.\n\n## Artifact to create or update\n\n- `migrations\u002F\u003Cproject>\u002Fexecution-log.md`\n\n## Minimum execution log contents\n\n- run timestamp\n- command or entrypoint used\n- extracted source location \u002F manifest used\n- entities processed\n- records read, transformed, written, skipped, failed\n- retry behavior\n- blocking errors\n- follow-up remediation\n\n## Guardrails\n\n- **Import writes go through the executed artifact, not the agent.** Never perform import\n  writes via `CallWixSiteAPI`\u002FMCP as a substitute for running the script. MCP is\n  verification-only here (see the section above). (Setup execution is out of scope for this\n  rule — see `rp-execute-setup`.)\n- Prefer dry-runs or sample batches before full import.\n- Stop on systemic mapping or write failures rather than amplifying bad writes.\n- Preserve enough logging to support replay and debugging.\n",{"data":32,"body":33},{"name":4,"description":6},{"type":34,"children":35},"root",[36,43,49,56,61,67,102,108,113,144,150,177,286,306,312,336,366,372,437,456,461,540,578,584,589,661,666,700,706,803,809,814,961,966,972,984,990,1033,1039,1081],{"type":37,"tag":38,"props":39,"children":40},"element","h1",{"id":4},[41],{"type":42,"value":4},"text",{"type":37,"tag":44,"props":45,"children":46},"p",{},[47],{"type":42,"value":48},"Execute the generated migration pipeline and capture import results.",{"type":37,"tag":50,"props":51,"children":53},"h2",{"id":52},"purpose",[54],{"type":42,"value":55},"Purpose",{"type":37,"tag":44,"props":57,"children":58},{},[59],{"type":42,"value":60},"This skill runs the generated extract\u002Fimport pipeline for the active project once setup and code generation are complete.",{"type":37,"tag":50,"props":62,"children":64},{"id":63},"required-inputs",[65],{"type":42,"value":66},"Required inputs",{"type":37,"tag":68,"props":69,"children":70},"ul",{},[71,84,93],{"type":37,"tag":72,"props":73,"children":74},"li",{},[75,77],{"type":42,"value":76},"generated code under ",{"type":37,"tag":78,"props":79,"children":81},"code",{"className":80},[],[82],{"type":42,"value":83},"migrations\u002F\u003Cproject>\u002Fsrc\u002F",{"type":37,"tag":72,"props":85,"children":86},{},[87],{"type":37,"tag":78,"props":88,"children":90},{"className":89},[],[91],{"type":42,"value":92},"migrations\u002F\u003Cproject>\u002Fimport-plan.md",{"type":37,"tag":72,"props":94,"children":95},{},[96],{"type":37,"tag":78,"props":97,"children":99},{"className":98},[],[100],{"type":42,"value":101},"migrations\u002F\u003Cproject>\u002Fsetup-verification.md",{"type":37,"tag":50,"props":103,"children":105},{"id":104},"preconditions",[106],{"type":42,"value":107},"Preconditions",{"type":37,"tag":44,"props":109,"children":110},{},[111],{"type":42,"value":112},"Do not proceed until:",{"type":37,"tag":68,"props":114,"children":115},{},[116,121,126,131],{"type":37,"tag":72,"props":117,"children":118},{},[119],{"type":42,"value":120},"setup verification shows required items are passed or accepted; an unrecovered blocker\nhalts to needs-user",{"type":37,"tag":72,"props":122,"children":123},{},[124],{"type":42,"value":125},"reader, transform, and writer code exist for the intended entities",{"type":37,"tag":72,"props":127,"children":128},{},[129],{"type":42,"value":130},"execution strategy for batching, retries, and checkpoints is clear",{"type":37,"tag":72,"props":132,"children":133},{},[134,136,142],{"type":42,"value":135},"the ",{"type":37,"tag":137,"props":138,"children":139},"strong",{},[140],{"type":42,"value":141},"execution plan report has been presented and the user has accepted it",{"type":42,"value":143}," (see\nbelow)",{"type":37,"tag":50,"props":145,"children":147},{"id":146},"execution-plan-user-acceptance-required-gate",[148],{"type":42,"value":149},"Execution plan & user acceptance (required gate)",{"type":37,"tag":44,"props":151,"children":152},{},[153,155,160,162,168,170,175],{"type":42,"value":154},"This gate precedes ",{"type":37,"tag":137,"props":156,"children":157},{},[158],{"type":42,"value":159},"all",{"type":42,"value":161}," writes to the user's site — both ",{"type":37,"tag":78,"props":163,"children":165},{"className":164},[],[166],{"type":42,"value":167},"rp-execute-setup",{"type":42,"value":169},"\nprovisioning and this import. Before writing anything, produce a human-readable\n",{"type":37,"tag":137,"props":171,"children":172},{},[173],{"type":42,"value":174},"execution plan report",{"type":42,"value":176}," and obtain explicit user acceptance. Do not write anything until\nthe user accepts. The report must show:",{"type":37,"tag":68,"props":178,"children":179},{},[180,190,208,268],{"type":37,"tag":72,"props":181,"children":182},{},[183,188],{"type":37,"tag":137,"props":184,"children":185},{},[186],{"type":42,"value":187},"Setup changes to be made first:",{"type":42,"value":189}," apps to install (Blog \u002F Members \u002F Wix-Data enabler),\nWix Data enablement, and collections to create — so the user sees the site changes, not\njust the content writes.",{"type":37,"tag":72,"props":191,"children":192},{},[193,198,200,206],{"type":37,"tag":137,"props":194,"children":195},{},[196],{"type":42,"value":197},"What will be imported and where:",{"type":42,"value":199}," each source entity → its Wix target (app or\ncollection) with record counts — e.g. posts → Wix Blog (1088); episodes →\n",{"type":37,"tag":78,"props":201,"children":203},{"className":202},[],[204],{"type":42,"value":205},"PodcastEpisodes",{"type":42,"value":207}," (86); categories\u002Ftags → Blog taxonomies; media → Media Manager (~1499).",{"type":37,"tag":72,"props":209,"children":210},{},[211,216,218,224,226,231,233,239,241],{"type":37,"tag":137,"props":212,"children":213},{},[214],{"type":42,"value":215},"What will NOT migrate cleanly \u002F needs manual action:",{"type":42,"value":217}," the lossy and blocked items,\ndrawn from the mapping plan's faithfulness ledger and any ",{"type":37,"tag":78,"props":219,"children":221},{"className":220},[],[222],{"type":42,"value":223},"setup-verification.md",{"type":42,"value":225}," items\nstill manual or blocked — e.g. category hierarchy flattened, comments anonymized,\ndrafts absent without auth, storage-plan upgrade required. ",{"type":37,"tag":137,"props":227,"children":228},{},[229],{"type":42,"value":230},"This must also include any\ntarget with no verified Wix primitive",{"type":42,"value":232}," — state whether it falls back to a generic CMS\ncollection, to an ",{"type":37,"tag":78,"props":234,"children":236},{"className":235},[],[237],{"type":42,"value":238},"unverified",{"type":42,"value":240},"\u002Fbest-effort runtime-derived call, or is skipped. Nothing\nunverified or lossy may be written without first appearing here for consent.\nCoupons follow the same native-first rule as other native Wix entities: prefer native\nWix Coupons, and mention CMS fallback only for truly unsupported coupon semantics.\n",{"type":37,"tag":68,"props":242,"children":243},{},[244],{"type":37,"tag":72,"props":245,"children":246},{},[247,252,254,259,261,266],{"type":37,"tag":137,"props":248,"children":249},{},[250],{"type":42,"value":251},"Always state the analytics-data exclusion explicitly.",{"type":42,"value":253}," Historical analytics data —\ntraffic \u002F visitor stats accumulated on the source — is ",{"type":37,"tag":137,"props":255,"children":256},{},[257],{"type":42,"value":258},"out of scope",{"type":42,"value":260}," and is ",{"type":37,"tag":137,"props":262,"children":263},{},[264],{"type":42,"value":265},"not",{"type":42,"value":267},"\nimported (see \"Out of scope\" below). Call this out in the plan so the user knows before\naccepting that analytics data will not migrate; do not let it pass silently.",{"type":37,"tag":72,"props":269,"children":270},{},[271,276,278,284],{"type":37,"tag":137,"props":272,"children":273},{},[274],{"type":42,"value":275},"Order & idempotency:",{"type":42,"value":277}," the write order and how re-runs dedupe. Be explicit that\nsource IDs are the stable migration key, while many native Wix target IDs are\nserver-assigned. The plan must state whether each entity re-run resolves via a\nclient-controlled source-id field on the target or via a durable ",{"type":37,"tag":78,"props":279,"children":281},{"className":280},[],[282],{"type":42,"value":283},"sourceId -> targetId",{"type":42,"value":285},"\ncrosswalk.",{"type":37,"tag":44,"props":287,"children":288},{},[289,291,297,299,304],{"type":42,"value":290},"Persist this in ",{"type":37,"tag":78,"props":292,"children":294},{"className":293},[],[295],{"type":42,"value":296},"import-plan.md",{"type":42,"value":298}," (or a sibling report). This is the defined approval\ncheckpoint: the job pauses, surfaces the plan to the user, and resumes ",{"type":37,"tag":137,"props":300,"children":301},{},[302],{"type":42,"value":303},"only",{"type":42,"value":305}," on\naccept. Nothing is written before acceptance.",{"type":37,"tag":50,"props":307,"children":309},{"id":308},"out-of-scope-analytics-future-enhancement",[310],{"type":42,"value":311},"Out of scope — analytics (future enhancement)",{"type":37,"tag":44,"props":313,"children":314},{},[315,320,322,326,328,334],{"type":37,"tag":137,"props":316,"children":317},{},[318],{"type":42,"value":319},"Do not attempt to import analytics data.",{"type":42,"value":321}," Historical traffic \u002F visitor statistics —\nthe accumulated analytics records on the source (page views, sessions, visitor counts,\ntime-series reports) — are ",{"type":37,"tag":137,"props":323,"children":324},{},[325],{"type":42,"value":265},{"type":42,"value":327}," part of the migration. Do not generate readers,\ntransforms, or writers for them. (This is about the ",{"type":37,"tag":329,"props":330,"children":331},"em",{},[332],{"type":42,"value":333},"data",{"type":42,"value":335},", not analytics\nconfiguration\u002Fsetup such as tracking tags — that is a separate concern and not what this\nexclusion covers.)",{"type":37,"tag":68,"props":337,"children":338},{},[339,356],{"type":37,"tag":72,"props":340,"children":341},{},[342,347,349,354],{"type":37,"tag":137,"props":343,"children":344},{},[345],{"type":42,"value":346},"Surface it before execute.",{"type":42,"value":348}," This exclusion must appear in the execution-plan report's\n\"What will NOT migrate\" list (see the gate above) so the user is told ",{"type":37,"tag":137,"props":350,"children":351},{},[352],{"type":42,"value":353},"before",{"type":42,"value":355}," they\naccept and we begin writing — not discovered afterward.",{"type":37,"tag":72,"props":357,"children":358},{},[359,364],{"type":37,"tag":137,"props":360,"children":361},{},[362],{"type":42,"value":363},"Future enhancement.",{"type":42,"value":365}," Analytics migration is a deferred scope item, not a permanent\nlimitation. If\u002Fwhen a faithful source→Wix analytics path exists, revisit and lift this\nexclusion. Until then, treat analytics as explicitly skipped.",{"type":37,"tag":50,"props":367,"children":369},{"id":368},"execute-the-generated-scripts-never-an-agentic-mcp-flow-required",[370],{"type":42,"value":371},"Execute the generated scripts — never an agentic MCP flow (required)",{"type":37,"tag":44,"props":373,"children":374},{},[375,377,382,384,389,391,397,399,404,406,412,414,420,422,427,429,435],{"type":42,"value":376},"The ",{"type":37,"tag":137,"props":378,"children":379},{},[380],{"type":42,"value":381},"import",{"type":42,"value":383}," is performed by ",{"type":37,"tag":137,"props":385,"children":386},{},[387],{"type":42,"value":388},"running the generated artifact",{"type":42,"value":390}," (",{"type":37,"tag":78,"props":392,"children":394},{"className":393},[],[395],{"type":42,"value":396},"node",{"type":42,"value":398}," the project's\nentrypoint under ",{"type":37,"tag":78,"props":400,"children":402},{"className":401},[],[403],{"type":42,"value":83},{"type":42,"value":405},"), which writes to Wix via its own transport\n(",{"type":37,"tag":78,"props":407,"children":409},{"className":408},[],[410],{"type":42,"value":411},"fetch",{"type":42,"value":413}," + injected credentials to ",{"type":37,"tag":78,"props":415,"children":417},{"className":416},[],[418],{"type":42,"value":419},"www.wixapis.com",{"type":42,"value":421},", or the Wix client SDK). The agent\n",{"type":37,"tag":137,"props":423,"children":424},{},[425],{"type":42,"value":426},"must not",{"type":42,"value":428}," perform the import writes itself by issuing per-record Wix MCP calls\n(",{"type":37,"tag":78,"props":430,"children":432},{"className":431},[],[433],{"type":42,"value":434},"CallWixSiteAPI",{"type":42,"value":436},") and hand-translating shapes.",{"type":37,"tag":44,"props":438,"children":439},{},[440,442,447,449,454],{"type":42,"value":441},"(Scope: this rule is ",{"type":37,"tag":137,"props":443,"children":444},{},[445],{"type":42,"value":446},"import-specific",{"type":42,"value":448},". Setup execution (",{"type":37,"tag":78,"props":450,"children":452},{"className":451},[],[453],{"type":42,"value":167},{"type":42,"value":455},") may\ncurrently use the agent+MCP for provisioning writes — an interim decision, with other\noptions still under discussion.)",{"type":37,"tag":44,"props":457,"children":458},{},[459],{"type":42,"value":460},"Why the import must run the artifact:",{"type":37,"tag":68,"props":462,"children":463},{},[464,481,507,517],{"type":37,"tag":72,"props":465,"children":466},{},[467,472,474,479],{"type":37,"tag":137,"props":468,"children":469},{},[470],{"type":42,"value":471},"Reproducibility & idempotency.",{"type":42,"value":473}," Re-runs, resume-from-checkpoint, write ordering, and\ndedup keyed by source ID live in the artifact. For native Wix entities whose target IDs\nare server-assigned, that means the artifact must maintain and consult a durable\n",{"type":37,"tag":78,"props":475,"children":477},{"className":476},[],[478],{"type":42,"value":283},{"type":42,"value":480}," crosswalk. An agent reconstructing writes ad hoc bypasses all of\nit — a bulk, restartable data pipeline can't be driven by hand per record.",{"type":37,"tag":72,"props":482,"children":483},{},[484,489,491,497,499,505],{"type":37,"tag":137,"props":485,"children":486},{},[487],{"type":42,"value":488},"Verified shapes.",{"type":42,"value":490}," The artifact calls ",{"type":37,"tag":78,"props":492,"children":494},{"className":493},[],[495],{"type":42,"value":496},"rp-target-wix",{"type":42,"value":498},"'s verified primitives. An agent\nrebuilding request bodies live re-opens the exact shape-bug class we eliminated\n(FR-007 Ricos enums, FR-009 tag body, FR-010 ",{"type":37,"tag":78,"props":500,"children":502},{"className":501},[],[503],{"type":42,"value":504},"heroImage.id",{"type":42,"value":506},").",{"type":37,"tag":72,"props":508,"children":509},{},[510,515],{"type":37,"tag":137,"props":511,"children":512},{},[513],{"type":42,"value":514},"MCP may be absent at runtime.",{"type":42,"value":516}," Interactively-authenticated MCP servers can be missing\nin headless\u002Fcron runs, so MCP can't be depended on as the write transport regardless of\nwhether the runtime is a pure script-runner or an agent. Either way the writes should\nflow through the tested artifact, not be reconstructed by the model.",{"type":37,"tag":72,"props":518,"children":519},{},[520,525,527,532,534,538],{"type":37,"tag":137,"props":521,"children":522},{},[523],{"type":42,"value":524},"Validation honesty.",{"type":42,"value":526}," Writing by hand via MCP leaves the artifact's own auth, request\nexecution, async-media polling, retry, and checkpoint code unexercised — a green test\nthen says nothing about the path real users get. The Wix MCP's role here is\ngrounding\u002Fverification at codegen time and the one-time live contract test in\n",{"type":37,"tag":78,"props":528,"children":530},{"className":529},[],[531],{"type":42,"value":496},{"type":42,"value":533},", ",{"type":37,"tag":137,"props":535,"children":536},{},[537],{"type":42,"value":265},{"type":42,"value":539}," the import transport.",{"type":37,"tag":44,"props":541,"children":542},{},[543,545,550,552,556,558,563,565,569,571,576],{"type":42,"value":544},"Consequence for credentials: the artifact needs real Wix write credentials to run. If they\nare absent, ",{"type":37,"tag":137,"props":546,"children":547},{},[548],{"type":42,"value":549},"halt to needs-user",{"type":42,"value":551}," — do ",{"type":37,"tag":137,"props":553,"children":554},{},[555],{"type":42,"value":265},{"type":42,"value":557}," substitute the agent's MCP account auth to\n\"get the writes done.\" Missing credentials is a blocker to surface, not a path to route\naround. (Note: the wporg-news Run 2\u002F3 live writes went through the agent+MCP as a no-token\ntest stand-in. That validated request ",{"type":37,"tag":329,"props":559,"children":560},{},[561],{"type":42,"value":562},"shapes",{"type":42,"value":564}," only; it is explicitly ",{"type":37,"tag":137,"props":566,"children":567},{},[568],{"type":42,"value":265},{"type":42,"value":570}," how import\nruns — the artifact's own ",{"type":37,"tag":78,"props":572,"children":574},{"className":573},[],[575],{"type":42,"value":411},{"type":42,"value":577},"\u002Fauth\u002Fpolling path still needs a live end-to-end validation.)",{"type":37,"tag":50,"props":579,"children":581},{"id":580},"config-files",[582],{"type":42,"value":583},"Config files",{"type":37,"tag":44,"props":585,"children":586},{},[587],{"type":42,"value":588},"Before running the generated entrypoint, verify the project-local config files exist and\ncontain required values:",{"type":37,"tag":68,"props":590,"children":591},{},[592,624],{"type":37,"tag":72,"props":593,"children":594},{},[595,601],{"type":37,"tag":78,"props":596,"children":598},{"className":597},[],[599],{"type":42,"value":600},"migrations\u002F\u003Cproject>\u002Fconfig\u002Fwix.env",{"type":37,"tag":68,"props":602,"children":603},{},[604,613],{"type":37,"tag":72,"props":605,"children":606},{},[607],{"type":37,"tag":78,"props":608,"children":610},{"className":609},[],[611],{"type":42,"value":612},"WIX_SITE_ID",{"type":37,"tag":72,"props":614,"children":615},{},[616,622],{"type":37,"tag":78,"props":617,"children":619},{"className":618},[],[620],{"type":42,"value":621},"WIX_AUTH_TOKEN",{"type":42,"value":623}," or another generated-code-supported Wix auth key",{"type":37,"tag":72,"props":625,"children":626},{},[627,633],{"type":37,"tag":78,"props":628,"children":630},{"className":629},[],[631],{"type":42,"value":632},"migrations\u002F\u003Cproject>\u002Fconfig\u002Fsource.\u003Cplatform>.env",{"type":37,"tag":68,"props":634,"children":635},{},[636],{"type":37,"tag":72,"props":637,"children":638},{},[639,641,647,648,654,655],{"type":42,"value":640},"platform-specific source values, for example WordPress:\n",{"type":37,"tag":78,"props":642,"children":644},{"className":643},[],[645],{"type":42,"value":646},"WP_BASE_URL",{"type":42,"value":533},{"type":37,"tag":78,"props":649,"children":651},{"className":650},[],[652],{"type":42,"value":653},"WP_USERNAME",{"type":42,"value":533},{"type":37,"tag":78,"props":656,"children":658},{"className":657},[],[659],{"type":42,"value":660},"WP_APPLICATION_PASSWORD",{"type":37,"tag":44,"props":662,"children":663},{},[664],{"type":42,"value":665},"The generated script should load these files and then allow process env to override them.\nIf a required key is missing or blank, halt to needs-user with the exact key name. Never\nprint secret values.",{"type":37,"tag":44,"props":667,"children":668},{},[669,671,677,679,685,686,692,693,699],{"type":42,"value":670},"Treat ",{"type":37,"tag":78,"props":672,"children":674},{"className":673},[],[675],{"type":42,"value":676},"migrations\u002F\u003Cproject>\u002Fconfig\u002F*.env",{"type":42,"value":678}," as secret-bearing once they may contain real\nvalues. Do not inspect them with whole-file reads that print contents into tool output;\ncheck only existence and required-key status (",{"type":37,"tag":78,"props":680,"children":682},{"className":681},[],[683],{"type":42,"value":684},"present",{"type":42,"value":533},{"type":37,"tag":78,"props":687,"children":689},{"className":688},[],[690],{"type":42,"value":691},"blank",{"type":42,"value":533},{"type":37,"tag":78,"props":694,"children":696},{"className":695},[],[697],{"type":42,"value":698},"missing",{"type":42,"value":506},{"type":37,"tag":50,"props":701,"children":703},{"id":702},"workflow",[704],{"type":42,"value":705},"Workflow",{"type":37,"tag":707,"props":708,"children":709},"ol",{},[710,715,720,741,767,793,798],{"type":37,"tag":72,"props":711,"children":712},{},[713],{"type":42,"value":714},"Resolve the active project.",{"type":37,"tag":72,"props":716,"children":717},{},[718],{"type":42,"value":719},"Review the import plan and generated code; present the execution plan report and obtain\nacceptance (see above) before any write.",{"type":37,"tag":72,"props":721,"children":722},{},[723,725,731,733,739],{"type":42,"value":724},"Run a safe validation path first when possible, such as dry-run, sample batch, or read-only validation.\nIf media import is in scope and source media URLs are local\u002Fprivate (",{"type":37,"tag":78,"props":726,"children":728},{"className":727},[],[729],{"type":42,"value":730},"localhost",{"type":42,"value":732},",\n",{"type":37,"tag":78,"props":734,"children":736},{"className":735},[],[737],{"type":42,"value":738},"127.0.0.1",{"type":42,"value":740},", Docker-only hosts, etc.), do not treat a successful dry-run as proof that\nlive media import can work. Wix Media import fetches URLs from Wix servers, so the user\nmust either expose the source through a public HTTPS tunnel or skip\u002Fdefer media. This\nis optional and, as far as we know today, only affects media import.",{"type":37,"tag":72,"props":742,"children":743},{},[744,749,751,757,759,765],{"type":37,"tag":137,"props":745,"children":746},{},[747],{"type":42,"value":748},"Run source extraction first",{"type":42,"value":750}," using the generated reader entrypoint (for example\n",{"type":37,"tag":78,"props":752,"children":754},{"className":753},[],[755],{"type":42,"value":756},"node src\u002Fextract-source.js",{"type":42,"value":758},", or an equivalent ",{"type":37,"tag":78,"props":760,"children":762},{"className":761},[],[763],{"type":42,"value":764},"run-import.js --extract-only",{"type":42,"value":766}," mode).\nThis step writes durable source files under the project and must complete before the\nwrite phase.",{"type":37,"tag":72,"props":768,"children":769},{},[770,775,777,783,785,791],{"type":37,"tag":137,"props":771,"children":772},{},[773],{"type":42,"value":774},"Execute the import by running the generated import entrypoint",{"type":42,"value":776}," (for example\n",{"type":37,"tag":78,"props":778,"children":780},{"className":779},[],[781],{"type":42,"value":782},"node src\u002Frun-import.js",{"type":42,"value":784}," or ",{"type":37,"tag":78,"props":786,"children":788},{"className":787},[],[789],{"type":42,"value":790},"node src\u002Frun-import.js --import-only",{"type":42,"value":792},") with credentials\ninjected via config\u002Fenv. The import must read from the extracted files on disk — not by\nre-reading the source into memory, and not by issuing writes through the agent\u002FMCP.",{"type":37,"tag":72,"props":794,"children":795},{},[796],{"type":42,"value":797},"Capture counts, errors, retries, skipped records, and checkpoint information.",{"type":37,"tag":72,"props":799,"children":800},{},[801],{"type":42,"value":802},"Save a durable execution log.",{"type":37,"tag":50,"props":804,"children":806},{"id":805},"localhost-media-before-live-import",[807],{"type":42,"value":808},"Localhost media before live import",{"type":37,"tag":44,"props":810,"children":811},{},[812],{"type":42,"value":813},"When source media URLs are local\u002Fprivate, ask the user to choose one path before live\nmedia writes:",{"type":37,"tag":68,"props":815,"children":816},{},[817,956],{"type":37,"tag":72,"props":818,"children":819},{},[820,822],{"type":42,"value":821},"Expose the source with a public HTTPS tunnel such as ngrok:",{"type":37,"tag":823,"props":824,"children":829},"pre",{"className":825,"code":826,"language":827,"meta":828,"style":828},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","brew install ngrok\nngrok config add-authtoken \"\u003CYOUR_AUTHTOKEN>\"\nngrok http 8090\nexport WP_BASE_URL=https:\u002F\u002F\u003Cid>.ngrok-free.app\n","bash","",[830],{"type":37,"tag":78,"props":831,"children":832},{"__ignoreMap":828},[833,856,891,910],{"type":37,"tag":834,"props":835,"children":838},"span",{"class":836,"line":837},"line",1,[839,845,851],{"type":37,"tag":834,"props":840,"children":842},{"style":841},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[843],{"type":42,"value":844},"brew",{"type":37,"tag":834,"props":846,"children":848},{"style":847},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[849],{"type":42,"value":850}," install",{"type":37,"tag":834,"props":852,"children":853},{"style":847},[854],{"type":42,"value":855}," ngrok\n",{"type":37,"tag":834,"props":857,"children":859},{"class":836,"line":858},2,[860,865,870,875,881,886],{"type":37,"tag":834,"props":861,"children":862},{"style":841},[863],{"type":42,"value":864},"ngrok",{"type":37,"tag":834,"props":866,"children":867},{"style":847},[868],{"type":42,"value":869}," config",{"type":37,"tag":834,"props":871,"children":872},{"style":847},[873],{"type":42,"value":874}," add-authtoken",{"type":37,"tag":834,"props":876,"children":878},{"style":877},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[879],{"type":42,"value":880}," \"",{"type":37,"tag":834,"props":882,"children":883},{"style":847},[884],{"type":42,"value":885},"\u003CYOUR_AUTHTOKEN>",{"type":37,"tag":834,"props":887,"children":888},{"style":877},[889],{"type":42,"value":890},"\"\n",{"type":37,"tag":834,"props":892,"children":894},{"class":836,"line":893},3,[895,899,904],{"type":37,"tag":834,"props":896,"children":897},{"style":841},[898],{"type":42,"value":864},{"type":37,"tag":834,"props":900,"children":901},{"style":847},[902],{"type":42,"value":903}," http",{"type":37,"tag":834,"props":905,"children":907},{"style":906},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[908],{"type":42,"value":909}," 8090\n",{"type":37,"tag":834,"props":911,"children":913},{"class":836,"line":912},4,[914,920,926,931,936,941,946,951],{"type":37,"tag":834,"props":915,"children":917},{"style":916},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[918],{"type":42,"value":919},"export",{"type":37,"tag":834,"props":921,"children":923},{"style":922},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[924],{"type":42,"value":925}," WP_BASE_URL",{"type":37,"tag":834,"props":927,"children":928},{"style":877},[929],{"type":42,"value":930},"=",{"type":37,"tag":834,"props":932,"children":933},{"style":922},[934],{"type":42,"value":935},"https:\u002F\u002F",{"type":37,"tag":834,"props":937,"children":938},{"style":877},[939],{"type":42,"value":940},"\u003C",{"type":37,"tag":834,"props":942,"children":943},{"style":922},[944],{"type":42,"value":945},"id",{"type":37,"tag":834,"props":947,"children":948},{"style":877},[949],{"type":42,"value":950},">",{"type":37,"tag":834,"props":952,"children":953},{"style":922},[954],{"type":42,"value":955},".ngrok-free.app\n",{"type":37,"tag":72,"props":957,"children":958},{},[959],{"type":42,"value":960},"Or skip\u002Fdefer media import and record the effect on hero images, galleries, downloadable\nfiles, and other media-dependent references.",{"type":37,"tag":44,"props":962,"children":963},{},[964],{"type":42,"value":965},"Non-media entities may continue if the execution plan clearly excludes or defers media.",{"type":37,"tag":50,"props":967,"children":969},{"id":968},"artifact-to-create-or-update",[970],{"type":42,"value":971},"Artifact to create or update",{"type":37,"tag":68,"props":973,"children":974},{},[975],{"type":37,"tag":72,"props":976,"children":977},{},[978],{"type":37,"tag":78,"props":979,"children":981},{"className":980},[],[982],{"type":42,"value":983},"migrations\u002F\u003Cproject>\u002Fexecution-log.md",{"type":37,"tag":50,"props":985,"children":987},{"id":986},"minimum-execution-log-contents",[988],{"type":42,"value":989},"Minimum execution log contents",{"type":37,"tag":68,"props":991,"children":992},{},[993,998,1003,1008,1013,1018,1023,1028],{"type":37,"tag":72,"props":994,"children":995},{},[996],{"type":42,"value":997},"run timestamp",{"type":37,"tag":72,"props":999,"children":1000},{},[1001],{"type":42,"value":1002},"command or entrypoint used",{"type":37,"tag":72,"props":1004,"children":1005},{},[1006],{"type":42,"value":1007},"extracted source location \u002F manifest used",{"type":37,"tag":72,"props":1009,"children":1010},{},[1011],{"type":42,"value":1012},"entities processed",{"type":37,"tag":72,"props":1014,"children":1015},{},[1016],{"type":42,"value":1017},"records read, transformed, written, skipped, failed",{"type":37,"tag":72,"props":1019,"children":1020},{},[1021],{"type":42,"value":1022},"retry behavior",{"type":37,"tag":72,"props":1024,"children":1025},{},[1026],{"type":42,"value":1027},"blocking errors",{"type":37,"tag":72,"props":1029,"children":1030},{},[1031],{"type":42,"value":1032},"follow-up remediation",{"type":37,"tag":50,"props":1034,"children":1036},{"id":1035},"guardrails",[1037],{"type":42,"value":1038},"Guardrails",{"type":37,"tag":68,"props":1040,"children":1041},{},[1042,1066,1071,1076],{"type":37,"tag":72,"props":1043,"children":1044},{},[1045,1050,1052,1057,1059,1064],{"type":37,"tag":137,"props":1046,"children":1047},{},[1048],{"type":42,"value":1049},"Import writes go through the executed artifact, not the agent.",{"type":42,"value":1051}," Never perform import\nwrites via ",{"type":37,"tag":78,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":42,"value":434},{"type":42,"value":1058},"\u002FMCP as a substitute for running the script. MCP is\nverification-only here (see the section above). (Setup execution is out of scope for this\nrule — see ",{"type":37,"tag":78,"props":1060,"children":1062},{"className":1061},[],[1063],{"type":42,"value":167},{"type":42,"value":1065},".)",{"type":37,"tag":72,"props":1067,"children":1068},{},[1069],{"type":42,"value":1070},"Prefer dry-runs or sample batches before full import.",{"type":37,"tag":72,"props":1072,"children":1073},{},[1074],{"type":42,"value":1075},"Stop on systemic mapping or write failures rather than amplifying bad writes.",{"type":37,"tag":72,"props":1077,"children":1078},{},[1079],{"type":42,"value":1080},"Preserve enough logging to support replay and debugging.",{"type":37,"tag":1082,"props":1083,"children":1084},"style",{},[1085],{"type":42,"value":1086},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1088,"total":1168},[1089,1103,1109,1120,1135,1145,1156],{"slug":1090,"name":1090,"fn":1091,"description":1092,"org":1093,"tags":1094,"stars":20,"repoUrl":21,"updatedAt":1102},"rp-discovery","discover source platform schema for migration","Discovers and documents the source platform schema (entities, fields, relationships) for a migration project. Use when capturing source structure before mapping to Wix.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1095,1098,1101],{"name":1096,"slug":1097,"type":13},"Data Modeling","data-modeling",{"name":1099,"slug":1100,"type":13},"Documentation","documentation",{"name":18,"slug":19,"type":13},"2026-07-01T08:08:08.302261",{"slug":4,"name":4,"fn":5,"description":6,"org":1104,"tags":1105,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1106,1107,1108],{"name":15,"slug":16,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"slug":167,"name":167,"fn":1110,"description":1111,"org":1112,"tags":1113,"stars":20,"repoUrl":21,"updatedAt":1119},"provision Wix site setup for migration","Verifies and provisions Wix-side setup required before import. Use after codegen when setup-requirements.md must be validated or executed against the target site.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1114,1117,1118],{"name":1115,"slug":1116,"type":13},"Deployment","deployment",{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},"2026-07-01T08:08:04.475894",{"slug":1121,"name":1121,"fn":1122,"description":1123,"org":1124,"tags":1125,"stars":20,"repoUrl":21,"updatedAt":1134},"rp-import-codegen","generate migration code for Wix","Generates migration readers, transforms, and Wix writers from schema and mapping artifacts. Use when producing runnable extract\u002Fimport code under the migration project.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1126,1129,1132,1133],{"name":1127,"slug":1128,"type":13},"Automation","automation",{"name":1130,"slug":1131,"type":13},"Data Engineering","data-engineering",{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},"2026-07-01T08:08:05.755188",{"slug":1136,"name":1136,"fn":1137,"description":1138,"org":1139,"tags":1140,"stars":20,"repoUrl":21,"updatedAt":1144},"rp-mapper","map source entities to Wix targets","Maps discovered source entities and fields to Wix targets and documents lossiness. Use when creating mapping-plan.md and mapping-summary.md after discovery.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1141,1142,1143],{"name":1096,"slug":1097,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},"2026-07-01T08:08:01.958081",{"slug":1146,"name":1146,"fn":1147,"description":1148,"org":1149,"tags":1150,"stars":20,"repoUrl":21,"updatedAt":1155},"rp-orchestration","orchestrate Wix site migrations","Routes RePlatform source-to-Wix migrations to the next workflow step by inspecting migration project artifacts. Use when starting, continuing, or recovering a migration run.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1151,1152,1153,1154],{"name":1127,"slug":1128,"type":13},{"name":1115,"slug":1116,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},"2026-07-01T08:08:09.570887",{"slug":1157,"name":1157,"fn":1158,"description":1159,"org":1160,"tags":1161,"stars":20,"repoUrl":21,"updatedAt":1167},"rp-setup-discovery","set up Wix environment prerequisites","Derives Wix environment prerequisites (apps, collections, schemas) from an approved mapping plan. Use after mapping review and before import code generation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1162,1165,1166],{"name":1163,"slug":1164,"type":13},"Configuration","configuration",{"name":1096,"slug":1097,"type":13},{"name":9,"slug":8,"type":13},"2026-07-01T08:07:59.413698",16,{"items":1170,"total":1292},[1171,1177,1183,1189,1196,1202,1209,1215,1232,1245,1262,1274],{"slug":1090,"name":1090,"fn":1091,"description":1092,"org":1172,"tags":1173,"stars":20,"repoUrl":21,"updatedAt":1102},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1174,1175,1176],{"name":1096,"slug":1097,"type":13},{"name":1099,"slug":1100,"type":13},{"name":18,"slug":19,"type":13},{"slug":4,"name":4,"fn":5,"description":6,"org":1178,"tags":1179,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1180,1181,1182],{"name":15,"slug":16,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"slug":167,"name":167,"fn":1110,"description":1111,"org":1184,"tags":1185,"stars":20,"repoUrl":21,"updatedAt":1119},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1186,1187,1188],{"name":1115,"slug":1116,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"slug":1121,"name":1121,"fn":1122,"description":1123,"org":1190,"tags":1191,"stars":20,"repoUrl":21,"updatedAt":1134},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1192,1193,1194,1195],{"name":1127,"slug":1128,"type":13},{"name":1130,"slug":1131,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"slug":1136,"name":1136,"fn":1137,"description":1138,"org":1197,"tags":1198,"stars":20,"repoUrl":21,"updatedAt":1144},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1199,1200,1201],{"name":1096,"slug":1097,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"slug":1146,"name":1146,"fn":1147,"description":1148,"org":1203,"tags":1204,"stars":20,"repoUrl":21,"updatedAt":1155},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1205,1206,1207,1208],{"name":1127,"slug":1128,"type":13},{"name":1115,"slug":1116,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"slug":1157,"name":1157,"fn":1158,"description":1159,"org":1210,"tags":1211,"stars":20,"repoUrl":21,"updatedAt":1167},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1212,1213,1214],{"name":1163,"slug":1164,"type":13},{"name":1096,"slug":1097,"type":13},{"name":9,"slug":8,"type":13},{"slug":1216,"name":1216,"fn":1217,"description":1218,"org":1219,"tags":1220,"stars":20,"repoUrl":21,"updatedAt":1231},"rp-source-wordpress","capture data from WordPress and WooCommerce","WordPress and WooCommerce source adapter: REST capture, auth, pagination, and read contract for codegen. Use when the source platform is WordPress or WooCommerce.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1221,1222,1225,1228],{"name":1130,"slug":1131,"type":13},{"name":1223,"slug":1224,"type":13},"REST API","rest-api",{"name":1226,"slug":1227,"type":13},"WooCommerce","woocommerce",{"name":1229,"slug":1230,"type":13},"WordPress","wordpress","2026-07-01T08:08:00.69949",{"slug":496,"name":496,"fn":1233,"description":1234,"org":1235,"tags":1236,"stars":20,"repoUrl":21,"updatedAt":1244},"validate Wix API write operations","Wix target adapter with verified write primitives (wix-writers.js) and contract tests. Use when vendoring Wix writers, validating API shapes, or Wix provisioning mechanics.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1237,1240,1243],{"name":1238,"slug":1239,"type":13},"API Development","api-development",{"name":1241,"slug":1242,"type":13},"Testing","testing",{"name":9,"slug":8,"type":13},"2026-07-01T08:08:03.226054",{"slug":1246,"name":1246,"fn":1247,"description":1248,"org":1249,"tags":1250,"stars":20,"repoUrl":21,"updatedAt":1261},"wix-app","build Wix CLI app extensions","Build and review Wix CLI app extensions — dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins, embedded scripts, backend APIs, backend events, service plugins, data collections, and App Market readiness. Use when building ANY feature or extension for a Wix CLI app or preparing a Wix app for App Market review. Triggers on: add, build, create, implement, help me, dashboard, widget, plugin, backend, API, event, collection, embedded script, service plugin, Editor React component, checkout, shipping, tax, discount, SPI, CMS, schema, tracking, popup, admin panel, menu item, modal, validate, test, verify, register extension, App Market, app review, submission readiness.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1251,1254,1257,1260],{"name":1252,"slug":1253,"type":13},"Backend","backend",{"name":1255,"slug":1256,"type":13},"CLI","cli",{"name":1258,"slug":1259,"type":13},"Frontend","frontend",{"name":9,"slug":8,"type":13},"2026-04-16T04:58:00.157961",{"slug":1263,"name":1263,"fn":1264,"description":1265,"org":1266,"tags":1267,"stars":20,"repoUrl":21,"updatedAt":1273},"wix-auth","authenticate with Wix APIs","Authenticate with Wix to obtain an access token for calling Wix APIs. Use when an agent needs a valid Wix access token and has none, or when the stored token is expired.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1268,1269,1272],{"name":1238,"slug":1239,"type":13},{"name":1270,"slug":1271,"type":13},"Auth","auth",{"name":9,"slug":8,"type":13},"2026-07-07T06:47:46.95263",{"slug":1275,"name":1275,"fn":1276,"description":1277,"org":1278,"tags":1279,"stars":20,"repoUrl":21,"updatedAt":1291},"wix-design-system","build UIs with Wix Design System","Wix Design System component reference. Use when building UI with @wix\u002Fdesign-system, choosing components, checking props and examples, or writing tests with component testkits. Triggers on \"what component\", \"how do I make\", \"WDS\", \"show me props\", \"testkit\", \"driver\", or component names like Button, Card, Modal, Box, Text.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1280,1283,1286,1287,1290],{"name":1281,"slug":1282,"type":13},"Design","design",{"name":1284,"slug":1285,"type":13},"Design System","design-system",{"name":1258,"slug":1259,"type":13},{"name":1288,"slug":1289,"type":13},"UI Components","ui-components",{"name":9,"slug":8,"type":13},"2026-04-29T05:33:44.561687",17]