@wix/agent-skills 1.33.1 → 1.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/package.json +1 -1
- package/skills/wix-export/SKILL.md +83 -0
- package/skills/wix-harmony-editor/.publish-manifest.json +8 -0
- package/skills/wix-harmony-editor/COPY-SITE.md +494 -0
- package/skills/wix-harmony-editor/SKILL.md +317 -0
- package/skills/wix-harmony-editor/scripts/copy/build-description.mjs +249 -0
- package/skills/wix-harmony-editor/scripts/copy/check-description.mjs +225 -0
- package/skills/wix-harmony-editor/scripts/copy/check-mirror.mjs +89 -0
- package/skills/wix-harmony-editor/scripts/copy/compare-preview.mjs +76 -0
- package/skills/wix-harmony-editor/scripts/copy/deploy-description.mjs +212 -0
- package/skills/wix-harmony-editor/scripts/copy/desc-hash.mjs +44 -0
- package/skills/wix-harmony-editor/scripts/copy/editor-run.mjs +45 -0
- package/skills/wix-harmony-editor/scripts/copy/export-page.mjs +53 -0
- package/skills/wix-harmony-editor/scripts/copy/find-interactions.mjs +76 -0
- package/skills/wix-harmony-editor/scripts/copy/hide-scrollbars.mjs +16 -0
- package/skills/wix-harmony-editor/scripts/copy/import-media.mjs +150 -0
- package/skills/wix-harmony-editor/scripts/copy/link-url.mjs +27 -0
- package/skills/wix-harmony-editor/scripts/copy/lint-api.mjs +56 -0
- package/skills/wix-harmony-editor/scripts/copy/measure-source.mjs +211 -0
- package/skills/wix-harmony-editor/scripts/copy/merge-mirrors.mjs +29 -0
- package/skills/wix-harmony-editor/scripts/copy/mirror-site.mjs +92 -0
- package/skills/wix-harmony-editor/scripts/copy/mobile-stage.mjs +56 -0
- package/skills/wix-harmony-editor/scripts/copy/preview-widths.mjs +73 -0
- package/skills/wix-harmony-editor/scripts/copy/render-plate.mjs +67 -0
- package/skills/wix-harmony-editor/scripts/copy/serve-mirror.mjs +102 -0
- package/skills/wix-harmony-editor/scripts/copy/snapshot-capabilities.mjs +40 -0
- package/skills/wix-harmony-editor/scripts/copy/split-sections.mjs +191 -0
- package/skills/wix-harmony-editor/scripts/copy/upload-media-manager.mjs +61 -0
- package/skills/wix-harmony-editor/scripts/launch.sh +359 -0
- package/skills/wix-headless/SKILL.md +7 -2
- package/skills/wix-headless/references/CAPABILITIES.md +6 -1
- package/skills/wix-headless/references/DISCOVERY.md +2 -1
- package/skills/wix-headless/references/SDK_HANDOFF.md +6 -1
- package/skills/wix-headless/references/SEED.md +3 -2
- package/skills/wix-headless/references/SETUP.md +1 -0
- package/skills/wix-headless/references/inline-recipes/experience-donations.md +102 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-donations.md +146 -0
- package/skills/wix-headless/references/inline-recipes/setup-donations.md +15 -0
- package/skills/wix-headless/references/managed/CREATE.md +1 -1
- package/skills/wix-headless-kit/SKILL.md +110 -21
- package/skills/wix-headless-kit/guides/api-run.md +15 -13
- package/skills/wix-headless-kit/guides/existing-site.md +31 -0
- package/skills/wix-headless-kit/guides/migration.md +49 -17
- package/skills/wix-headless-kit/install/agents-md.mjs +1 -1
- package/skills/wix-headless-kit/install/context.mjs +61 -6
- package/skills/wix-headless-kit/install/pins.json +1 -1
- package/skills/wix-headless-kit/install/setup.mjs +107 -12
- package/skills/wix-headless-replatform/.publish-manifest.json +8 -0
- package/skills/wix-headless-replatform/SKILL.md +116 -0
- package/skills/wix-headless-replatform/agents/openai.yaml +6 -0
- package/skills/wix-headless-replatform/references/control-and-visual-fidelity-contract.md +43 -0
- package/skills/wix-headless-replatform/references/extraction-schema.md +187 -0
- package/skills/wix-headless-replatform/references/interaction-runtime-contract.md +137 -0
- package/skills/wix-headless-replatform/references/layout-blueprint-contract.md +41 -0
- package/skills/wix-headless-replatform/references/output-contract.md +93 -0
- package/skills/wix-headless-replatform/references/post-build-gap-contract.md +125 -0
- package/skills/wix-headless-replatform/references/qa-checklist.md +83 -0
- package/skills/wix-headless-replatform/references/safety.md +19 -0
- package/skills/wix-headless-replatform/references/ui-normalization-contract.md +70 -0
- package/skills/wix-headless-replatform/references/workflow.md +157 -0
- package/skills/wix-headless-replatform/registry/README.md +20 -0
- package/skills/wix-headless-replatform/registry/approvals/button/shadcn-default-ac60ef5.json +28 -0
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/button.tsx +54 -0
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/capabilities.json +60 -0
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/contract.md +48 -0
- package/skills/wix-headless-replatform/registry/licenses/shadcn-ui-ac60ef5-MIT.txt +21 -0
- package/skills/wix-headless-replatform/registry/registry.json +36 -0
- package/skills/wix-headless-replatform/resources/rp-facelift/SKILL.md +32 -0
- package/skills/wix-headless-replatform/resources/rp-project-context/SKILL.md +62 -0
- package/skills/wix-headless-replatform/resources/rp-qa-gap-loop/SKILL.md +64 -0
- package/skills/wix-headless-replatform/resources/rp-source-evidence/SKILL.md +42 -0
- package/skills/wix-headless-replatform/resources/rp-ui-implementation/SKILL.md +73 -0
- package/skills/wix-headless-replatform/schemas/build-plan.schema.json +10 -0
- package/skills/wix-headless-replatform/schemas/candidate.schema.json +19 -0
- package/skills/wix-headless-replatform/schemas/common.schema.json +33 -0
- package/skills/wix-headless-replatform/schemas/decision-patch.schema.json +10 -0
- package/skills/wix-headless-replatform/schemas/decision-request.schema.json +10 -0
- package/skills/wix-headless-replatform/schemas/extraction-gap.schema.json +28 -0
- package/skills/wix-headless-replatform/schemas/extraction-manifest.schema.json +34 -0
- package/skills/wix-headless-replatform/schemas/final-report.schema.json +10 -0
- package/skills/wix-headless-replatform/schemas/foundation.schema.json +11 -0
- package/skills/wix-headless-replatform/schemas/metadata.schema.json +11 -0
- package/skills/wix-headless-replatform/schemas/observation-packet.schema.json +17 -0
- package/skills/wix-headless-replatform/schemas/page-capture.schema.json +11 -0
- package/skills/wix-headless-replatform/schemas/page-resolution.schema.json +33 -0
- package/skills/wix-headless-replatform/schemas/shared-chrome.schema.json +11 -0
- package/skills/wix-headless-replatform/schemas/unit.schema.json +40 -0
- package/skills/wix-headless-replatform/scripts/assemble-extraction.mjs +844 -0
- package/skills/wix-headless-replatform/scripts/benchmark-extraction.mjs +163 -0
- package/skills/wix-headless-replatform/scripts/browser-extraction-preflight.mjs +42 -0
- package/skills/wix-headless-replatform/scripts/build-extracted-homepage.mjs +228 -0
- package/skills/wix-headless-replatform/scripts/clear-wix-starter.mjs +87 -0
- package/skills/wix-headless-replatform/scripts/create-wix-project.mjs +505 -0
- package/skills/wix-headless-replatform/scripts/discover-urls.mjs +142 -0
- package/skills/wix-headless-replatform/scripts/extract-assets.mjs +140 -0
- package/skills/wix-headless-replatform/scripts/extract-design-system.mjs +637 -0
- package/skills/wix-headless-replatform/scripts/extract-interactions.mjs +1903 -0
- package/skills/wix-headless-replatform/scripts/extract-page.mjs +2461 -0
- package/skills/wix-headless-replatform/scripts/extract-seo.mjs +25 -0
- package/skills/wix-headless-replatform/scripts/extract-tokens.mjs +63 -0
- package/skills/wix-headless-replatform/scripts/finalize-extraction-report.mjs +126 -0
- package/skills/wix-headless-replatform/scripts/finalize-gap-review.mjs +180 -0
- package/skills/wix-headless-replatform/scripts/finalize-gap-review.test.mjs +98 -0
- package/skills/wix-headless-replatform/scripts/finalize-migration-website.mjs +103 -0
- package/skills/wix-headless-replatform/scripts/generate-control-state-contract.mjs +176 -0
- package/skills/wix-headless-replatform/scripts/generate-design-md.mjs +261 -0
- package/skills/wix-headless-replatform/scripts/generate-extraction-validators.mjs +25 -0
- package/skills/wix-headless-replatform/scripts/generate-invoice-download-backend.mjs +342 -0
- package/skills/wix-headless-replatform/scripts/generate-layout-blueprint.mjs +140 -0
- package/skills/wix-headless-replatform/scripts/generate-repeater-cms.mjs +22 -0
- package/skills/wix-headless-replatform/scripts/generate-route-plan.mjs +143 -0
- package/skills/wix-headless-replatform/scripts/generate-scene-contract.mjs +288 -0
- package/skills/wix-headless-replatform/scripts/generate-ui-normalization.mjs +266 -0
- package/skills/wix-headless-replatform/scripts/generate-visual-assets.mjs +111 -0
- package/skills/wix-headless-replatform/scripts/lib/browser-tooling.mjs +570 -0
- package/skills/wix-headless-replatform/scripts/lib/common.mjs +329 -0
- package/skills/wix-headless-replatform/scripts/lib/component-capabilities.mjs +121 -0
- package/skills/wix-headless-replatform/scripts/lib/component-registry.mjs +282 -0
- package/skills/wix-headless-replatform/scripts/lib/content-boundary.mjs +61 -0
- package/skills/wix-headless-replatform/scripts/lib/extraction-contract.mjs +374 -0
- package/skills/wix-headless-replatform/scripts/lib/extraction-detectors.mjs +243 -0
- package/skills/wix-headless-replatform/scripts/lib/extraction-validators.generated.mjs +1139 -0
- package/skills/wix-headless-replatform/scripts/lib/font-contract.mjs +326 -0
- package/skills/wix-headless-replatform/scripts/lib/frontend-automation-state.mjs +184 -0
- package/skills/wix-headless-replatform/scripts/lib/gap-analysis.mjs +396 -0
- package/skills/wix-headless-replatform/scripts/lib/html-extract.mjs +168 -0
- package/skills/wix-headless-replatform/scripts/lib/interaction-bootstrap.mjs +10 -0
- package/skills/wix-headless-replatform/scripts/lib/interaction-runtime.mjs +194 -0
- package/skills/wix-headless-replatform/scripts/lib/interaction-timeline.mjs +348 -0
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/classifiers.mjs +141 -0
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/geometry.mjs +43 -0
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/vocabulary.mjs +18 -0
- package/skills/wix-headless-replatform/scripts/lib/ui-normalization.css +64 -0
- package/skills/wix-headless-replatform/scripts/optimize-svg.mjs +31 -0
- package/skills/wix-headless-replatform/scripts/post-build-gap.mjs +358 -0
- package/skills/wix-headless-replatform/scripts/provision-repeater-cms.mjs +25 -0
- package/skills/wix-headless-replatform/scripts/record-gap-decision.mjs +39 -0
- package/skills/wix-headless-replatform/scripts/replay-extraction.mjs +107 -0
- package/skills/wix-headless-replatform/scripts/resolve-home-page.mjs +96 -0
- package/skills/wix-headless-replatform/scripts/site-clone.mjs +658 -0
- package/skills/wix-headless-replatform/scripts/validate-font-contract.mjs +29 -0
- package/skills/wix-headless-replatform/scripts/verify-interactions.mjs +669 -0
- package/skills/wix-headless-replatform/scripts/visual-qa.mjs +370 -0
- package/skills/wix-headless-templates/donations/INSTRUCTIONS.md +37 -24
- package/skills/wix-headless-templates/donations/app/components/donations/DonateForm.tsx +49 -23
- package/skills/wix-headless-templates/donations/app/components/donations/DonationReceipt.tsx +6 -5
- package/skills/wix-headless-templates/donations/app/components/donations/GoalProgress.tsx +5 -5
- package/skills/wix-headless-templates/donations/app/wix/donations/campaigns.ts +4 -4
- package/skills/wix-headless-templates/donations/app/wix/donations/donate.ts +7 -3
- package/skills/wix-headless-templates/donations/app/wix/donations/donation-store.ts +2 -2
- package/skills/wix-headless-templates/donations/app/wix/donations/donations-core.ts +12 -9
- package/skills/wix-headless-templates/donations/project/src/components/donations/DonateForm.tsx +49 -23
- package/skills/wix-headless-templates/donations/project/src/components/donations/DonationReceipt.tsx +6 -5
- package/skills/wix-headless-templates/donations/project/src/components/donations/GoalProgress.tsx +5 -5
- package/skills/wix-headless-templates/donations/project/src/wix/donations/campaigns.ts +4 -4
- package/skills/wix-headless-templates/donations/project/src/wix/donations/donate.ts +7 -3
- package/skills/wix-headless-templates/donations/project/src/wix/donations/donation-store.ts +2 -2
- package/skills/wix-headless-templates/donations/project/src/wix/donations/donations-core.ts +12 -9
- package/skills/wix-headless-templates/donations/rest/campaigns.ts +4 -4
- package/skills/wix-headless-templates/donations/rest/donate.ts +7 -3
- package/skills/wix-headless-templates/donations/seed/SEED.md +12 -7
- package/skills/wix-headless-templates/donations/tests/donation-contract.test.mjs +71 -0
- package/skills/wix-headless-templates/donations/tests/donation-form.test.cjs +137 -0
- package/skills/wix-headless-templates/restaurants/INSTRUCTIONS.md +28 -14
- package/skills/wix-headless-templates/restaurants/app/components/restaurants/OrderCartDrawer.tsx +87 -5
- package/skills/wix-headless-templates/restaurants/app/hooks/restaurants/useOrderCart.ts +9 -1
- package/skills/wix-headless-templates/restaurants/app/wix/restaurants/order-store.ts +33 -4
- package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering-core.ts +100 -5
- package/skills/wix-headless-templates/restaurants/app/wix/restaurants/ordering.ts +101 -15
- package/skills/wix-headless-templates/restaurants/app/wix/restaurants/types.ts +35 -1
- package/skills/wix-headless-templates/restaurants/project/src/components/restaurants/OrderCartDrawer.tsx +87 -5
- package/skills/wix-headless-templates/restaurants/project/src/hooks/restaurants/useOrderCart.ts +9 -1
- package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/order-store.ts +33 -4
- package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering-core.ts +100 -5
- package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/ordering.ts +101 -15
- package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/types.ts +35 -1
- package/skills/wix-headless-templates/restaurants/rest/ordering.ts +91 -14
- package/skills/wix-import/SKILL.md +90 -0
- package/skills/wix-manage/SKILL.md +14 -4
- package/skills/wix-manage/references/blog/how-to-create-blog-posts.md +2 -0
- package/skills/wix-manage/references/dashboard-navigation/dashboard-navigation.md +2 -1
- package/skills/wix-manage/references/dashboard-navigation/routes.json +249 -0
- package/skills/wix-manage/references/donations/create-and-update-donation-campaigns.md +139 -0
- package/skills/wix-manage/references/events/events-dashboard-navigation.md +81 -0
- package/skills/wix-manage/references/seo/manage-content-plan.md +207 -222
- package/skills/wix-manage/references/sites/manage-oauth-apps.md +1 -0
- package/skills/wix-manage/references/sites/upload-static-site.md +128 -8
- package/skills/wix-readme/SKILL.md +166 -0
- package/skills/wix-replatform/.publish-manifest.json +5 -5
- package/skills/wix-replatform/CLI.md +162 -0
- package/skills/wix-replatform/README.md +52 -0
- package/skills/wix-replatform/SKILL.md +229 -684
- package/skills/wix-replatform/console/account.css +1 -0
- package/skills/wix-replatform/console/app.css +1 -0
- package/skills/wix-replatform/console/app.js +117 -0
- package/skills/wix-replatform/console/index.html +4 -0
- package/skills/wix-replatform/console/json.css +11 -0
- package/skills/wix-replatform/lib/agent-adapters/index.js +71 -0
- package/skills/wix-replatform/lib/app-page-routing.js +75 -0
- package/skills/wix-replatform/lib/artifact-freshness.js +11 -1
- package/skills/wix-replatform/lib/blocked-data-requests.js +427 -0
- package/skills/wix-replatform/lib/census-reconciliation.js +426 -0
- package/skills/wix-replatform/lib/completion-report.js +1393 -13
- package/skills/wix-replatform/lib/config-env.js +85 -11
- package/skills/wix-replatform/lib/confirmed-pictures.js +212 -0
- package/skills/wix-replatform/lib/dependency-readiness.js +423 -0
- package/skills/wix-replatform/lib/dependency-recovery.js +21 -0
- package/skills/wix-replatform/lib/destination-choice.js +163 -0
- package/skills/wix-replatform/lib/destination-handoff.js +62 -0
- package/skills/wix-replatform/lib/destination-http.js +81 -0
- package/skills/wix-replatform/lib/destination-route.js +98 -0
- package/skills/wix-replatform/lib/destination.js +919 -0
- package/skills/wix-replatform/lib/discovered-census.js +231 -0
- package/skills/wix-replatform/lib/discovered-set-status.js +255 -0
- package/skills/wix-replatform/lib/document-url-guard.js +203 -0
- package/skills/wix-replatform/lib/entity-qa-attestation.js +339 -0
- package/skills/wix-replatform/lib/entity-verification.js +18 -0
- package/skills/wix-replatform/lib/execution-capability.js +120 -0
- package/skills/wix-replatform/lib/execution-log.js +170 -0
- package/skills/wix-replatform/lib/execution-manifest.js +20 -2
- package/skills/wix-replatform/lib/execution-state.js +22 -0
- package/skills/wix-replatform/lib/expectations-ledger.js +96 -0
- package/skills/wix-replatform/lib/generated-plugin-handoff.js +140 -0
- package/skills/wix-replatform/lib/import-readiness-contract.js +23 -0
- package/skills/wix-replatform/lib/import-recovery.js +800 -6
- package/skills/wix-replatform/lib/imported-redirect-targets.js +608 -0
- package/skills/wix-replatform/lib/internal-link-reconciliation.js +166 -0
- package/skills/wix-replatform/lib/link-audit.js +173 -0
- package/skills/wix-replatform/lib/link-census.js +194 -0
- package/skills/wix-replatform/lib/link-plan.js +148 -0
- package/skills/wix-replatform/lib/link-verification.js +274 -0
- package/skills/wix-replatform/lib/link-write-journal.js +42 -0
- package/skills/wix-replatform/lib/local-state.js +869 -30
- package/skills/wix-replatform/lib/member-completion.js +658 -0
- package/skills/wix-replatform/lib/member-crosswalk.js +69 -0
- package/skills/wix-replatform/lib/member-outcome-registry.js +265 -0
- package/skills/wix-replatform/lib/migration-completion.js +311 -0
- package/skills/wix-replatform/lib/operator-identity.js +47 -0
- package/skills/wix-replatform/lib/orchestration-decisions.js +248 -0
- package/skills/wix-replatform/lib/orchestration-preflight.js +401 -19
- package/skills/wix-replatform/lib/orchestration-router.js +608 -32
- package/skills/wix-replatform/lib/orchestration-state.js +188 -12
- package/skills/wix-replatform/lib/order-reference-readiness.js +30 -0
- package/skills/wix-replatform/lib/payments-outcome-registry.js +200 -0
- package/skills/wix-replatform/lib/plugin-cms-fallback.js +618 -0
- package/skills/wix-replatform/lib/preservation-approval-stamp.js +54 -0
- package/skills/wix-replatform/lib/product-media-deferral.js +96 -0
- package/skills/wix-replatform/lib/progress-log.js +19 -3
- package/skills/wix-replatform/lib/read-back-approval.js +184 -0
- package/skills/wix-replatform/lib/read-back-comparison.js +136 -0
- package/skills/wix-replatform/lib/read-back-contract.js +243 -0
- package/skills/wix-replatform/lib/read-back-extract.js +118 -0
- package/skills/wix-replatform/lib/read-back-gate.js +734 -0
- package/skills/wix-replatform/lib/read-back-reads.js +94 -0
- package/skills/wix-replatform/lib/read-back-state.js +107 -0
- package/skills/wix-replatform/lib/read-back-summary.js +81 -0
- package/skills/wix-replatform/lib/rerun-conflicts.js +334 -0
- package/skills/wix-replatform/lib/run-controller.js +401 -0
- package/skills/wix-replatform/lib/seo-outcome-registry.js +45 -0
- package/skills/wix-replatform/lib/setup-verification.js +148 -0
- package/skills/wix-replatform/lib/source-access.js +231 -0
- package/skills/wix-replatform/lib/source-coverage.js +1130 -0
- package/skills/wix-replatform/lib/source-secrets.js +277 -0
- package/skills/wix-replatform/lib/structured-link-patch.js +59 -0
- package/skills/wix-replatform/lib/task-state.js +110 -0
- package/skills/wix-replatform/lib/url-preservation-report.js +319 -0
- package/skills/wix-replatform/lib/url-preservation-state.js +349 -1
- package/skills/wix-replatform/lib/url-redirect-plan.js +728 -0
- package/skills/wix-replatform/lib/url-verification.js +315 -0
- package/skills/wix-replatform/lib/user-action-effects.js +42 -0
- package/skills/wix-replatform/lib/user-actions.js +264 -0
- package/skills/wix-replatform/lib/website-handoff.js +1220 -0
- package/skills/wix-replatform/lib/wix-client-callers.js +54 -0
- package/skills/wix-replatform/lib/wix-dashboard-url.js +35 -0
- package/skills/wix-replatform/lib/write-verification-state.js +92 -0
- package/skills/wix-replatform/lib/write-verification.js +274 -0
- package/skills/wix-replatform/resources/rp-destination/SKILL.md +137 -0
- package/skills/wix-replatform/resources/rp-discovery/SKILL.md +189 -16
- package/skills/wix-replatform/resources/rp-discovery/scripts/promote-source-coverage.js +47 -0
- package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +869 -29
- package/skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js +70 -0
- package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +195 -29
- package/skills/wix-replatform/resources/rp-execute-setup/scripts/execute-setup.js +442 -0
- package/skills/wix-replatform/resources/rp-execution-policy/SKILL.md +112 -0
- package/skills/wix-replatform/resources/rp-execution-policy/lib/coupon-currency-plan-report.js +143 -0
- package/skills/wix-replatform/resources/rp-execution-policy/lib/payments-report.js +244 -0
- package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +2082 -38
- package/skills/wix-replatform/resources/rp-mapper/SKILL.md +528 -11
- package/skills/wix-replatform/resources/rp-mapper/lib/structure-bridge-planning.js +303 -0
- package/skills/wix-replatform/resources/rp-mapper/scripts/coverage-reconcile.js +88 -0
- package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +6 -5
- package/skills/wix-replatform/resources/rp-preflight/SKILL.md +40 -0
- package/skills/wix-replatform/resources/rp-project-intake/SKILL.md +55 -0
- package/skills/wix-replatform/resources/rp-quick-runtime/SKILL.md +60 -0
- package/skills/wix-replatform/resources/rp-quick-runtime/lib/import-progress.js +89 -0
- package/skills/wix-replatform/resources/rp-quick-runtime/lib/limit-recovery.js +36 -0
- package/skills/wix-replatform/resources/rp-quick-shopify/SKILL.md +123 -0
- package/skills/wix-replatform/resources/rp-quick-shopify/quick-mode.json +124 -0
- package/skills/wix-replatform/resources/rp-quick-shopify/scripts/quick-mode.js +522 -0
- package/skills/wix-replatform/resources/rp-quick-woocommerce/SKILL.md +56 -0
- package/skills/wix-replatform/resources/rp-quick-woocommerce/quick-mode.json +91 -0
- package/skills/wix-replatform/resources/rp-quick-woocommerce/scripts/quick-mode.js +255 -0
- package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +80 -10
- package/skills/wix-replatform/resources/rp-setup-discovery/scripts/quick-setup-plan.js +44 -0
- package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +3 -0
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
- package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +21 -1
- package/skills/wix-replatform/resources/rp-source-inputs/SKILL.md +66 -0
- package/skills/wix-replatform/resources/rp-source-sfcc/SKILL.md +153 -0
- package/skills/wix-replatform/resources/rp-source-shopify/SKILL.md +394 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/discovery-reads.js +200 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/import-findings.js +34 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk-sqlite-worker.js +44 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk.js +1470 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-cli.js +446 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-gift-cards.js +474 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-protected-fields.js +879 -0
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-session.js +426 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/articles.graphql +24 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/blogs.graphql +18 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/collections.graphql +40 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/customers.graphql +76 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/delivery-profiles.graphql +51 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/discounts.graphql +35 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/files.graphql +20 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/gift-cards.graphql +18 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/inventory.graphql +31 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/locations.graphql +21 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/menus.graphql +21 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/metaobjects.graphql +30 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-core.graphql +150 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-fulfillments.graphql +36 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-refunds.graphql +48 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/pages.graphql +20 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-address.graphql +8 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-email.graphql +6 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-name.graphql +8 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-phone.graphql +8 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-address.graphql +12 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-email.graphql +6 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-name.graphql +13 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-phone.graphql +13 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/products.graphql +73 -0
- package/skills/wix-replatform/resources/rp-source-shopify/queries/url-redirects.graphql +13 -0
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-discovery.js +693 -0
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-extract.js +283 -0
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-gift-card-remedy.js +191 -0
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-session-check.js +115 -0
- package/skills/wix-replatform/resources/rp-source-shopify/source-schema.example.json +201 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/PLUGIN-READ-PLANS.md +146 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +736 -22
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/blocked-data-handlers.js +73 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.js +115 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.test-fixture.js +91 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/coupon-discovery.js +440 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/currency-gate.js +125 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.js +252 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.json +183 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-summary.mjs +333 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/invoice-discovery.js +426 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-disposition.js +400 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-entity-read-plan.js +633 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-knowledge.js +1127 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.js +194 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.json +100 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/sampled-ids-batch.js +157 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/secret-value-guard.js +234 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/store-currency.js +101 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/structure-bridge-reader.js +755 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.js +1074 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.test-fixture.js +149 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/woo-inventory.js +25 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +204 -9
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-image-url.js +186 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-plugin-detect.js +1422 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-redirect-sources.js +343 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +262 -26
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/yoast-product-seo-evidence.js +272 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/README.md +373 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/advanced-custom-fields.json +101 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/back-in-stock-notifier-for-woocommerce.json +81 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/capabilities-pending-decision.json +128 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/cms-fallback-eligible.json +18 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/contact-form-7.json +104 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/facebook-for-woocommerce.json +44 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/fingerprint-aliases.json +49 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/free-gifts-for-woocommerce.json +94 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/index.json +863 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mailpoet.json +52 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/membership-for-woocommerce.json +161 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mwb-bookings-for-woocommerce.json +180 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/no-migration-needed.json +286 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pricing-deals-for-woocommerce.json +79 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/product-extras-for-woocommerce.json +120 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pw-woocommerce-gift-cards.json +128 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/requires-development.json +88 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seo-by-rank-math.json +80 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seriously-simple-podcasting.json +46 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/strong-testimonials.json +55 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/subscriptions-for-woocommerce.json +99 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/tablepress.json +55 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/the-events-calendar.json +160 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/ti-woocommerce-wishlist.json +81 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-checkout-field-editor-pro.json +60 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-discount-rules.json +74 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-product-bundle.json +75 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-gift-cards.json +60 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-other-payment-gateway.json +44 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-pdf-invoices-packing-slips.json +57 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-product-addon.json +141 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-progressive-discounts.json +54 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wordpress-seo.json +158 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpc-composite-products.json +97 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpforms-lite.json +86 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/capture-store-settings.js +90 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge-validate.js +51 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge.js +103 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +1668 -33
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-plugin-inventory.js +273 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/secret-value-patterns.v1.json +11 -0
- package/skills/wix-replatform/resources/rp-source-wordpress/sub-parts.json +13 -0
- package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +446 -32
- package/skills/wix-replatform/resources/rp-target-wix/app-page-routing-capabilities.json +36 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +38 -2
- package/skills/wix-replatform/resources/rp-target-wix/domains/SERVICE-PLUGINS.md +322 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/docs-survey.json +70 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +19 -9
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +42 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +54 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +66 -10
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +38 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/docs-survey.json +332 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/domain.json +75 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/booking.json +181 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service-add-on.json +130 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service.json +180 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/docs-survey.json +161 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +15 -4
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +39 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +47 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +7 -1
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/docs-survey.json +204 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +17 -4
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +159 -15
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +80 -12
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +48 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/docs-survey.json +306 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +30 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/delivery-profile.json +171 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/discount-rule.json +182 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-applied-discount.json +129 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-invoice-document.json +192 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item-options.json +123 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +60 -12
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-merchant-note.json +112 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-payment.json +191 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +140 -13
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +383 -18
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/pickup-location.json +122 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/shipping-option.json +98 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/wishlist-item.json +86 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/docs-survey.json +128 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/domain.json +38 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/category.json +73 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/event.json +107 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/registration-form.json +89 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/rsvp.json +118 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/ticket-definition.json +93 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/docs-survey.json +86 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/domain.json +56 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form-submission.json +121 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form.json +134 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/docs-survey.json +41 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/domain.json +50 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card-product.json +87 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card.json +130 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +914 -24
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/docs-survey.json +41 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +14 -4
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +45 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +41 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/docs-survey.json +119 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +13 -3
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +41 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/custom-field.json +82 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member-about.json +77 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +165 -13
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/docs-survey.json +41 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/domain.json +46 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan-order.json +137 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan.json +133 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/docs-survey.json +7 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/domain.json +36 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/amazon-shop-connect.json +71 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/ebay-shop-connect.json +67 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/google-youtube-connect.json +72 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/meta-catalog-connect.json +74 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/pinterest-catalog-connect.json +69 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/tiktok-catalog-connect.json +61 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +28 -1
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/docs-survey.json +109 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/domain.json +73 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/item-seo-tags.json +148 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/seo-pattern.json +91 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/site-seo-tags.json +79 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/docs-survey.json +32 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/domain.json +49 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/entities/business-contact.json +103 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/docs-survey.json +203 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +27 -10
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/back-in-stock-request.json +119 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/brand.json +111 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +52 -8
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +214 -10
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +93 -13
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-customization.json +111 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +52 -10
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +145 -14
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/promotion.json +84 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/review.json +178 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/subscription-product.json +87 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/docs-survey.json +106 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/domain.json +64 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/manual-tax-mapping.json +119 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-group.json +94 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-region.json +113 -0
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-settings.json +65 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-author-attribution.js +165 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-client.js +60 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-duplicates.js +201 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-ledger.js +306 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-report.js +229 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-stage.js +55 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build.js +715 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-media.js +567 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/bulk-results.js +73 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/contact-extended-fields.js +194 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/contact-import.js +133 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +13 -4
- package/skills/wix-replatform/resources/rp-target-wix/lib/coupon-redemption-drift.js +491 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/customer-member.js +104 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/data-extension-schema.js +673 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +453 -2
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-balance-reconciliation.js +119 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-build.js +566 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-redemption-build.js +249 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-applied-discount-build.js +63 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-buyer.js +187 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-channel-build.js +64 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-history.js +1027 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-invoice-contract.js +90 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-payment-mapping.js +420 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/pricing-plan-definition.js +177 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/product-import.js +151 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/product-seo.js +723 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/seo-redirects.js +353 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-build.js +1437 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-option-stage.js +354 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/store-config-build.js +134 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-category-attach.js +221 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-inventory.js +248 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +86 -3
- package/skills/wix-replatform/resources/rp-target-wix/lib/tax-build.js +231 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/url-mapper-transport.js +28 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/value-utils.js +14 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/variant-correlation.js +34 -0
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +166 -15
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +19 -2
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +4079 -257
- package/skills/wix-replatform/resources/rp-target-wix/lib/write-verification.js +3 -0
- package/skills/wix-replatform/resources/rp-target-wix/scripts/docs-survey-sync.js +150 -0
- package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +40 -2
- package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +6 -1
- package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +148 -8
- package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +83 -15
- package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +1119 -215
- package/skills/wix-replatform/resources/rp-telemetry/lib/transcript-digest.js +318 -0
- package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +2 -2
- package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +106 -4
- package/skills/wix-replatform/resources/rp-website-continuation/SKILL.md +94 -0
- package/skills/wix-replatform/scripts/census-reconciliation.js +25 -0
- package/skills/wix-replatform/scripts/cms-fallback.js +89 -0
- package/skills/wix-replatform/scripts/discovered-census.js +26 -0
- package/skills/wix-replatform/scripts/discovered-set-status.js +33 -0
- package/skills/wix-replatform/scripts/entity-qa-attestation.js +130 -0
- package/skills/wix-replatform/scripts/execution-health-check.js +415 -0
- package/skills/wix-replatform/scripts/execution-manifest-validate.js +1 -1
- package/skills/wix-replatform/scripts/execution-state-prepare.js +1 -1
- package/skills/wix-replatform/scripts/expectations-ledger.js +44 -0
- package/skills/wix-replatform/scripts/import-contract-verify.js +183 -0
- package/skills/wix-replatform/scripts/internal-link-audit.js +90 -0
- package/skills/wix-replatform/scripts/item-seo-tags-verify.js +205 -0
- package/skills/wix-replatform/scripts/migration-completion.js +76 -0
- package/skills/wix-replatform/scripts/orchestration-preflight.js +21 -2
- package/skills/wix-replatform/scripts/orchestration-route.js +32 -1
- package/skills/wix-replatform/scripts/orchestration-state.js +146 -10
- package/skills/wix-replatform/scripts/read-back-gate.js +175 -0
- package/skills/wix-replatform/scripts/replatform-console.js +146 -0
- package/skills/wix-replatform/scripts/replatform.js +436 -0
- package/skills/wix-replatform/scripts/source-secrets.js +77 -0
- package/skills/wix-replatform/scripts/url-redirects.js +286 -0
- package/skills/wix-replatform/scripts/user-action.js +58 -0
- package/skills/wix-replatform/scripts/website-handoff-generate.js +64 -0
- package/skills/wix-replatform/scripts/wix-dashboard-url.js +54 -0
- package/skills/wix-replatform/scripts/wix-destination.js +143 -0
- package/skills/wix-replatform/scripts/wix-headless-scaffold.js +762 -0
- package/skills/wix-vibe-headless/SKILL.md +7 -3
- package/skills/wix-vibe-headless/install/deploy.cjs +61 -34
- package/skills/wix-vibe-headless/platforms/base44.md +1 -0
- package/skills/wix-vibe-headless/references/donations/INSTRUCTIONS.md +88 -0
- package/skills/wix-vibe-headless/references/donations/app/rest/wix-donations.js +112 -0
- package/skills/wix-vibe-headless/references/donations/seed/SEED.md +11 -0
- package/skills/wix-vibe-headless/references/donations/tests/donations.test.mjs +258 -0
- package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +5 -2
- package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +4 -1
- package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +67 -3
- package/skills/wix-vibe-headless/references/shared/app/rest/wix-client.js +4 -3
- package/skills/wix-replatform/resources/rp-target-wix/SPEC-product-reviews-and-blog-authorship.md +0 -330
|
@@ -10,13 +10,15 @@
|
|
|
10
10
|
// They differ on a MIGRATION PREVIEW: a project whose config points at a fresh site created only to
|
|
11
11
|
// host the deployment, while `.env.local` carries the credentials of the site being migrated (the
|
|
12
12
|
// parent) and says so. Then every admin, discovery and seed call targets the parent, the SDK client
|
|
13
|
-
// is the parent's, and only the release goes to the child. Completing the migration
|
|
14
|
-
//
|
|
13
|
+
// is the parent's, and only the release goes to the child. Completing the migration follows
|
|
14
|
+
// guides/migration.md; this module only reads the state.
|
|
15
15
|
//
|
|
16
16
|
// `env pull` runs here when `.env.local` is missing (or --refresh): it is the source of the content
|
|
17
17
|
// identity, and the Astro build refuses to run without it. Non-interactive (CI=1); a failure is
|
|
18
18
|
// reported in `pullError` and the config's ids stand in, so a caller can still work offline.
|
|
19
|
+
import { spawnSync } from "node:child_process";
|
|
19
20
|
import { existsSync, readFileSync } from "node:fs";
|
|
21
|
+
import { homedir } from "node:os";
|
|
20
22
|
import { join } from "node:path";
|
|
21
23
|
import { failure, npmSync } from "./proc.mjs";
|
|
22
24
|
const PINS = JSON.parse(readFileSync(new URL("./pins.json", import.meta.url), "utf8"));
|
|
@@ -59,6 +61,55 @@ export function readWixConfig(cwd) {
|
|
|
59
61
|
try { return JSON.parse(readFileSync(file, "utf8")); } catch { return null; }
|
|
60
62
|
}
|
|
61
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Where a release goes from this machine. `cli`: the Wix CLI's session file is here
|
|
66
|
+
* (`~/.wix/auth/account.json`, what `wix login` writes), so `wix release` and `wix env pull` work.
|
|
67
|
+
* `plugin`: no session; the Wix MCP's tools carry the user's login, the site is provisioned through
|
|
68
|
+
* them, and the Astro build is released by its upload tool.
|
|
69
|
+
*/
|
|
70
|
+
export function publisher() {
|
|
71
|
+
return existsSync(join(homedir(), ".wix", "auth", "account.json")) ? "cli" : "plugin";
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Whether the kit runs here: `npm ping` against the configured registry, thirty seconds at most. A chat
|
|
76
|
+
* host's sandbox answers through a proxy that can take six seconds to the first byte (measured on one
|
|
77
|
+
* 2026-10-24), so a short limit reads an open sandbox as closed.
|
|
78
|
+
*/
|
|
79
|
+
export function npmReachable() {
|
|
80
|
+
const r = npmSync("npm", ["ping", "--no-fund", "--no-audit"], { encoding: "utf8", timeout: 30_000, env: { ...process.env, CI: "1" } });
|
|
81
|
+
return { ok: r.status === 0, detail: r.status === 0 ? null : failure(r, "npm ping failed").trim().slice(-200) };
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Whether a build can travel from this shell: the upload tool's presigned URLs are on Amazon S3, and a
|
|
86
|
+
* sandbox limited to a few hosts gets a proxy's answer there instead of S3's (`Server: AmazonS3`). Measured
|
|
87
|
+
* with one HEAD request, twenty-five seconds at most (a sandbox proxy can take ten seconds to answer, and a
|
|
88
|
+
* short limit reads an open sandbox as closed); the client's attachment carrier is not measurable here.
|
|
89
|
+
*/
|
|
90
|
+
export async function s3Reachable() {
|
|
91
|
+
// curl first: it is what the shell's upload would use and it honours the shell's proxy settings.
|
|
92
|
+
// S3 answered when its own headers are there: `x-amz-request-id` always, `Server: AmazonS3` unless a
|
|
93
|
+
// proxy in front rewrote the Server header (one chat host's proxy answers `server: envoy` and keeps the
|
|
94
|
+
// x-amz headers). A proxy that refuses the host answers with neither.
|
|
95
|
+
const fromS3 = (headers) => /^x-amz-request-id:/im.test(headers) || /^server:\s*amazons3/im.test(headers);
|
|
96
|
+
const c = spawnSync("curl", ["-sI", "-m", "25", "https://s3.amazonaws.com"], { encoding: "utf8" });
|
|
97
|
+
if (c.status === 0 && c.stdout) {
|
|
98
|
+
const server = (c.stdout.match(/^server:\s*(.+)$/im) ?? [])[1]?.trim() ?? "";
|
|
99
|
+
const amz = /^x-amz-request-id:/im.test(c.stdout);
|
|
100
|
+
return { ok: fromS3(c.stdout), detail: `${c.stdout.split("\n")[0].trim()}${server ? `, server: ${server}` : ""}${amz ? ", x-amz-request-id present" : ", no S3 headers"}` };
|
|
101
|
+
}
|
|
102
|
+
if (c.status !== null && c.error?.code !== "ENOENT") return { ok: false, detail: `curl exited ${c.status}` };
|
|
103
|
+
try {
|
|
104
|
+
const r = await fetch("https://s3.amazonaws.com", { method: "HEAD", redirect: "manual", signal: AbortSignal.timeout(25_000) });
|
|
105
|
+
const server = r.headers.get("server") ?? "";
|
|
106
|
+
const amz = r.headers.has("x-amz-request-id");
|
|
107
|
+
return { ok: amz || /amazons3/i.test(server), detail: `status ${r.status}${server ? `, server: ${server}` : ""}${amz ? ", x-amz-request-id present" : ", no S3 headers"}` };
|
|
108
|
+
} catch (e) {
|
|
109
|
+
return { ok: false, detail: String(e?.cause?.code ?? e?.message ?? e).slice(0, 120) };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
62
113
|
const ENV_PULL = ["-y", WIX_CLI, "env", "pull"];
|
|
63
114
|
const runPull = (dir) => npmSync("npx", ENV_PULL, { cwd: dir, env: { ...process.env, CI: "1" }, encoding: "utf8", timeout: 180_000 });
|
|
64
115
|
|
|
@@ -165,7 +216,7 @@ export function folderShape(cwd = process.cwd(), { migrationActive = false } = {
|
|
|
165
216
|
migration: "setup.mjs (MIGRATE): the shipped code into the starter the download carries (or the composed template around a bare config); the site being migrated owns its content — guides/migration.md",
|
|
166
217
|
"static-in-astro": "a dropped site on its Dev Machine: the pages are plain files in public/, served as they are. deploy.mjs <vertical…> --stack static --out public puts the REST layer in public/js/wix/; wire the pages in place with <script type=\"module\">: do the least that makes them work: connect each control the pages show and add only what a control can't work without (more only when the brief asks), and no Astro pages. Read the site (read-site.mjs); run the vertical's seed module with a plan only for content the brief supplies or describes. Release with npx @wix/cli@latest build && npx @wix/cli@latest release; the URL stays",
|
|
167
218
|
"blank-starter": "attach.mjs --business-name <brand> --vertical <v…> [--plan plan.json] (the site comes from wix.config.json): the CLI's blank starter with no work of its own, as a Dev Machine or a bare wix create leaves it. attach deploys the vertical onto it with its composed lock and starts the install and the seed detached: build the brand layer while they run, then sync on .install-exit and .seed-exit before release (SKILL.md step 3). Read the site first (read-site.mjs) when it may already hold content",
|
|
168
|
-
"wix-project": "iterate: never scaffold, init or reseed. deploy.mjs <vertical…> --stack <stack> adds a solution, then one install: node <SKILL_ROOT>/install/install.mjs (it skips when node_modules already satisfies the lock); file edits for a change; release. Read the site (read-site.mjs) before any seed module runs",
|
|
219
|
+
"wix-project": "iterate: never scaffold, init or reseed. deploy.mjs <vertical…> --stack <stack> adds a solution, then one install: node <SKILL_ROOT>/install/install.mjs (it skips when node_modules already satisfies the lock); file edits for a change; release. Read the site (read-site.mjs) before any seed module runs. On the plugin route, a project downloaded from the site's Code Store repository has no .env.local: setup.mjs --vertical <v> --site <siteId> --app <appId> writes it (and installs when node_modules is missing); the release is UploadHeadlessWebsiteFiles with the downloaded revision as expectedHeadRevisionId (SKILL.md step 5)",
|
|
169
220
|
"published-static": "setup.mjs --vertical <v>: the config's site, no init; site/ becomes the upload and the REST layer lands in site/js/wix/; move the pages, styles and assets into site/. Nothing is seeded: read the site, then run the vertical's seed module with a plan when the brief gives content; release keeps the URL",
|
|
170
221
|
};
|
|
171
222
|
let shape;
|
|
@@ -193,7 +244,8 @@ export function siteContext({ cwd = process.cwd(), pull = "auto" } = {}) {
|
|
|
193
244
|
const deploy = { siteId: config.siteId ?? config.projectId ?? null, appId: config.appId ?? null };
|
|
194
245
|
const envFile = join(cwd, ".env.local");
|
|
195
246
|
let pulled = false, pullError;
|
|
196
|
-
|
|
247
|
+
// Only a machine with a CLI session can pull; on the plugin route setup.mjs wrote the env file.
|
|
248
|
+
if (deploy.siteId && publisher() === "cli" && (pull === true || (pull === "auto" && !existsSync(envFile)))) {
|
|
197
249
|
const r = pullEnv(cwd);
|
|
198
250
|
if (r.ok) pulled = r.via;
|
|
199
251
|
else pullError = r.error;
|
|
@@ -214,12 +266,15 @@ export function siteContext({ cwd = process.cwd(), pull = "auto" } = {}) {
|
|
|
214
266
|
if (active && migration.parentSiteId === deploy.siteId) {
|
|
215
267
|
warnings.push("the migration's parent site is the deploy site itself — nothing is being migrated");
|
|
216
268
|
}
|
|
217
|
-
return { folder: folderShape(cwd, { migrationActive: active }), deploy, content, migration, env: { file: envFile, present: Object.keys(env).length > 0, pulled }, ...(pullError ? { pullError } : {}), warnings };
|
|
269
|
+
return { folder: folderShape(cwd, { migrationActive: active }), publisher: publisher(), npm: npmReachable(), deploy, content, migration, env: { file: envFile, present: Object.keys(env).length > 0, pulled }, ...(pullError ? { pullError } : {}), warnings };
|
|
218
270
|
}
|
|
219
271
|
|
|
220
272
|
// ---- CLI ----------------------------------------------------------------------------------------
|
|
221
273
|
if (process.argv[1] && /context\.mjs$/.test(process.argv[1])) {
|
|
222
274
|
const argv = process.argv.slice(2);
|
|
223
275
|
const pull = argv.includes("--no-pull") ? false : argv.includes("--refresh") ? true : "auto";
|
|
224
|
-
|
|
276
|
+
// The carrier is measured only when printing: the scripts that read siteContext() do not decide the route.
|
|
277
|
+
const ctx = siteContext({ pull });
|
|
278
|
+
ctx.carrier = { s3: await s3Reachable() };
|
|
279
|
+
console.log(JSON.stringify(ctx, null, 2));
|
|
225
280
|
}
|
|
@@ -5,10 +5,14 @@
|
|
|
5
5
|
//
|
|
6
6
|
// node <SKILL_ROOT>/install/setup.mjs --vertical <storefront|bookings|…>[,<vertical>…] \
|
|
7
7
|
// [--plan plan.json] [--business-name "<Brand>"] [--stack astro|react|lib|static] \
|
|
8
|
-
// [--subfolder [--folder-name <npm-safe-name>]]
|
|
8
|
+
// [--site <metaSiteId> --app <appId>] [--subfolder [--folder-name <npm-safe-name>]]
|
|
9
9
|
//
|
|
10
10
|
// empty (or loose files: a CSV, a brief) → CREATE: `wix create` with the vertical's composed template
|
|
11
11
|
// (templates/<vertical>/project), placed in the current directory (`--business-name` required).
|
|
12
|
+
// With --site and --app (a site provisioned through the Wix MCP: the metaSiteId and appId the
|
|
13
|
+
// provision call returned) the CLI is not run: the composed template is copied in, wix.config.json
|
|
14
|
+
// and .env.local are written for that site, and the release is the Wix MCP's upload tool with the
|
|
15
|
+
// Astro build (the plugin route). The seed runs through ExecuteWixAPI there, not here.
|
|
12
16
|
// a frontend, no wix.config.json (a package.json, or an index.html at the root) → ADOPT: `init` in
|
|
13
17
|
// place gives the project a new, empty site, then deploy. `--stack` required.
|
|
14
18
|
// CREATE and ADOPT are the two cases that seed: the run made the site, it is empty by construction,
|
|
@@ -20,6 +24,9 @@
|
|
|
20
24
|
// drop flow and downloaded): the config's site, no init; site/ becomes the upload, the REST layer
|
|
21
25
|
// deploys there, the pages move in (the agent's step). Nothing seeded.
|
|
22
26
|
// a config and a frontend (package.json, or index.html in the output folder) → refuses: iterate.
|
|
27
|
+
// With --site and --app matching the config and no .env.local (a project downloaded from the
|
|
28
|
+
// site's Code Store repository): writes .env.local as the plugin create does, installs when
|
|
29
|
+
// node_modules is missing, and nothing else: no scaffold, no deploy, no seed.
|
|
23
30
|
// a config and nothing else → refuses: attach.mjs's case.
|
|
24
31
|
//
|
|
25
32
|
// Setup seeds only a site it created in this run. A site that existed before the run is never seeded
|
|
@@ -31,7 +38,7 @@
|
|
|
31
38
|
// steps — the dependency install and the seed — running detached in the background (logs and
|
|
32
39
|
// completion markers in the final event), so the caller can build the brand layer while they finish.
|
|
33
40
|
import { spawnSync } from "node:child_process";
|
|
34
|
-
import { cpSync, existsSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
41
|
+
import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
35
42
|
import { basename, dirname, join, resolve } from "node:path";
|
|
36
43
|
import { fileURLToPath } from "node:url";
|
|
37
44
|
import { AGENT_CONFIG_FILES, writeAgentsMd } from "./agents-md.mjs";
|
|
@@ -65,13 +72,18 @@ const planPath = flag("plan");
|
|
|
65
72
|
const verticals = (flag("vertical") ?? "").split(",").map((v) => v.trim()).filter(Boolean);
|
|
66
73
|
const vertical = verticals[0] ?? null;
|
|
67
74
|
const stackFlag = flag("stack");
|
|
75
|
+
// The plugin route: a site already provisioned through the Wix MCP, named by the two ids the provision
|
|
76
|
+
// call returned. No Wix CLI is run anywhere in this call; the release is the MCP's upload tool.
|
|
77
|
+
const siteFlag = flag("site");
|
|
78
|
+
const appFlag = flag("app");
|
|
79
|
+
const publisher = siteFlag ? "plugin" : "cli";
|
|
68
80
|
// Opt-in: keep a CREATE's project in a subfolder instead of the current directory.
|
|
69
81
|
const subfolder = argv.includes("--subfolder");
|
|
70
82
|
// The shipped code: the repository's templates/ (a checkout, the cache, or fetched now, in a second).
|
|
71
83
|
let TEMPLATES;
|
|
72
84
|
try { TEMPLATES = templatesDir(); } catch (e) { fail("templates", e.message); }
|
|
73
85
|
const knownVerticals = listVerticals(TEMPLATES);
|
|
74
|
-
const usage = `usage: setup.mjs --vertical <${knownVerticals.join("|")}>[,<vertical>…] [--plan plan.json] [--business-name "<Brand>"] [--stack astro|react|lib|static] [--subfolder]`;
|
|
86
|
+
const usage = `usage: setup.mjs --vertical <${knownVerticals.join("|")}>[,<vertical>…] [--plan plan.json] [--business-name "<Brand>"] [--stack astro|react|lib|static] [--site <metaSiteId> --app <appId>] [--subfolder]`;
|
|
75
87
|
// --vertical is REQUIRED: a defaulted vertical deploys the wrong code and runs the wrong seed.
|
|
76
88
|
if (!vertical) fail("args", usage);
|
|
77
89
|
for (const v of verticals) {
|
|
@@ -81,6 +93,43 @@ if (stackFlag && !["astro", "react", "lib", "static"].includes(stackFlag)) {
|
|
|
81
93
|
fail("args", `unknown --stack "${stackFlag}" — astro, react, lib or static`);
|
|
82
94
|
}
|
|
83
95
|
if (planPath && !existsSync(planPath)) fail("args", `plan file not found: ${planPath}`);
|
|
96
|
+
if (!!siteFlag !== !!appFlag) fail("args", "--site and --app go together: the metaSiteId and the appId the provision call returned");
|
|
97
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
98
|
+
if (siteFlag && !(UUID.test(siteFlag) && UUID.test(appFlag))) fail("args", "--site and --app are UUIDs (the provision call's metaSiteId and appId)");
|
|
99
|
+
if (siteFlag && stackFlag && stackFlag !== "astro") fail("args", `--site takes the astro stack: the composed template is copied in and released as a build; --stack ${stackFlag} does not apply`);
|
|
100
|
+
|
|
101
|
+
// The env the plugin route's build reads: the public client id, the cloud provider the hosting runs
|
|
102
|
+
// the server build on, and stand-ins for the three values the hosting runtime injects at release (the
|
|
103
|
+
// build only checks they exist).
|
|
104
|
+
const writePluginEnv = (dir) => writeFileSync(join(dir, ".env.local"), [
|
|
105
|
+
"# Read by the build. WIX_CLIENT_ID is the site's public OAuth client id (the provision call's appId).",
|
|
106
|
+
"# The hosting runtime injects the real values of the last three at release; the build only checks they exist.",
|
|
107
|
+
`WIX_CLIENT_ID="${appFlag}"`,
|
|
108
|
+
'WIX_CLOUD_PROVIDER="KUBERNETES"',
|
|
109
|
+
'WIX_CLIENT_INSTANCE_ID="set-at-release"',
|
|
110
|
+
'WIX_CLIENT_PUBLIC_KEY="set-at-release"',
|
|
111
|
+
'WIX_CLIENT_SECRET="set-at-release"',
|
|
112
|
+
"",
|
|
113
|
+
].join("\n"));
|
|
114
|
+
|
|
115
|
+
// The plugin route's install: in the foreground, since it runs where a process may not outlive the
|
|
116
|
+
// tool call that started it; the event says it is done.
|
|
117
|
+
const foregroundInstall = (dir) => {
|
|
118
|
+
const installLog = join(dir, "npm-install.log");
|
|
119
|
+
emit("installing", { log: installLog, foreground: true });
|
|
120
|
+
const r = spawnSync("node", [join(SKILL_ROOT, "install", "install.mjs")], { cwd: dir, encoding: "utf8", timeout: 280_000 });
|
|
121
|
+
writeFileSync(installLog, `${r.stdout ?? ""}${r.stderr ?? ""}`);
|
|
122
|
+
let result = {};
|
|
123
|
+
try { result = JSON.parse((r.stdout ?? "").trim().split("\n").pop()); } catch { /* the log has it */ }
|
|
124
|
+
if (r.status !== 0) fail("install", failure(r, `install exited ${r.status}; see ${installLog}`).slice(-600));
|
|
125
|
+
const marker = join(dir, ".install-exit");
|
|
126
|
+
emit("install_done", { ...result, exit: existsSync(marker) ? readFileSync(marker, "utf8").trim() : String(r.status), log: installLog });
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
// The plugin route's release of an Astro project: the build, the two zips, the upload tool.
|
|
130
|
+
const ZIP_PY = (name, skip) => `python3 -c "import zipfile,pathlib as P; X=(${skip.map((s) => `'${s}'`).join(",")}); z=zipfile.ZipFile('${name}','w',zipfile.ZIP_DEFLATED); [z.write(p) for p in P.Path('.').rglob('*') if p.is_file() and p.parts[0] not in X and not p.name.startswith('.env') and str(p) not in ('project.zip','build.zip','source.zip')]; z.close()"`;
|
|
131
|
+
const pluginRelease = (head) =>
|
|
132
|
+
`npx astro build from the project root (the Wix hosting adapter writes .wix/build-metadata.json and dist/), then release with the Wix MCP's UploadHeadlessWebsiteFiles, siteId ${siteFlag}, in one of two forms. Attached: one zip of the project without node_modules (zip -qr project.zip . -x 'node_modules/*' '.astro/*' '.agents/*' '.env*'; without a zip binary: ${ZIP_PY("project.zip", ["node_modules", ".astro", ".agents"])}) passed as attachments. From a shell that reaches the internet (the upload URLs are on Amazon S3: curl -sI https://s3.amazonaws.com shows Server: AmazonS3 where they work; a sandbox limited to a few hosts gets a proxy's refusal without that header and cannot release this way): the build zip (zip -qr build.zip dist .wix) and the source zip (zip -qr source.zip . -x 'node_modules/*' 'dist/*' '.wix/*' '.astro/*' '.agents/*' '.env*' 'build.zip'; without a zip binary: ${ZIP_PY("source.zip", ["node_modules", "dist", ".wix", ".astro", ".agents"])}), then { siteId, prepare: true, size } with size from wc -c < build.zip, the curl -X PUT commands its reply gives, run as given, and the second call it names, { siteId, uploadKey, sourceUploadId, expectedHeadRevisionId }. ${head} The tool releases the build to the site's Wix hosting, stores the source in the site's Code Store repository and returns the live URL; EXPECTED_HEAD_REQUIRED or a 409 CODE_STORE_HEAD_CHANGED released nothing (SKILL.md step 5). Not wix build, not wix release: this run has no Wix CLI session`;
|
|
84
133
|
|
|
85
134
|
// ---- 0 · read the folder --------------------------------------------------------------------------
|
|
86
135
|
const cwd = process.cwd();
|
|
@@ -89,8 +138,25 @@ const pkg = has("package.json") ? JSON.parse(readFileSync(join(cwd, "package.jso
|
|
|
89
138
|
let ctx = null;
|
|
90
139
|
let shape = folderShape(cwd).shape;
|
|
91
140
|
if (has("wix.config.json")) {
|
|
92
|
-
ctx = siteContext({ cwd }); // pulls .env.local when missing — where a migration is declared
|
|
141
|
+
ctx = siteContext({ cwd, ...(siteFlag ? { pull: false } : {}) }); // pulls .env.local when missing — where a migration is declared
|
|
93
142
|
shape = ctx.folder.shape;
|
|
143
|
+
// A project downloaded from the site's Code Store repository: the config and the frontend came with
|
|
144
|
+
// it, the env did not. Only the env is written, and the install runs when node_modules is missing.
|
|
145
|
+
if (siteFlag && pkg && shape !== "migration" && ctx.deploy.siteId === siteFlag && !has(".env.local")) {
|
|
146
|
+
if (ctx.deploy.appId && ctx.deploy.appId !== appFlag) fail("args", `--app ${appFlag} differs from wix.config.json appId ${ctx.deploy.appId}`);
|
|
147
|
+
emit("folder", { mode: "iterate", shape, stack: "astro", publisher, project: pkg.name ?? basename(cwd), deploySiteId: ctx.deploy.siteId, warnings: ctx.warnings });
|
|
148
|
+
writePluginEnv(cwd);
|
|
149
|
+
ignoreEnvLocal(cwd);
|
|
150
|
+
emit("env_written", { file: join(cwd, ".env.local"), clientId: appFlag });
|
|
151
|
+
if (!has("node_modules")) foregroundInstall(cwd);
|
|
152
|
+
else emit("install_skipped", { reason: "node_modules is there" });
|
|
153
|
+
emit("ready_for_brand_layer", {
|
|
154
|
+
mode: "iterate", shape, stack: "astro", publisher, verticals, projectDir: cwd, siteId: siteFlag,
|
|
155
|
+
dashboardUrl: `https://manage.wix.com/dashboard/${siteFlag}`, install: null, seed: null,
|
|
156
|
+
next: `a project downloaded from the site's Code Store repository: nothing scaffolded, deployed or seeded. Edit the files the change needs (deploy.mjs <vertical…> --stack astro adds a solution, then node ${join(SKILL_ROOT, "install", "install.mjs")}); then ${pluginRelease("expectedHeadRevisionId is the revision.id the download returned, in either form.")}`,
|
|
157
|
+
});
|
|
158
|
+
process.exit(0);
|
|
159
|
+
}
|
|
94
160
|
if (shape !== "migration" && shape !== "published-static") {
|
|
95
161
|
fail("place", `this folder is already a Wix project (wix.config.json), shape "${shape}": nothing to set up. ${ctx.folder.next} (SKILL.md step 3)` + (ctx.pullError ? ` — note: env pull failed here (${ctx.pullError.slice(0, 120)})` : ""));
|
|
96
162
|
}
|
|
@@ -99,6 +165,7 @@ if (has("wix.config.json")) {
|
|
|
99
165
|
}
|
|
100
166
|
}
|
|
101
167
|
const mode = { migration: "migrate", "published-static": "published-static", project: "adopt", empty: "create" }[shape];
|
|
168
|
+
if (siteFlag && mode !== "create") fail("args", `--site applies to an empty folder (shape "empty"); this folder is "${shape}": ${folderShape(cwd).next}`);
|
|
102
169
|
const migrating = mode === "migrate";
|
|
103
170
|
const publishedStatic = mode === "published-static";
|
|
104
171
|
const hasProject = shape === "project";
|
|
@@ -106,7 +173,7 @@ if (mode === "adopt" && !stackFlag) {
|
|
|
106
173
|
fail("args", "adopting a project on disk needs --stack astro|react|lib|static — the stack you resolved in SKILL.md step 1 for this project");
|
|
107
174
|
}
|
|
108
175
|
const stack = publishedStatic ? "static" : (stackFlag ?? "astro");
|
|
109
|
-
emit("folder", { mode, shape, stack, project: hasProject ? (pkg?.name ?? basename(cwd)) : null, ...(ctx ? { deploySiteId: ctx.deploy.siteId, warnings: ctx.warnings } : {}), ...(migrating ? { migration: ctx.migration } : {}) });
|
|
176
|
+
emit("folder", { mode, shape, stack, publisher, project: hasProject ? (pkg?.name ?? basename(cwd)) : null, ...(ctx ? { deploySiteId: ctx.deploy.siteId, warnings: ctx.warnings } : {}), ...(migrating ? { migration: ctx.migration } : {}) });
|
|
110
177
|
|
|
111
178
|
let projectDir = cwd;
|
|
112
179
|
let folderName = null;
|
|
@@ -123,6 +190,23 @@ if (mode === "create") {
|
|
|
123
190
|
projectDir = resolve(cwd, folderName);
|
|
124
191
|
if (existsSync(join(projectDir, "wix.config.json"))) {
|
|
125
192
|
emit("scaffold_skipped", { reason: "project already exists", folder: folderName });
|
|
193
|
+
} else if (siteFlag) {
|
|
194
|
+
// ---- 1 · a site provisioned through the Wix MCP: the template copied in, the config and the env
|
|
195
|
+
// written here; no CLI. The env is what the build reads: the public client id, the cloud provider
|
|
196
|
+
// the hosting runs the server build on, and stand-ins for the three values the hosting runtime
|
|
197
|
+
// injects at release (the build only checks they exist).
|
|
198
|
+
const template = join(templatesDir({ need: `${vertical}/project` }), vertical, "project");
|
|
199
|
+
emit("scaffolding", { folder: folderName, template, siteId: siteFlag, from: "the Wix MCP's provision call" });
|
|
200
|
+
mkdirSync(projectDir, { recursive: true });
|
|
201
|
+
cpSync(template, projectDir, { recursive: true, force: false, errorOnExist: false });
|
|
202
|
+
const pkgPath = join(projectDir, "package.json");
|
|
203
|
+
if (existsSync(pkgPath)) {
|
|
204
|
+
const scaffolded = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
205
|
+
scaffolded.name = folderName || "site";
|
|
206
|
+
writeFileSync(pkgPath, JSON.stringify(scaffolded, null, 2) + "\n");
|
|
207
|
+
}
|
|
208
|
+
writeFileSync(join(projectDir, "wix.config.json"), JSON.stringify({ siteId: siteFlag, appId: appFlag }, null, 2) + "\n");
|
|
209
|
+
writePluginEnv(projectDir);
|
|
126
210
|
} else {
|
|
127
211
|
// The composed template: the CLI copies it in place of its blank one, creates the site and
|
|
128
212
|
// writes wix.config.json; the vertical's code and its lockfile arrive with it. Any other
|
|
@@ -257,9 +341,13 @@ emit("agent_configs", writeAgentsMd(projectDir, { skill: basename(SKILL_ROOT), s
|
|
|
257
341
|
let install = null;
|
|
258
342
|
if (stack !== "static" && existsSync(join(projectDir, "package.json"))) {
|
|
259
343
|
const installLog = join(projectDir, "npm-install.log");
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
344
|
+
if (publisher === "plugin") {
|
|
345
|
+
foregroundInstall(projectDir);
|
|
346
|
+
} else {
|
|
347
|
+
startBackground("install", [], { cwd: projectDir, log: installLog });
|
|
348
|
+
install = { log: installLog, doneMarker: ".install-exit", success: "file contains 0" };
|
|
349
|
+
emit("install_started", install);
|
|
350
|
+
}
|
|
263
351
|
}
|
|
264
352
|
|
|
265
353
|
// ---- 4 · start the seed, detached (a site this run created, with a plan) ---------------------------
|
|
@@ -271,10 +359,12 @@ if (stack !== "static" && existsSync(join(projectDir, "package.json"))) {
|
|
|
271
359
|
// idempotent by name.
|
|
272
360
|
const madeTheSite = mode === "create" || mode === "adopt";
|
|
273
361
|
let seed = null;
|
|
274
|
-
if (planPath &&
|
|
362
|
+
if (planPath && publisher === "plugin") {
|
|
363
|
+
emit("seed_skipped", { reason: `the seed modules run with the Wix CLI's session, and this run has none: on the plugin route the plan is seeded through ExecuteWixAPI, as ${join(SKILL_ROOT, "guides", "api-run.md")} section 4 describes, with the vertical's SEED.md (${join(TEMPLATES, vertical, "seed", "SEED.md")}) as the contract` });
|
|
364
|
+
} else if (planPath && !madeTheSite) {
|
|
275
365
|
emit("seed_skipped", { reason: `${mode}: the site existed before this run; setup seeds only a site it created. Read what the site holds (${join(TEMPLATES, vertical, "seed", "read-site.mjs")}), then run templates/${vertical}/seed/seed-*.mjs ${planPath} yourself when the brief supplies or describes content` });
|
|
276
366
|
}
|
|
277
|
-
if (planPath && madeTheSite) {
|
|
367
|
+
if (planPath && madeTheSite && publisher === "cli") {
|
|
278
368
|
const seedDir = join(TEMPLATES, vertical, "seed");
|
|
279
369
|
const seedName = existsSync(seedDir)
|
|
280
370
|
? readdirSync(seedDir).find((f) => f.startsWith("seed-") && f.endsWith(".mjs"))
|
|
@@ -288,7 +378,9 @@ if (planPath && madeTheSite) {
|
|
|
288
378
|
}
|
|
289
379
|
|
|
290
380
|
// ---- done ----------------------------------------------------------------------------------------
|
|
291
|
-
const release = {
|
|
381
|
+
const release = publisher === "plugin" ? {
|
|
382
|
+
astro: pluginRelease("expectedHeadRevisionId is the headRevisionId the prepare returned; an attached release of this new site's first build leaves it out (the repository has nothing in it yet)."),
|
|
383
|
+
}[stack] : {
|
|
292
384
|
astro: `npx ${WIX_CLI} build, then npx ${WIX_CLI} release`,
|
|
293
385
|
react: `the project's own build, then npx ${WIX_CLI} release of the build folder named in wix.config.json (what Wix hosting serves and how routes must be shaped: SKILL.md step 1)`,
|
|
294
386
|
lib: `the project's own build, then npx ${WIX_CLI} release of the build folder named in wix.config.json (SKILL.md step 1)`,
|
|
@@ -301,6 +393,7 @@ emit("ready_for_brand_layer", {
|
|
|
301
393
|
mode,
|
|
302
394
|
shape,
|
|
303
395
|
stack,
|
|
396
|
+
publisher,
|
|
304
397
|
verticals,
|
|
305
398
|
projectDir,
|
|
306
399
|
siteId: migrating ? ctx.content.siteId : siteId,
|
|
@@ -314,6 +407,8 @@ emit("ready_for_brand_layer", {
|
|
|
314
407
|
(publishedStatic ? "a published static site: its pages are live on this site already and keep their URL; move index.html, the other pages, styles and assets into site/ (the root keeps the config, the plan, the seed output and the skills) and wire the solution into the page that needs it; " : "") +
|
|
315
408
|
(mode === "migrate"
|
|
316
409
|
? "a migration preview: the site being migrated owns its content (read it with the vertical's read-site.mjs when the brief allows probing; never seed it); theme + write the home page; "
|
|
410
|
+
: madeTheSite && publisher === "plugin"
|
|
411
|
+
? `the site is new and empty: seed it through ExecuteWixAPI (guides/api-run.md section 4, the plan per step 2 and the vertical's SEED.md as the contract${planPath ? `, the plan ${planPath}` : ", a plan drafted from the brief"}), and name the placeholder content in the closing message; theme + write the home page; `
|
|
317
412
|
: madeTheSite
|
|
318
413
|
? (planPath ? "theme + write the home page; " : "the site is new and empty and no plan was given, so nothing was seeded yet: seed it now (a plan per step 2 — the brief's content, or one drafted per the vertical's SEED.md — then the vertical's seed module), and name the placeholder content in the closing message; theme + write the home page; ")
|
|
319
414
|
: `nothing was seeded (setup seeds only a site it created): read what the site holds with ${join(TEMPLATES, vertical, "seed", "read-site.mjs")}, then run ${join(TEMPLATES, vertical, "seed")}/seed-*.mjs <plan> when the brief supplies or describes content; theme + write the home page; `) +
|
|
@@ -322,5 +417,5 @@ emit("ready_for_brand_layer", {
|
|
|
322
417
|
: "") +
|
|
323
418
|
(install || seed ? "then wait for the done markers" + (seed ? ", verify .seed-exit is 0 (else read seed.log and re-run the seed module)" : "") + "; " : "") +
|
|
324
419
|
`then ${release}` +
|
|
325
|
-
(mode === "migrate" ? "; the release is the PREVIEW on the deploy site — close with its URL and the parent's dashboard, say the original site is unchanged and
|
|
420
|
+
(mode === "migrate" ? "; the release is the PREVIEW on the deploy site — close with its URL and the parent's dashboard, say the original site is unchanged and offer to complete the migration once they approve — guides/migration.md" : ""),
|
|
326
421
|
});
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wix-headless-replatform
|
|
3
|
+
description: Clone, rebuild, migrate, or reverse-engineer a public website home page into a Wix Headless frontend while preserving source identity, SEO, interactions, and visual fidelity.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# wix-headless-replatform
|
|
7
|
+
|
|
8
|
+
## Role
|
|
9
|
+
|
|
10
|
+
Drive a close-enough, visually polished Wix Headless frontend from a source website.
|
|
11
|
+
The implemented scope is one resolved home page and the default output is
|
|
12
|
+
`projects/<project-name>`, derived from the hostname. Use Wix CLI Headless, Astro,
|
|
13
|
+
TypeScript, and Tailwind; use React only for complex interactive islands.
|
|
14
|
+
Reject additional-page and explicit-URL scope with an actionable explanation until a later
|
|
15
|
+
approved workflow defines page resolution and shared evidence across routes.
|
|
16
|
+
|
|
17
|
+
This entry skill is the supervisor. It decides the next workflow stage and loads only the
|
|
18
|
+
resource for that stage. Do not preload every resource or reference: stage-specific rules
|
|
19
|
+
are deliberately demand-loaded.
|
|
20
|
+
|
|
21
|
+
Two modes exist:
|
|
22
|
+
|
|
23
|
+
- **Standalone clone:** source URL to a new, real Wix CLI Headless project.
|
|
24
|
+
- **Migration phase:** `--handoff <migration-project>/website/handoff.json` continues on
|
|
25
|
+
the migration-owned destination. Never omit `--handoff` for an integrated migration:
|
|
26
|
+
the standalone command creates a second site.
|
|
27
|
+
|
|
28
|
+
## Non-negotiable invariants
|
|
29
|
+
|
|
30
|
+
- Treat the requested public branded homepage as authorized; apply the boundaries in
|
|
31
|
+
`references/safety.md` without asking a separate routine authorization question.
|
|
32
|
+
- Browser-backed extraction is mandatory. Do not substitute HTML-only extraction.
|
|
33
|
+
- Resolve the home page before capture. Build only from a validated frozen extraction
|
|
34
|
+
manifest; raw observations are never builder inputs.
|
|
35
|
+
- A standalone output must be a successful Wix CLI scaffold with valid Wix identity and
|
|
36
|
+
runnable `dev` and `build` scripts. Never hand-create a Wix-shaped substitute.
|
|
37
|
+
- In migration mode, reuse the handoff's site/project and route/data-binding intent; do
|
|
38
|
+
not create or retarget a second destination.
|
|
39
|
+
- Preserve source structure, first-viewport evidence, chrome hierarchy, source assets,
|
|
40
|
+
fonts, core interactions, SEO, internal URL behavior, and branded fallback behavior.
|
|
41
|
+
- A build is not completion. Completion requires the accepted post-build visual-review and
|
|
42
|
+
gap-loop evidence described by `rp-qa-gap-loop`, plus optional facelift acceptance only
|
|
43
|
+
when the user explicitly selected facelift mode.
|
|
44
|
+
|
|
45
|
+
## Supervisor protocol
|
|
46
|
+
|
|
47
|
+
On every new or resumed run:
|
|
48
|
+
|
|
49
|
+
1. Resolve the source URL, output directory, and mode. In migration mode read
|
|
50
|
+
`website/handoff.json` and `docs/site-clone/frontend-automation-state.json` first.
|
|
51
|
+
2. Select the first incomplete stage from the table below and read only that resource's
|
|
52
|
+
`SKILL.md` plus the references it explicitly needs.
|
|
53
|
+
3. Execute that stage until it writes its required durable artifact, or records a specific
|
|
54
|
+
genuine blocker with evidence and an exact unblock action.
|
|
55
|
+
4. Re-select the stage after every boundary. Do not say that a required next step “needs to
|
|
56
|
+
happen” and end the run; load its resource and perform it.
|
|
57
|
+
|
|
58
|
+
| Stage | Load only when | Resource | Durable outcome |
|
|
59
|
+
| --- | --- | --- | --- |
|
|
60
|
+
| Context | mode, scope, project, or browser environment is unresolved | `resources/rp-project-context/SKILL.md` | valid context, approval record, runnable project/plan state, or blocker |
|
|
61
|
+
| Evidence | frozen home-page extraction is absent or stale | `resources/rp-source-evidence/SKILL.md` | validated `extraction/latest.json` and frozen manifest, or global blocker |
|
|
62
|
+
| Implementation | frozen build plan exists and home UI is incomplete | `resources/rp-ui-implementation/SKILL.md` | manifest-hash-aware runnable home implementation |
|
|
63
|
+
| Verify and improve | build, QA, comparison, review, fix, report, release, or receipt is incomplete | `resources/rp-qa-gap-loop/SKILL.md` | accepted result, `done_with_gaps`, or global blocker |
|
|
64
|
+
| Optional facelift | normal clone accepted and automation state says facelift is requested | `resources/rp-facelift/SKILL.md` | accepted facelift review, or blocker |
|
|
65
|
+
|
|
66
|
+
When `frontendPhase.allowedNow` is `plan`, complete only the plan-eligible context and
|
|
67
|
+
evidence work and leave a resumable plan-state record. When it is `build`, continue through
|
|
68
|
+
implementation and verification against the migration-owned project.
|
|
69
|
+
|
|
70
|
+
## One-click continuation
|
|
71
|
+
|
|
72
|
+
A migration handoff declaring `automationMode: "one_click"` authorizes routine scope and
|
|
73
|
+
frontend checkpoints. Record those approvals in
|
|
74
|
+
`docs/site-clone/frontend-automation-state.json`; do not pause to ask whether to proceed
|
|
75
|
+
with a required stage, screenshot review, or authorized gap-fix pass.
|
|
76
|
+
An explicit facelift request may be carried from 1-click intake, but it remains gated until
|
|
77
|
+
normal clone acceptance; 1-click never implies facelift by itself.
|
|
78
|
+
|
|
79
|
+
In a one-click build run, keep selecting and executing stages until one of these durable
|
|
80
|
+
outcomes exists:
|
|
81
|
+
|
|
82
|
+
- `website/completion.json` is valid and the latest visual review is complete with no open
|
|
83
|
+
critical/high identity finding; or
|
|
84
|
+
- five visual gap cycles have been completed and `website/completion.json` records the
|
|
85
|
+
truthful terminal status `done_with_gaps` with the final reviewed evidence; or
|
|
86
|
+
- a genuine blocker is recorded with owner, evidence, attempted recovery, and exact next
|
|
87
|
+
authority/action needed.
|
|
88
|
+
|
|
89
|
+
An owned local extraction gap is not a genuine blocker. Continue unrelated work, use no more
|
|
90
|
+
than two distinct targeted recovery attempts, then build the affected dependency closure
|
|
91
|
+
provisionally and surface post-assembly choices in `final-report.json` and `.md`.
|
|
92
|
+
|
|
93
|
+
Before classifying a shell, browser, or network failure as a blocker, use the
|
|
94
|
+
repo-local Wix/Yarn toolchain PATH ordering and follow the recovery order in
|
|
95
|
+
`resources/rp-project-context/SKILL.md`: aligned-shell retry, then the
|
|
96
|
+
required browser/network escalation and retry, then blocker only if it still
|
|
97
|
+
fails or approval is pending. After every gap iteration, immediately return to
|
|
98
|
+
the stage table; never treat a first build, a reported plan, or backend import
|
|
99
|
+
as frontend completion.
|
|
100
|
+
|
|
101
|
+
In migration mode the build must also leave the final route manifest that old-link
|
|
102
|
+
preservation consumes (`output-contract.md`, "Migration terminal receipt"). A built site is
|
|
103
|
+
not proof that old URLs work; redirect application and public verification stay pending
|
|
104
|
+
until the cutover step runs them.
|
|
105
|
+
|
|
106
|
+
## Commands
|
|
107
|
+
|
|
108
|
+
Run `node scripts/site-clone.mjs <source-url>` for standalone mode, or
|
|
109
|
+
`node scripts/site-clone.mjs <source-url> --handoff <path>` for migration mode. The active
|
|
110
|
+
resource gives the exact commands and inputs for its stage.
|
|
111
|
+
|
|
112
|
+
## References
|
|
113
|
+
|
|
114
|
+
Resources load their own references. The shared contracts are kept under `references/`:
|
|
115
|
+
`safety.md`, `workflow.md`, `extraction-schema.md`, `output-contract.md`,
|
|
116
|
+
`qa-checklist.md`, and the interaction/layout/control/normalization/gap contracts.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Control and Visual Fidelity Contract
|
|
2
|
+
|
|
3
|
+
This layer sits beside the scene and layout contracts. It is deliberately modular:
|
|
4
|
+
|
|
5
|
+
- `control-state-contract.json` owns representative control states and transition owners;
|
|
6
|
+
- `visual-assets.json` owns identity-bearing logos/icons, their variants, usage, and size;
|
|
7
|
+
- `layout-blueprint.json` owns text geometry and wrapping;
|
|
8
|
+
- `scene-contract.json` owns initial interactive state, item separation, and motion scope.
|
|
9
|
+
|
|
10
|
+
## Control terminology
|
|
11
|
+
|
|
12
|
+
Use `rest`, `hover`, `focus-visible`, `pressed`, `activated`, `current`, and `disabled`.
|
|
13
|
+
Implement the recorded delta on the element that owns it: target, `::before`, `::after`, or
|
|
14
|
+
nested icon. Source-observed states outrank normalization defaults. If source focus evidence
|
|
15
|
+
is absent, add a perceivable `:focus-visible` treatment without replacing source hover or
|
|
16
|
+
current styling.
|
|
17
|
+
|
|
18
|
+
## Text geometry
|
|
19
|
+
|
|
20
|
+
Important text records include `inlineSize`, `blockSize`, `lineCount`, `wrapPolicy`,
|
|
21
|
+
`maxWidth`, `fontSize`, and `lineHeight`. At the canonical desktop viewport, a captured
|
|
22
|
+
`single-line` heading is an identity lock. Match its container width before shrinking type.
|
|
23
|
+
|
|
24
|
+
## Stateful collections
|
|
25
|
+
|
|
26
|
+
Respect `initialState` and `initialActiveIndexes`. `all-collapsed` means no item may be
|
|
27
|
+
opened during runtime initialization. Reproduce `separation.mechanism`: it distinguishes
|
|
28
|
+
track gaps, geometric gaps, margins, dividers, inner insets, and flush items.
|
|
29
|
+
|
|
30
|
+
## Motion ownership
|
|
31
|
+
|
|
32
|
+
`data-rp-visual` marks the measured visual transform owner. `data-rp-content` marks copy
|
|
33
|
+
whose geometry is verified separately. Never nest static content inside a scaling visual
|
|
34
|
+
wrapper unless source evidence explicitly says the content scales.
|
|
35
|
+
|
|
36
|
+
## Logos and icons
|
|
37
|
+
|
|
38
|
+
Logo priority is exact source file or materialized source SVG. Preserve all observed
|
|
39
|
+
variants and usage sizes. Never recreate a logo as text or substitute a library mark.
|
|
40
|
+
|
|
41
|
+
Icon priority is exact source asset, then the source sprite/library, then a style-matched
|
|
42
|
+
established library such as Iconify. Library fallback is only allowed when no source icon
|
|
43
|
+
exists and never applies to logos.
|