@wix/agent-skills 1.33.0 → 1.34.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 +23 -0
- package/package.json +2 -2
- package/skills/wix-app/references/DASHBOARD_PAGE.md +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 +38 -10
- package/skills/wix-manage/references/automations/actions.md +11 -11
- package/skills/wix-manage/references/automations/activation-status.md +6 -9
- package/skills/wix-manage/references/automations/api-catalog.md +48 -32
- package/skills/wix-manage/references/automations/automation-model.md +97 -22
- package/skills/wix-manage/references/automations/bracket-expressions.md +7 -7
- package/skills/wix-manage/references/automations/build-and-manage-automations.md +140 -309
- package/skills/wix-manage/references/automations/conditions.md +187 -0
- package/skills/wix-manage/references/automations/schemas-and-scheduling.md +191 -0
- package/skills/wix-manage/references/automations/special-actions.md +210 -0
- package/skills/wix-manage/references/automations/triggers.md +47 -10
- package/skills/wix-manage/references/automations/validation-and-verification.md +320 -0
- package/skills/wix-manage/references/custom-apps/use-app-tools.md +124 -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/create-wix-event.md +136 -73
- package/skills/wix-manage/references/events/events-dashboard-navigation.md +81 -0
- package/skills/wix-manage/references/events/manage-event-guests.md +366 -0
- package/skills/wix-manage/references/events/manage-event-tickets.md +293 -0
- package/skills/wix-manage/references/events/manage-wix-events.md +313 -55
- package/skills/wix-manage/references/sites/manage-oauth-apps.md +1 -0
- package/skills/wix-manage/references/sites/upload-static-site.md +127 -8
- package/skills/wix-manage/references/stores/update-product-with-options.md +58 -2
- 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-manage/references/custom-apps/use-app-skills-and-app-tools.md +0 -208
- package/skills/wix-replatform/resources/rp-target-wix/SPEC-product-reviews-and-blog-authorship.md +0 -330
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Launch a separate, headed Chrome profile for a Wix Harmony editor session.
|
|
3
|
+
# The Chrome DevTools endpoint is loopback-only and is never printed.
|
|
4
|
+
#
|
|
5
|
+
# Cross-platform: macOS, Linux (including headless boxes with no physical
|
|
6
|
+
# display), WSL, and Windows Git Bash/MSYS are detected and a usable
|
|
7
|
+
# Chrome/Chromium binary is located for each. Nothing here is ever
|
|
8
|
+
# substituted silently: if no browser can be found, the script fails with
|
|
9
|
+
# an actionable message naming what to install.
|
|
10
|
+
#
|
|
11
|
+
# Headless Linux note: Wix Harmony intentionally requires a HEADED browser
|
|
12
|
+
# (never --headless) so a human can interact with a Wix sign-in page if one
|
|
13
|
+
# appears. A machine with no physical monitor can still run headed Chrome
|
|
14
|
+
# against a virtual framebuffer (Xvfb) - this script will start one
|
|
15
|
+
# automatically on Linux if $DISPLAY isn't already set and Xvfb is
|
|
16
|
+
# installed. Xvfb itself is a prerequisite install (see the error message
|
|
17
|
+
# below); this script does not silently `sudo apt-get install` anything on
|
|
18
|
+
# your behalf.
|
|
19
|
+
#
|
|
20
|
+
# If Wix shows a sign-in page while running under a virtual display, you
|
|
21
|
+
# need some way to actually see and interact with it. Options, from
|
|
22
|
+
# simplest to most complete:
|
|
23
|
+
# - Take a screenshot from Playwright (page.screenshot()) to see the
|
|
24
|
+
# current page - good enough to tell what state the editor is in, but
|
|
25
|
+
# not interactive.
|
|
26
|
+
# - Run a lightweight VNC server against the same DISPLAY, e.g.:
|
|
27
|
+
# x11vnc -display :99 -localhost -nopw
|
|
28
|
+
# then forward the VNC port (default 5900) to a machine with a VNC
|
|
29
|
+
# client. This gives full interactive mouse/keyboard control, but you
|
|
30
|
+
# are responsible for setting up that port forward for your sandbox.
|
|
31
|
+
set -euo pipefail
|
|
32
|
+
|
|
33
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
34
|
+
PORT="${PW_PORT:-9333}"
|
|
35
|
+
PROFILE="${WIX_HARMONY_PROFILE_DIR:-${TMPDIR:-/tmp}/wix-harmony-editor-profile}"
|
|
36
|
+
EDITOR_URL="${1:-about:blank}"
|
|
37
|
+
|
|
38
|
+
umask 077
|
|
39
|
+
mkdir -p "$PROFILE"
|
|
40
|
+
chmod 700 "$PROFILE"
|
|
41
|
+
|
|
42
|
+
CHROME_PID_FILE="${PROFILE}/chrome.pid"
|
|
43
|
+
|
|
44
|
+
# True when the process recorded at launch is still alive and was started with THIS profile and
|
|
45
|
+
# port, so a responding CDP endpoint is provably the Chrome this script launched for this profile.
|
|
46
|
+
launched_chrome_is_ours() {
|
|
47
|
+
local pid cmd
|
|
48
|
+
[[ -f "$CHROME_PID_FILE" ]] || return 1
|
|
49
|
+
pid="$(tr -d '[:space:]' <"$CHROME_PID_FILE" 2>/dev/null || true)"
|
|
50
|
+
[[ "$pid" =~ ^[0-9]+$ ]] || return 1
|
|
51
|
+
kill -0 "$pid" 2>/dev/null || return 1
|
|
52
|
+
cmd="$(ps -p "$pid" -o args= 2>/dev/null || true)"
|
|
53
|
+
[[ "$cmd" == *"--user-data-dir=${PROFILE}"* && "$cmd" == *"--remote-debugging-port=${PORT}"* ]]
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
# If a Wix Harmony Chrome is already up on this port, nothing else to do. Any other responding
|
|
57
|
+
# CDP endpoint (another Chrome, a Playwright browser) is NOT reused: the copy tools would drive the
|
|
58
|
+
# wrong browser, profile or site.
|
|
59
|
+
if curl -fsS -m 2 "http://127.0.0.1:${PORT}/json/version" >/dev/null 2>&1; then
|
|
60
|
+
if launched_chrome_is_ours; then
|
|
61
|
+
echo "Wix Harmony Chrome is already running on local CDP port ${PORT}."
|
|
62
|
+
exit 0
|
|
63
|
+
fi
|
|
64
|
+
echo "Local CDP port ${PORT} is already served by a browser this script did not launch for" >&2
|
|
65
|
+
echo "profile ${PROFILE}. Not reusing it. Stop that browser, or set PW_PORT to a free port" >&2
|
|
66
|
+
echo "(and use the same PW_PORT for every script), then re-run." >&2
|
|
67
|
+
exit 1
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
# --- OS detection -----------------------------------------------------
|
|
71
|
+
detect_os() {
|
|
72
|
+
local uname_s
|
|
73
|
+
uname_s="$(uname -s 2>/dev/null || echo unknown)"
|
|
74
|
+
case "$uname_s" in
|
|
75
|
+
Darwin)
|
|
76
|
+
echo macos
|
|
77
|
+
;;
|
|
78
|
+
Linux)
|
|
79
|
+
if grep -qi microsoft /proc/version 2>/dev/null; then
|
|
80
|
+
echo wsl
|
|
81
|
+
else
|
|
82
|
+
echo linux
|
|
83
|
+
fi
|
|
84
|
+
;;
|
|
85
|
+
MINGW*|MSYS*|CYGWIN*)
|
|
86
|
+
echo windows
|
|
87
|
+
;;
|
|
88
|
+
*)
|
|
89
|
+
echo unknown
|
|
90
|
+
;;
|
|
91
|
+
esac
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
OS_TYPE="$(detect_os)"
|
|
95
|
+
|
|
96
|
+
# --- Chrome/Chromium discovery -----------------------------------------
|
|
97
|
+
# Prints the resolved binary path on stdout, or nothing if not found.
|
|
98
|
+
find_chrome_macos() {
|
|
99
|
+
local candidates=(
|
|
100
|
+
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
|
|
101
|
+
"$HOME/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
|
|
102
|
+
"/Applications/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing"
|
|
103
|
+
"/Applications/Chromium.app/Contents/MacOS/Chromium"
|
|
104
|
+
)
|
|
105
|
+
local c
|
|
106
|
+
for c in "${candidates[@]}"; do
|
|
107
|
+
if [[ -x "$c" ]]; then
|
|
108
|
+
echo "$c"
|
|
109
|
+
return 0
|
|
110
|
+
fi
|
|
111
|
+
done
|
|
112
|
+
return 1
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
# Finds the newest Playwright-managed Chromium build under its cache dir,
|
|
116
|
+
# e.g. ~/.cache/ms-playwright/chromium-1234/chrome-linux64/chrome. This is
|
|
117
|
+
# the browser `npx playwright install` downloads; it's a reasonable
|
|
118
|
+
# fallback on Linux boxes with no system Chrome package installed.
|
|
119
|
+
find_chrome_playwright_linux() {
|
|
120
|
+
local pw_dir="${PLAYWRIGHT_BROWSERS_PATH:-$HOME/.cache/ms-playwright}"
|
|
121
|
+
[[ -d "$pw_dir" ]] || return 1
|
|
122
|
+
local newest
|
|
123
|
+
newest="$(find "$pw_dir" -maxdepth 1 -type d -iname 'chromium-*' 2>/dev/null | sort -V | tail -1)"
|
|
124
|
+
[[ -n "$newest" ]] || return 1
|
|
125
|
+
local sub
|
|
126
|
+
for sub in chrome-linux64/chrome chrome-linux/chrome; do
|
|
127
|
+
if [[ -x "$newest/$sub" ]]; then
|
|
128
|
+
echo "$newest/$sub"
|
|
129
|
+
return 0
|
|
130
|
+
fi
|
|
131
|
+
done
|
|
132
|
+
return 1
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
find_chrome_linux() {
|
|
136
|
+
local bin
|
|
137
|
+
for bin in google-chrome google-chrome-stable chromium chromium-browser; do
|
|
138
|
+
if command -v "$bin" >/dev/null 2>&1; then
|
|
139
|
+
command -v "$bin"
|
|
140
|
+
return 0
|
|
141
|
+
fi
|
|
142
|
+
done
|
|
143
|
+
find_chrome_playwright_linux && return 0
|
|
144
|
+
return 1
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
find_chrome_wsl() {
|
|
148
|
+
# Prefer a native Linux Chrome/Chromium installed inside the WSL distro,
|
|
149
|
+
# then fall back to the Windows-side install reachable under /mnt/c.
|
|
150
|
+
find_chrome_linux && return 0
|
|
151
|
+
local candidates=(
|
|
152
|
+
"/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"
|
|
153
|
+
"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"
|
|
154
|
+
)
|
|
155
|
+
local c
|
|
156
|
+
for c in "${candidates[@]}"; do
|
|
157
|
+
if [[ -x "$c" ]]; then
|
|
158
|
+
echo "$c"
|
|
159
|
+
return 0
|
|
160
|
+
fi
|
|
161
|
+
done
|
|
162
|
+
return 1
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
find_chrome_windows() {
|
|
166
|
+
local bin
|
|
167
|
+
for bin in chrome.exe chromium.exe; do
|
|
168
|
+
if command -v "$bin" >/dev/null 2>&1; then
|
|
169
|
+
command -v "$bin"
|
|
170
|
+
return 0
|
|
171
|
+
fi
|
|
172
|
+
done
|
|
173
|
+
local candidates=(
|
|
174
|
+
"/c/Program Files/Google/Chrome/Application/chrome.exe"
|
|
175
|
+
"/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"
|
|
176
|
+
)
|
|
177
|
+
local c
|
|
178
|
+
for c in "${candidates[@]}"; do
|
|
179
|
+
if [[ -x "$c" ]]; then
|
|
180
|
+
echo "$c"
|
|
181
|
+
return 0
|
|
182
|
+
fi
|
|
183
|
+
done
|
|
184
|
+
return 1
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
CHROME=""
|
|
188
|
+
case "$OS_TYPE" in
|
|
189
|
+
macos) CHROME="$(find_chrome_macos || true)" ;;
|
|
190
|
+
linux) CHROME="$(find_chrome_linux || true)" ;;
|
|
191
|
+
wsl) CHROME="$(find_chrome_wsl || true)" ;;
|
|
192
|
+
windows) CHROME="$(find_chrome_windows || true)" ;;
|
|
193
|
+
esac
|
|
194
|
+
|
|
195
|
+
if [[ -z "$CHROME" ]]; then
|
|
196
|
+
case "$OS_TYPE" in
|
|
197
|
+
macos)
|
|
198
|
+
echo "No Google Chrome or Chromium install was found under /Applications." >&2
|
|
199
|
+
echo "Install Google Chrome (https://www.google.com/chrome/) and retry." >&2
|
|
200
|
+
;;
|
|
201
|
+
linux)
|
|
202
|
+
echo "No Chrome/Chromium binary was found on PATH (checked: google-chrome," >&2
|
|
203
|
+
echo "google-chrome-stable, chromium, chromium-browser), and no Playwright-managed" >&2
|
|
204
|
+
echo "Chromium was found under \${PLAYWRIGHT_BROWSERS_PATH:-~/.cache/ms-playwright}." >&2
|
|
205
|
+
echo "Install one of:" >&2
|
|
206
|
+
echo " sudo apt-get install -y chromium-browser # Debian/Ubuntu" >&2
|
|
207
|
+
echo " sudo dnf install -y chromium # Fedora/RHEL" >&2
|
|
208
|
+
echo "or fetch Playwright's bundled browser: npx playwright install chromium" >&2
|
|
209
|
+
;;
|
|
210
|
+
wsl)
|
|
211
|
+
echo "No Chrome/Chromium binary was found inside WSL or under /mnt/c/Program Files." >&2
|
|
212
|
+
echo "Install Chrome/Chromium inside the WSL distro, or install Google Chrome on" >&2
|
|
213
|
+
echo "the Windows host so it is reachable at /mnt/c/Program Files/Google/Chrome/..." >&2
|
|
214
|
+
;;
|
|
215
|
+
windows)
|
|
216
|
+
echo "No chrome.exe/chromium.exe was found on PATH or under Program Files." >&2
|
|
217
|
+
echo "Install Google Chrome (https://www.google.com/chrome/) and retry." >&2
|
|
218
|
+
;;
|
|
219
|
+
*)
|
|
220
|
+
echo "Could not detect this OS (uname -s reported an unrecognized value) and" >&2
|
|
221
|
+
echo "no Chrome/Chromium binary could be located automatically." >&2
|
|
222
|
+
;;
|
|
223
|
+
esac
|
|
224
|
+
exit 1
|
|
225
|
+
fi
|
|
226
|
+
|
|
227
|
+
# --- Headless Linux: provide a virtual display if none exists ----------
|
|
228
|
+
# Real desktops (macOS, WSL with WSLg, Windows) already have a display.
|
|
229
|
+
# A headless Linux sandbox does not, but headed Chrome still needs one to
|
|
230
|
+
# start; Xvfb provides a virtual framebuffer it can render into.
|
|
231
|
+
if [[ "$OS_TYPE" == "linux" && -z "${DISPLAY:-}" ]]; then
|
|
232
|
+
XVFB_DISPLAY_NUM="${WIX_HARMONY_XVFB_DISPLAY:-99}"
|
|
233
|
+
XVFB_LOCK="/tmp/.X${XVFB_DISPLAY_NUM}-lock"
|
|
234
|
+
# An X11 lock file's mere existence is not proof a usable Xvfb is behind it: if a prior Xvfb
|
|
235
|
+
# was killed uncleanly (OOM, `kill -9`, a container restart) the lock file survives with no
|
|
236
|
+
# process left to serve the display, and Chrome would then fail against a dead display with
|
|
237
|
+
# only a generic ~20s CDP-timeout error instead of this script's own actionable diagnosis. Per
|
|
238
|
+
# the standard X11 lock-file convention, the file's content IS the owning process's pid (ASCII
|
|
239
|
+
# decimal, whitespace-padded) -- check it directly rather than trusting the file's presence.
|
|
240
|
+
if [[ -e "$XVFB_LOCK" ]]; then
|
|
241
|
+
xvfb_lock_pid="$(tr -d '[:space:]' < "$XVFB_LOCK" 2>/dev/null || true)"
|
|
242
|
+
xvfb_lock_stale=0
|
|
243
|
+
if [[ -z "$xvfb_lock_pid" ]]; then
|
|
244
|
+
xvfb_lock_stale=1
|
|
245
|
+
elif [[ ! -e "/proc/$xvfb_lock_pid" ]]; then
|
|
246
|
+
# BUG FIX (code review, round 3): `kill -0` alone cannot tell "no such process" (ESRCH,
|
|
247
|
+
# truly stale) apart from "process alive, owned by a different user" (EPERM) -- both return
|
|
248
|
+
# the same nonzero exit code. Checking /proc/<pid> directly (this branch only runs under
|
|
249
|
+
# linux, see the OS_TYPE guard above) answers the ESRCH question on its own: no /proc entry
|
|
250
|
+
# means the process is genuinely gone.
|
|
251
|
+
# NOTE (code review, round 6): this is the same EPERM/ESRCH distinction as
|
|
252
|
+
# `skills/wix-replatform/lib/local-state.js`'s `isProcessAlive` (consolidated there with
|
|
253
|
+
# `execution-health-check.js` in round 5), reimplemented here in bash since JS and bash
|
|
254
|
+
# can't share code cheaply. A future fix to one should prompt a check of the other.
|
|
255
|
+
xvfb_lock_stale=1
|
|
256
|
+
elif ! kill -0 "$xvfb_lock_pid" 2>/dev/null; then
|
|
257
|
+
# /proc/<pid> exists (a real process is running under that pid) but kill -0 still failed:
|
|
258
|
+
# this is EPERM, not ESRCH -- a live Xvfb owned by a different UID (e.g. a shared
|
|
259
|
+
# container/sandbox). Misdiagnosing this as dead and deleting its lock would let a second
|
|
260
|
+
# Xvfb start and race to bind the same display. Fail loudly instead of guessing.
|
|
261
|
+
echo "Xvfb lock ${XVFB_LOCK} names pid ${xvfb_lock_pid}, which is running but owned by a" >&2
|
|
262
|
+
echo "different user (kill -0 was denied) -- this looks like a LIVE Xvfb this script does" >&2
|
|
263
|
+
echo "not have permission to inspect or replace, not a stale lock from a dead process." >&2
|
|
264
|
+
echo "Remove ${XVFB_LOCK} yourself once you've confirmed it's safe, or export DISPLAY to" >&2
|
|
265
|
+
echo "point at a display this script can use." >&2
|
|
266
|
+
exit 1
|
|
267
|
+
fi
|
|
268
|
+
if [[ "$xvfb_lock_stale" -eq 1 ]]; then
|
|
269
|
+
echo "Removing stale Xvfb lock ${XVFB_LOCK} (pid ${xvfb_lock_pid:-unknown} is not running)." >&2
|
|
270
|
+
# `|| true`: under `set -e`, an `rm -f` that genuinely fails (permission denied, or the
|
|
271
|
+
# path turning out not to be a plain file) would otherwise abort the script right here with
|
|
272
|
+
# rm's own generic error, before the verification below ever runs. Trust the follow-up
|
|
273
|
+
# existence check, not rm's exit code, to decide whether removal actually happened.
|
|
274
|
+
rm -f "$XVFB_LOCK" || true
|
|
275
|
+
if [[ -e "$XVFB_LOCK" ]]; then
|
|
276
|
+
# BUG FIX (code review, round 3): `rm -f` exits 0 even when it silently fails to remove a
|
|
277
|
+
# path it lacks permission for (e.g. a sticky /tmp directory owned by another user, or the
|
|
278
|
+
# path turning out not to be a plain file at all) -- verify removal actually happened
|
|
279
|
+
# rather than trusting rm's exit code. Falling through here with the lock still present
|
|
280
|
+
# would skip starting a fresh Xvfb below and export DISPLAY at a dead display.
|
|
281
|
+
echo "Failed to remove stale Xvfb lock ${XVFB_LOCK} (no permission, or it is not a" >&2
|
|
282
|
+
echo "plain file?). Remove it manually and re-run, or export DISPLAY yourself." >&2
|
|
283
|
+
exit 1
|
|
284
|
+
fi
|
|
285
|
+
fi
|
|
286
|
+
fi
|
|
287
|
+
if [[ ! -e "$XVFB_LOCK" ]]; then
|
|
288
|
+
if ! command -v Xvfb >/dev/null 2>&1; then
|
|
289
|
+
echo "No \$DISPLAY is set and Xvfb is not installed, so headed Chrome cannot" >&2
|
|
290
|
+
echo "start on this headless Linux machine. Install it, e.g.:" >&2
|
|
291
|
+
echo " sudo apt-get install -y xvfb # Debian/Ubuntu" >&2
|
|
292
|
+
echo " sudo dnf install -y xorg-x11-server-Xvfb # Fedora/RHEL" >&2
|
|
293
|
+
echo "then re-run this script (or export DISPLAY yourself if you already have" >&2
|
|
294
|
+
echo "a virtual/real display running)." >&2
|
|
295
|
+
exit 1
|
|
296
|
+
fi
|
|
297
|
+
nohup Xvfb ":${XVFB_DISPLAY_NUM}" -screen 0 1280x800x24 \
|
|
298
|
+
>"${PROFILE}/xvfb.log" 2>&1 &
|
|
299
|
+
xvfb_pid=$!
|
|
300
|
+
disown
|
|
301
|
+
# A backgrounded Xvfb takes a moment to create its lock file and start serving the display;
|
|
302
|
+
# `sleep 1` then unconditionally exporting DISPLAY assumed it always makes that window, with no
|
|
303
|
+
# check that it actually came up. If Xvfb itself failed fast (missing X extension, a stale
|
|
304
|
+
# /tmp permission problem, port/display already in some other conflicting state), the old code
|
|
305
|
+
# would still export DISPLAY and hand Chrome a dead display -- Chrome would then fail ~20s
|
|
306
|
+
# later against a generic CDP-timeout, with nothing pointing back at Xvfb as the real cause.
|
|
307
|
+
# Poll for the lock file actually appearing (proof Xvfb bound the display), or the backgrounded
|
|
308
|
+
# pid dying (proof it won't), across a short retry window -- the same diagnostic quality as the
|
|
309
|
+
# stale-lock check above this block, rather than a blind fixed sleep.
|
|
310
|
+
xvfb_ready=0
|
|
311
|
+
for _ in $(seq 1 30); do
|
|
312
|
+
if [[ -e "$XVFB_LOCK" ]]; then
|
|
313
|
+
# The lock appearing is not proof Xvfb stays up: it can create the lock and then exit.
|
|
314
|
+
# Re-check the pid after a short settle before trusting the display.
|
|
315
|
+
sleep 0.3
|
|
316
|
+
if kill -0 "$xvfb_pid" 2>/dev/null; then
|
|
317
|
+
xvfb_ready=1
|
|
318
|
+
fi
|
|
319
|
+
break
|
|
320
|
+
fi
|
|
321
|
+
if ! kill -0 "$xvfb_pid" 2>/dev/null; then
|
|
322
|
+
break
|
|
323
|
+
fi
|
|
324
|
+
sleep 0.1
|
|
325
|
+
done
|
|
326
|
+
if [[ "$xvfb_ready" -ne 1 ]]; then
|
|
327
|
+
echo "Xvfb did not come up on display :${XVFB_DISPLAY_NUM} within 3s (lock file" >&2
|
|
328
|
+
echo "${XVFB_LOCK} never appeared). Check ${PROFILE}/xvfb.log for its own error output," >&2
|
|
329
|
+
echo "e.g. a missing X extension, a permissions problem under /tmp, or the display" >&2
|
|
330
|
+
echo "number already being used by something else that isn't Xvfb itself." >&2
|
|
331
|
+
exit 1
|
|
332
|
+
fi
|
|
333
|
+
fi
|
|
334
|
+
export DISPLAY=":${XVFB_DISPLAY_NUM}"
|
|
335
|
+
echo "No \$DISPLAY was set; using virtual display ${DISPLAY} (Xvfb) for headed Chrome." >&2
|
|
336
|
+
echo "If Wix shows a sign-in page, you'll need a way to see/interact with this" >&2
|
|
337
|
+
echo "virtual display - e.g. 'x11vnc -display ${DISPLAY} -localhost -nopw' plus a" >&2
|
|
338
|
+
echo "forwarded VNC port, or take Playwright screenshots to inspect page state." >&2
|
|
339
|
+
fi
|
|
340
|
+
|
|
341
|
+
nohup "$CHROME" \
|
|
342
|
+
--user-data-dir="$PROFILE" \
|
|
343
|
+
--remote-debugging-address=127.0.0.1 \
|
|
344
|
+
--remote-debugging-port="$PORT" \
|
|
345
|
+
--no-first-run \
|
|
346
|
+
--no-default-browser-check \
|
|
347
|
+
"$EDITOR_URL" >"${PROFILE}/chrome.log" 2>&1 &
|
|
348
|
+
echo "$!" >"$CHROME_PID_FILE"
|
|
349
|
+
|
|
350
|
+
for _ in $(seq 1 40); do
|
|
351
|
+
if curl -fsS -m 2 "http://127.0.0.1:${PORT}/json/version" >/dev/null 2>&1; then
|
|
352
|
+
echo "Wix Harmony Chrome is ready on local CDP port ${PORT}."
|
|
353
|
+
exit 0
|
|
354
|
+
fi
|
|
355
|
+
sleep 0.5
|
|
356
|
+
done
|
|
357
|
+
|
|
358
|
+
echo "Chrome did not expose its local CDP endpoint. Check ${PROFILE}/chrome.log." >&2
|
|
359
|
+
exit 1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wix-headless
|
|
3
|
-
description: "Connect Wix business services (Stores, Bookings, CMS, Blog, Events, Forms, and more) to a Wix Headless frontend — infer the needed capabilities, install the apps, seed backend content, and produce an SDK-integration guide. For managed (Wix-hosted) projects it can also build the frontend: scaffold a new site (create) or wire an existing/brought-in design (connect), then build and release. Works across managed, self-managed, and stripe project types. Triggers: set up a Wix Headless backend, add Wix business features to my app, build or host a Wix site, connect/implement this design with Wix."
|
|
3
|
+
description: "Connect Wix business services (Stores, Bookings, Donations, CMS, Blog, Events, Forms, and more) to a Wix Headless frontend — infer the needed capabilities, install the apps, seed backend content, and produce an SDK-integration guide. For managed (Wix-hosted) projects it can also build the frontend: scaffold a new site (create) or wire an existing/brought-in design (connect), then build and release. Works across managed, self-managed, and stripe project types. Triggers: set up a Wix Headless backend, add Wix business features to my app, accept donations, build or host a Wix site, connect/implement this design with Wix."
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Bash(curl *)
|
|
6
6
|
- Bash(npx @wix/cli@latest *)
|
|
@@ -107,6 +107,11 @@ Each Wix call uses the universal call shape (`SETUP.md` §1) with `$TOKEN`/`$SIT
|
|
|
107
107
|
|
|
108
108
|
> **Don't smoke-test the frontend locally unless the user asks to verify.** The deliverable is the built-and-released site (managed) or the SDK guide (backend-only) — not a local test report. By **default do not** start a dev server (`wix dev` / `astro dev` / `npm run dev`) to curl pages, drive the cart / booking / login flow, or launch a headless browser: correctness comes from following the recipes, real errors surface at `wix build` / `wix release`, and a headless run can't complete an interactive login or a real payment anyway — so these loops routinely burn minutes of wall for little signal (this is distinct from, and in addition to, the "release once at the very end" rule — that one only bans extra *build+release* cycles, not dev-server testing). **Only** spin up a dev server and smoke-test when the user's prompt **explicitly asks to verify / test / confirm it works** — and then keep it to a single lightweight pass (pages compile and render), not a full purchase/booking/login drive. The one post-release check in `<TYPE_DIR>/DEPLOYMENT.md` is the sanctioned verification.
|
|
109
109
|
|
|
110
|
+
**Donations exception to the smoke-test policy above:** for a build that accepts donations, follow
|
|
111
|
+
the bounded anonymous API handoff check in `references/inline-recipes/how-to-code-donations.md`
|
|
112
|
+
before claiming it works. It does not authorize a payment or campaign mutation, and does not require
|
|
113
|
+
a dev-server testing loop. That recipe also defines the separate hosted-checkout and payment checks.
|
|
114
|
+
|
|
110
115
|
## Path resolution
|
|
111
116
|
|
|
112
117
|
Compute `<SKILL_ROOT>` from this file (`<SKILL_ROOT>/SKILL.md` — strip `/SKILL.md`); hold the absolute path in scratch. Then resolve the project type to its folder and hold it too:
|
|
@@ -123,7 +128,7 @@ Compute `<SKILL_ROOT>` from this file (`<SKILL_ROOT>/SKILL.md` — strip `/SKILL
|
|
|
123
128
|
| Image generation (opt-in; agnostic) | `<SKILL_ROOT>/references/IMAGE_GENERATION.md` |
|
|
124
129
|
| Design — fallback visual quality bar for the built frontend, when the user gave no design direction of their own (managed **create** only) | `<SKILL_ROOT>/references/DESIGN.md` |
|
|
125
130
|
| Content — fallback copy quality bar for the built frontend, when the user gave no copy/voice direction of their own (managed **create** only) | `<SKILL_ROOT>/references/CONTENT.md` |
|
|
126
|
-
| Experience overlays — a vertical's own design + copy bar on top of DESIGN/CONTENT (optional per vertical; read when that vertical is loaded) | `<SKILL_ROOT>/references/inline-recipes/experience-<vertical>.md` (today: `experience-store.md`) |
|
|
131
|
+
| Experience overlays — a vertical's own design + copy bar on top of DESIGN/CONTENT (optional per vertical; read when that vertical is loaded) | `<SKILL_ROOT>/references/inline-recipes/experience-<vertical>.md` (today: `experience-store.md`, `experience-donations.md`) |
|
|
127
132
|
| AI features — text/chat + embeddings (opt-in; agnostic) | `<SKILL_ROOT>/references/AI_FEATURES.md` |
|
|
128
133
|
| Feedback — relay the user's headless-experience feedback to Wix (opt-in; user-approved) | `<SKILL_ROOT>/references/FEEDBACK.md` |
|
|
129
134
|
| **Authentication** — obtain `$TOKEN`/`$SITE_ID`/`clientId` (project-type-specific) | `<TYPE_DIR>/AUTHENTICATION.md` |
|
|
@@ -19,7 +19,12 @@ Each built vertical has three parts (the latter two scoped to `create`/backend-o
|
|
|
19
19
|
|
|
20
20
|
## Built verticals — installed, seeded, and described in the Handoff
|
|
21
21
|
|
|
22
|
-
The verticals the skill operates end-to-end today: **stores · blog · cms · forms · events · bookings · rentals · pricing-plans · restaurants · portfolio** (with `forms` as the floor when nothing richer is named).
|
|
22
|
+
The verticals the skill operates end-to-end today: **stores · blog · cms · forms · events · bookings · rentals · pricing-plans · restaurants · portfolio · donations** (with `forms` as the floor when nothing richer is named).
|
|
23
|
+
|
|
24
|
+
### donations — accept contributions to a cause
|
|
25
|
+
- **Intent:** donate / fundraising / charitable giving / donation campaign / recurring donation. This is not a generic contact form, merchandise purchase or Pricing Plans membership.
|
|
26
|
+
- **Required site features:** a clear giving entry point; live campaign discovery when there are several causes (a single-cause form otherwise); campaign detail with the configured amount/frequency choices and optional features; a working hosted checkout handoff; an honest return/thank-you state.
|
|
27
|
+
- **Implementation checklist:** design from the cause and supplied content; bound mobile imagery so the giving decision is easy to reach; show configured impact text, custom limits, notes and optional fee coverage; make recurring commitments explicit; progress only when configured/readable; no fabricated tax, donor or impact claims. Read the shared Donations experience reference linked by `how-to-code-donations.md`.
|
|
23
28
|
|
|
24
29
|
### stores — sell products
|
|
25
30
|
- **Intent:** sell / shop / products / catalog / merch / store.
|
|
@@ -32,7 +32,7 @@ Discovery is pure inference — it needs **no authentication** and is **agnostic
|
|
|
32
32
|
|
|
33
33
|
Read the **user intent** (+ optional project signals: `package.json` name, README, visible copy) against the vertical index in `references/CAPABILITIES.md` — each entry there carries the intent signals that point to it. Pick every vertical that genuinely fits → `verticals[]`. Multiple signals → multiple capabilities. On ambiguity, prefer the more specific vertical; if nothing dynamic is named, fall to the **forms** floor (a contact form). **Never return an empty set.**
|
|
34
34
|
|
|
35
|
-
Resolve to the skill's operational set — **stores · blog · cms · forms · events · bookings · rentals · pricing-plans · restaurants · portfolio** (`CAPABILITIES.md` § "Built verticals"). If intent points squarely at a vertical outside that set, note it plainly as not-yet-wired (per the index) and resolve the rest; don't force an unrelated capability in its place.
|
|
35
|
+
Resolve to the skill's operational set — **stores · blog · cms · forms · events · bookings · rentals · pricing-plans · restaurants · portfolio · donations** (`CAPABILITIES.md` § "Built verticals"). If intent points squarely at a vertical outside that set, note it plainly as not-yet-wired (per the index) and resolve the rest; don't force an unrelated capability in its place.
|
|
36
36
|
|
|
37
37
|
## 2 · Infer brand
|
|
38
38
|
|
|
@@ -54,6 +54,7 @@ For each capability, build its `intent.<cap>` block — the inputs the seed step
|
|
|
54
54
|
| pricing-plans | `{ planCount, tiersNamed: [] }` | `planCount: 2` (e.g. Basic / Pro), monthly billing |
|
|
55
55
|
| restaurants | `{ menuName, sections: [{ name, itemCount }], ordering?, reservations?, experiences?: [{ name }] }` | one menu, 2 sections, `itemCount: 3` each; add-ons only when the brief names them. **`experiences[]`** = special dining occasions guests reserve (chef's table, tasting menu) — a restaurant *reservation that is an experience*, **not** the `bookings` vertical (see `CAPABILITIES.md`). |
|
|
56
56
|
| portfolio | `{ collections: [{ name }], projectCount }` | one brand-derived collection, `projectCount: 3` |
|
|
57
|
+
| donations | `{ campaigns: [{ name, frequencies?, presets?, customAmount?, goal?, comments?, askCoverFee? }] }` | Reuse existing campaigns. For an authorized new setup, one cause; use only approved amounts/impact claims/goals and offered frequencies. Do not invent fundraising facts. |
|
|
57
58
|
|
|
58
59
|
Counts are deliberately small (the seed shows the shape, not a full catalog).
|
|
59
60
|
|
|
@@ -36,6 +36,7 @@ Before implementing a capability, Read the local recipe linked in its row.
|
|
|
36
36
|
|
|
37
37
|
| Capability | Package(s) | Required recipe |
|
|
38
38
|
|---|---|---|
|
|
39
|
+
| donations | `@wix/donations` + `@wix/ecom` + `@wix/redirects` | `how-to-code-donations.md` — campaign reads, numeric donation options, Cart V2 → hosted redirect, diagnostics and anonymous verification; follow its shared experience reference. |
|
|
39
40
|
| stores | `@wix/stores` + `@wix/categories` (+ `@wix/ecom`, `@wix/redirects` for cart/checkout) | `how-to-code-a-store.md` — Catalog V3 gallery (sort/filter/paging), product page (variants, prices, ribbons), Cart V2 + checkout, and what a complete storefront shows. |
|
|
40
41
|
| blog | `@wix/blog` (+ `@wix/ricos` to render `richContent`; **`@wix/comments` + `@wix/members`** when the blog has comments/members; `@wix/blog` `likes` when the site has members) | `how-to-code-a-blog.md` — Blog V3 read/render + member features (likes, comments). Supplement: <https://dev.wix.com/docs/sdk/business-solutions/blog.md>. |
|
|
41
42
|
| cms | `@wix/data` | `how-to-code-cms.md` — `items.query` read contract. |
|
|
@@ -74,10 +75,14 @@ Everything else the host resolves live from the queries in §3. (Static platform
|
|
|
74
75
|
- **Gating is a LIVE signal, never a hardcoded id list.** Whenever content is gated (members-only articles, plan-eligible class booking, any "premium" surface), decide eligibility from a signal read **at request time** — a queryable flag carried on the content (a `members-only` blog category/tag or a boolean CMS field) and live coverage/eligibility (Cart V2's `currentCartV2.calculateCurrentCart()` → `summary.paymentSummary.memberships`, or the member's active-order `planId`s matched against **live** Benefit-Program coverage). **Never** gate on a frozen set of "premium" slugs/ids or a seed-time `plan→service` map: a gated post or a newly-covered service the owner adds later would silently read as public/ineligible. See `how-to-code-a-blog.md` (member features) and `how-to-code-pricing-plans.md` (coverage read).
|
|
75
76
|
|
|
76
77
|
### 6 · What a complete site must include (per loaded capability)
|
|
78
|
+
When **donations** is loaded, carry the donor-experience reference linked in `how-to-code-donations.md`
|
|
79
|
+
into the handoff. Distinguish anonymous API verification, hosted-checkout verification and an actual
|
|
80
|
+
payment; do not claim one from another or omit the bounded donation handoff check.
|
|
81
|
+
|
|
77
82
|
For each loaded capability, carry its **Required site features** and **Implementation checklist** from `references/CAPABILITIES.md` into the guide — in plain product language, lightly tailored to what was seeded. **This is the build spec, not optional polish:** the host should build every *required feature* and cover every *checklist* item. For example, a blog must show the **author** (name + photo), the publish date and reading time, the cover image, and the **full formatted content** (not flattened text) — a posts-list-plus-plain-text-body is incomplete. The host maps these onto its own components using the packages/docs in §3 and the seeded schema in §4.
|
|
78
83
|
|
|
79
84
|
- State them as the *what* (product behaviour), not the *how* (no component code, no API calls) — the host owns the build.
|
|
80
|
-
- **When a loaded vertical ships an experience overlay** (`references/inline-recipes/experience-<vertical>.md`; today `experience-store.md`), point the host at it alongside the checklist — it is that vertical's design and copy bar (surfaces, first-viewport rules, truthful copy), read after the general `DESIGN.md`/`CONTENT.md`.
|
|
85
|
+
- **When a loaded vertical ships an experience overlay** (`references/inline-recipes/experience-<vertical>.md`; today `experience-store.md`, `experience-donations.md`), point the host at it alongside the checklist — it is that vertical's design and copy bar (surfaces, first-viewport rules, truthful copy), read after the general `DESIGN.md`/`CONTENT.md`.
|
|
81
86
|
- If a *required feature* depends on backend support that **Seed** enabled (e.g., comments), note it's available so the host wires it. If Seed could **not** enable it, say so plainly rather than implying the site is complete.
|
|
82
87
|
- **When pricing-plans is loaded, `login / account / gated content` is a *required* feature, not optional polish** — a plans grid with no way to log in and subscribe is incomplete (subscribing requires a member; §5 member-auth note). Point the host at the matching `how-to-code-members-*.md` recipe. For the other verticals, a "my …" surface (my orders / my bookings / my registrations) is a member-gated *enhancement* — list it only if the run's intent calls for an account view, and flag it needs the same login mechanism.
|
|
83
88
|
- **Curation / hero / nav must come from a LIVE query, never a pinned slug/id.** A "featured" or "latest" item, a hero, and every nav/category bar must be driven by a query — "next upcoming" (`queryEvents` filtered to `UPCOMING`/`STARTED`, sorted by start date), "newest" (`queryPosts`), `queryCategories`, etc. — resolved at request time. A pinned "featured event" slug not only fails to rotate as the owner adds content, it can go **stale/past**. Even a **single-item** site (one event, one product) must drive its homepage from the *listing query*, not a hardcoded lone slug — so a second item the owner adds later surfaces automatically instead of staying invisible.
|
|
@@ -17,7 +17,7 @@ Use `$TOKEN` / `$SITE_ID` from the provided authentication mechanism (see `<TYPE
|
|
|
17
17
|
|
|
18
18
|
## 1 · Where the *how* comes from — the inline recipes
|
|
19
19
|
|
|
20
|
-
Each built capability's create flow lives in a **
|
|
20
|
+
Each built capability's create flow lives in a **local recipe** at `inline-recipes/setup-<capability>.md` (§2 maps each capability to its file). Most inline their endpoints and bodies; Donations delegates to the shared management recipe to avoid a second maintained contract. **Open the mapped recipe and follow its local references**; do not rediscover covered calls. **Read a recipe once per run** — if you already opened it while planning, proceed from what you have — and only read a capability's recipe if you're going to seed it yourself (a separate concurrent unit reads its own; see the concurrency note above).
|
|
21
21
|
|
|
22
22
|
For a capability with **no** inline recipe (e.g. `coupons`), or for a field/error/endpoint a recipe doesn't cover, **`DOC_DISCOVERY.md` is the fallback** — never the first move.
|
|
23
23
|
|
|
@@ -29,8 +29,9 @@ Two cautions apply to every capability regardless of recipe:
|
|
|
29
29
|
|
|
30
30
|
## 2 · What to seed per capability
|
|
31
31
|
|
|
32
|
-
Each entry states only the entities, where their count/content comes from, the policy that is genuinely the skill's call, the IDs to keep, and **which inline recipe carries the calls** — read that
|
|
32
|
+
Each entry states only the entities, where their count/content comes from, the policy that is genuinely the skill's call, the IDs to keep, and **which inline recipe carries the calls** — read that local recipe and any shared recipe it delegates to for everything else.
|
|
33
33
|
|
|
34
|
+
- **donations** — *Donation campaigns.* Recipe: **`setup-donations.md`**. Read existing campaigns first; do not seed for a frontend-only request. For an authorized new setup, use `intent.donations.campaigns` and the shared recipe's constraints. Keep created IDs transiently for readback and cover-image attachment; campaigns are discovered live in the frontend. Goals, deadlines and impact claims require supplied/approved content; payment readiness is separate from campaign creation.
|
|
34
35
|
- **stores** — *A product catalog.* Recipe: **`setup-online-store.md`**. `intent.stores.productCount` products whose names/prices fit `brand`. If `intent.stores.categoriesNamed` is non-empty, create exactly those categories and assign products into them; **if empty, create none** (skill policy — overrides any docs default). **Variant cardinality — keep it small by default:** unless `intent.stores` calls for specific options, give each product **at most one option with ≤3 choices** (so ≤3 variants/product); many products legitimately have **no** options (a single variant). Seeding cost scales with the variant Cartesian product and the field count per variant, so don't manufacture options the brief doesn't need — but **honor a larger/explicit option set when intent names one** (this default is a floor, not a cap). Text-only by default (images only when `imagery` is on — §1, §4). **Keep (seed-time only):** `categoryIds[]` to assign products into their categories; **nothing goes to the handoff** — the frontend lists products and categories **live** (`queryProducts` / `searchProducts` / `queryCategories`), so owner-added products/categories appear with no code change.
|
|
35
36
|
- **blog** — *Initial posts.* Recipe: **`setup-blog.md`**. `intent.blog.postCount` posts on `intent.blog.topics` (or brand-derived topics). Text-only (no covers). **Keep:** nothing for the handoff — posts are discovered **live** (`queryPosts`, `[...slug]` routes). Track created post ids only transiently (to confirm success / assign categories).
|
|
36
37
|
- **cms** — *Content collections.* Recipe: **`setup-cms.md`**. One collection per `intent.cms.collections` entry; `itemCount` items each, content from `brand`. Collections are **public-read** (visitor reads on the frontend) by default. **(Opt-in, members only)** if the brief calls for per-user-private or member-only data **and** members login is in the run, seed that collection **member-scoped** instead (per-user or member-only — see `setup-cms.md`); a per-user collection is seeded **empty** (members populate it), since admin-seeded rows are owned by the admin. **Keep (→ handoff):** `collectionIds{<name>}` + each collection's **field keys** — this is *structural* (the frontend must know the collection name and its fields to query and bind; it doesn't change when an owner adds a row). `itemIds{<name>:[]}` only transiently, for wiring multi-references during seeding.
|
|
@@ -27,6 +27,7 @@ For each capability in `verticals[]`, install its app by `appDefId` (these are t
|
|
|
27
27
|
- **pricing-plans** → `1522827f-c56c-a5c9-2ac9-00f9e6ae12d3`
|
|
28
28
|
- **restaurants** → `b278a256-2757-4f19-9313-c05c783bec92` (Wix Restaurants **Menus** — the seedable core). Online ordering and table reservations are **separate optional apps**, install only if intent calls for them: Orders (New) → `9a5d83fd-8570-482e-81ab-cfa88942ee60`, Table Reservations → `f9c07de2-5341-40c6-b096-8eb39de391fb`. **Experiences** (special dining occasions guests reserve — chef's tables, tasting menus; see `CAPABILITIES.md`) are a **feature of the Table Reservations app, not a separate install** — installing Table Reservations is all that's needed to create and book them (`setup-restaurant-experiences.md`).
|
|
29
29
|
- **portfolio** → `d90652a2-f5a1-4c7c-84c4-d4cdcc41f130` (Wix Portfolio; the install ships a default sample collection + projects — `setup-portfolio.md` STEP 0 cleans them)
|
|
30
|
+
- **donations** → `333b456e-dd48-4d6b-b32b-9fd48d74e163` (Wix Donations), plus Checkout & Orders `1380b703-ce81-ff05-f115-39571d94dfcd`. Confirm installed state and authorized changes first; do not reinstall to fix a malformed cart payload.
|
|
30
31
|
- **cms** → **no install** (Wix Data is core) — skip
|
|
31
32
|
|
|
32
33
|
For any vertical added later, its appDefId is in the docs — "Apps Created by Wix": <https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix.md>.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Donations Experience"
|
|
3
|
+
description: The donor-facing design and copy bar for a Wix Donations site, covering cause discovery, campaign pages, accessible giving forms, recurring intent, draft recovery, truthful progress and checkout returns. Read when building or wiring a donation experience; the API contract lives in how-to-code-donations.md.
|
|
4
|
+
---
|
|
5
|
+
**EXPERIENCE OVERLAY**: What makes a donation experience good — read after the general `DESIGN.md` and `CONTENT.md` when using those guides.
|
|
6
|
+
|
|
7
|
+
Read alongside [How to Code Donations](how-to-code-donations.md). These are defaults, not
|
|
8
|
+
a prescribed design: the user's brief wins. Configure campaigns only when asked; presentation must
|
|
9
|
+
follow their live settings. These principles are framework- and hosting-independent; this is a
|
|
10
|
+
Headless experience, not instructions to install an Editor widget.
|
|
11
|
+
|
|
12
|
+
## Design from the cause
|
|
13
|
+
|
|
14
|
+
Inspect campaign count, names, imagery, amounts/impact text, frequencies, goals and giving rules
|
|
15
|
+
before choosing layout and tokens. Use the organization's supplied story and brand to choose a
|
|
16
|
+
distinctive visual direction; “nonprofit” does not imply one palette, stock photograph or page formula.
|
|
17
|
+
Treat approved imagery with dignity; do not present generated beneficiaries or events as documentary
|
|
18
|
+
evidence. The campaign entity has no story field; keep authored narrative separate from its data.
|
|
19
|
+
|
|
20
|
+
- **Homepage:** explain who is helped, what the organization does and one clear route to give in the
|
|
21
|
+
first screen. Follow with the content that earns the decision: a real featured cause, supplied impact
|
|
22
|
+
explanations, a story, or verified trust information. A single-cause site need not invent a campaign
|
|
23
|
+
gallery. Distinguish receiving help, volunteering, sponsorship and merchandise from donating.
|
|
24
|
+
- **Several campaigns:** offer meaningful discovery with image, name, optional real progress, status
|
|
25
|
+
and a direct campaign link. Keep cards aligned with long names and missing images. One campaign
|
|
26
|
+
can open directly at `/donate`; do not add an unnecessary selection step. On phones, keep the
|
|
27
|
+
introduction and covers compact enough that the first cause's name and entry point appear in the
|
|
28
|
+
first screen, not just a large image. This is discovery, not a second homepage hero.
|
|
29
|
+
- **Campaign page:** show the cause, concise context and giving form together. On phones, bound the
|
|
30
|
+
image and long story: at about 390px wide, the first screen should expose the cause, the start of
|
|
31
|
+
amount/frequency selection and a clear Donate action. Let longer choices/details scroll rather
|
|
32
|
+
than shrinking every control to fit. On desktop a side-by-side layout is useful, not mandatory.
|
|
33
|
+
Keep readable type and price labels without clipping.
|
|
34
|
+
Use real missing/archived states; never silently substitute another cause.
|
|
35
|
+
|
|
36
|
+
## Make the giving decision clear
|
|
37
|
+
|
|
38
|
+
- Show configured presets and their impact text. Offer custom giving only when enabled, and expose
|
|
39
|
+
its actual bounds near the field. Validate empty, invalid, non-positive and out-of-range input; show
|
|
40
|
+
errors after interaction/attempt, retain the donor's work and prevent handoff until corrected.
|
|
41
|
+
- Offer only configured frequencies. Use clearly selected, keyboard-operable controls; even when
|
|
42
|
+
only one frequency exists, make a recurring commitment explicit. Amount shortcuts must preserve
|
|
43
|
+
their advertised amount and cadence; no silent conversion from one-time to monthly. Carry explicit
|
|
44
|
+
monthly-giving intent through discovery into the selected campaign's form when offered; later
|
|
45
|
+
donor edits take precedence. Explain an unavailable frequency instead of silently substituting it.
|
|
46
|
+
- Prefer native radios with a shared name and a fieldset/legend for amount and frequency choices.
|
|
47
|
+
Custom radios must implement labelled groups, arrow-key navigation, selection and visible focus.
|
|
48
|
+
Associate errors/hints with their inputs and focus the first invalid control after an attempted
|
|
49
|
+
submission, not on every keystroke. See [form feedback](https://www.w3.org/WAI/tutorials/forms/notifications/).
|
|
50
|
+
- Show currency and the selected amount/frequency in the primary action or its adjacent summary.
|
|
51
|
+
Fee coverage, when enabled, is visible, reversible and explained beside its checkbox, including its
|
|
52
|
+
recurring effect. Use the catalog fee flag, not a second local surcharge. Totals must agree at checkout.
|
|
53
|
+
- Show a note only when enabled. A contextual dedication label is useful only when the control and
|
|
54
|
+
its persistence work; free text is not tribute notification or a restricted fund. Do not collect the
|
|
55
|
+
donor's billing/payment data again when hosted checkout already owns that step.
|
|
56
|
+
- One Donate action owns the pending/redirect flow. Disable repeated activation, show progress and a
|
|
57
|
+
recoverable error. No merchandise-cart drawer or cart-page detour is required for direct giving.
|
|
58
|
+
|
|
59
|
+
## Preserve the donor's work
|
|
60
|
+
|
|
61
|
+
Restore a per-campaign draft after navigation, refresh and checkout cancellation: preset/custom mode,
|
|
62
|
+
amount, frequency, fee choice and note. Scope short-lived, per-tab state to the content site, visitor
|
|
63
|
+
and campaign; keep notes out of URLs, logs and long-lived storage. Revalidate restored choices against
|
|
64
|
+
current campaign settings and show a correction when necessary; do not silently replace an amount or
|
|
65
|
+
cadence. Expire drafts and clear them on explicit reset, visitor change or verified completion. A
|
|
66
|
+
checkout return alone is neither completion nor a reason to reset the form.
|
|
67
|
+
|
|
68
|
+
## Progress and confidence without invented claims
|
|
69
|
+
|
|
70
|
+
Use goals and metrics only when configured and readable. No goal means no progress module. A failed
|
|
71
|
+
metrics read is not zero donations; omit unavailable figures while keeping the form usable. Counts
|
|
72
|
+
are donations, not unique donors. A bar stays within its track above 100%, while the real number may
|
|
73
|
+
exceed the goal. Let the API's status/acceptance rules decide closure, not an inferred percentage.
|
|
74
|
+
|
|
75
|
+
Use organization-supplied identity, contact, policies and substantiated claims. Do not invent tax
|
|
76
|
+
deductibility, matching grants, certifications, urgency, donors, receipts or outcomes. For recurring
|
|
77
|
+
giving, include the actual cancellation/help route or policy when supplied; no nonfunctional “manage
|
|
78
|
+
subscription” control. Keep offline giving and other support paths secondary and accurately labeled.
|
|
79
|
+
Avoid unsolicited signup/promotional popups that interrupt giving. Metadata, social links and policy
|
|
80
|
+
destinations must belong to the organization, with no template placeholders. Give each campaign its
|
|
81
|
+
own title, description and sharing image from its name and approved content, not a repeated generic
|
|
82
|
+
homepage description. Do not invent a campaign SEO API field.
|
|
83
|
+
|
|
84
|
+
## Finish the whole donor journey
|
|
85
|
+
|
|
86
|
+
Verify loading, empty, closed, missing, invalid, submitting, failed and return states, not only the
|
|
87
|
+
happy-path screenshot. Test desktop, a common phone width (around 390px) and a narrow phone (320px),
|
|
88
|
+
including long campaign names, header/logo/CTA fit, discovery density, form controls and focus/error
|
|
89
|
+
states. No horizontal overflow or clipped actions; do not just hide overflow. A sticky region must
|
|
90
|
+
not cover controls; any modal/sheet needs scroll and focus management. Follow a monthly entry link
|
|
91
|
+
through cause selection, then test custom amount + fee + note → checkout → cancel/back; choices must
|
|
92
|
+
survive. Check refresh recovery too, without submitting a payment.
|
|
93
|
+
|
|
94
|
+
Check the anonymous API → hosted-checkout handoff as required by the integration recipe. Verify that
|
|
95
|
+
the checkout names the right cause and commitment. On return, show paid/order facts only when
|
|
96
|
+
verified with appropriate access; an abandoned flow or direct thank-you visit is not proof of payment.
|
|
97
|
+
Keep a generic acknowledgement when order details cannot be read. Do not claim a tax receipt or
|
|
98
|
+
successful payment from the URL alone. Even an unverified return needs a meaningful heading, a clear
|
|
99
|
+
verification-status message and a useful next step, not an empty page or a disclaimer alone. Verify
|
|
100
|
+
hosted checkout separately from the custom form; qualify a desktop-viewport-only mobile check and
|
|
101
|
+
confirm suspected hosted rendering problems on a real mobile browser. No live payment without
|
|
102
|
+
explicit authorization.
|