Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
},
"metadata": {
"description": "Claude skills for Dynamicweb 10 — organized by task domain, bundled by role.",
"version": "3.8.2"
"version": "3.8.5"
},
"plugins": [
{
Expand Down
48 changes: 48 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,54 @@
All notable changes to the Dynamicweb Skills plugin are recorded here. The
`version` field in `.claude-plugin/marketplace.json` tracks these entries.

## [3.8.5]

### Changed
- **Baseline and feature-pack distribution repointed from personal vault slots to per-demo
downloads.** The `dw-demo-swift` deserialize and pack-activation flows no longer resolve
baselines, packs, or Swift-repo assets from `$env:DW_VAULT` slots. Instead, a demo build
downloads the baseline release (e.g. tag `swift/2.3`) and any pack releases (tag
`packs/<name>/<version>`) from the distribution repo the team designates into the demo's own
`baselines\` folder (`<demo-root>\baselines\swift-2.3\`,
`<demo-root>\baselines\feature-packs\<name>\<version>\`), and the Swift design package comes from
a local clone of `https://github.com/dynamicweb/Swift` (`<demo-root>\dw-swift\`). Swept the
read-only inspection paths in the companion references (`templates`, `paragraphs`,
`customer-center`, `asset-organisation`, `admin-ui-authoring`, `re-skin`), repointed
`integrity-sweep.md` Check 6 icon recovery at the same Swift clone the deserialize flow copies
assets from (reproducibility now recorded as baseline name + release tag in the per-demo
`CUSTOMISATIONS.md`), updated the `dw-demo-pim/access-surfaces` baseline row, and noted in the
`dw-demo-base` INDEX template that the `serialized-data` vault slot is a legacy/local mirror.

## [3.8.4]

### Added
- **`dw-demo-swift/references/pack-activation.md` — install a feature pack into a demo host.** A new
consumer-facing reference documenting the L3→demo-host install path: download the pack release
(tag `packs/<name>/<version>`) from the feature-pack distribution repo into the demo's
`baselines\feature-packs\` folder, read `pack.json`, source-drop the `.cs` into the host's
`Packs\<name>\` and rebuild, copy disk-overlay templates/item types, and deserialize the
`baseline-fragment` mode trees (seed/deploy) strictly AFTER the base baseline. Documents the confirmed
pack zip anatomy (pack.json, src/*.cs, templates/, itemtypes/, baseline-fragment/{seed,deploy}/) and
the activation model (code compiles into the host; the fragment is additive and never edits base YAML).
Added the router row to `dw-demo-swift/SKILL.md` and completed the swift/2.3 baseline-shape supersede in
SKILL.md Step 0 (retiring the content-only `Swift2.2` framing).

## [3.8.3]

### Changed
- **`dw-demo-swift` deserialize-flow repointed off the retired content-only `Swift2.2` baselines to
the canonical `swift-2.3` baseline.** The `swift-2.3` baseline is a full `config/deploy/seed`
tree (framework `_sql/` + content in `deploy/`, catalog `_sql/` + content in `seed/`), not the
content-only `_content/`-at-root shape the older `Swift2.2` baselines used. Repointed the `$baseline`
default and staging snippet in `dw-demo-swift/references/deserialize-flow.md` to stage both mode
trees from `swift-2.3`, rewrote the "baseline shape" and §9 schema-drift notes for the
`_sql/`-shipping baseline, and swept baseline-slot source-of-truth paths in the companion
references (`templates`, `paragraphs`, `customer-center`, `asset-organisation`,
`admin-ui-authoring`, `re-skin`, `integrity-sweep`) plus `dw-demo-pim/access-surfaces` and the
`dw-demo-base` INDEX template to the `swift-2.3\deploy\_content\` location. Swift-2.2-era
mechanics prose left intact (per-hit sweep, not a blanket rename). The two-pass deploy+seed
deserialize is flagged for host verification.

## [3.8.2]

### Changed
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ Foundation skill for all demos. Scaffolds the dw10-suite host, wires the Backend
PIM modelling from a blank DB — product data built from scratch via MCP. Use after `dw-demo-base`.

**[dw-demo-swift](skills/dw-demo-swift/SKILL.md)**
Swift frontend — baseline content deserialize, templates, paragraph types, Visual Editor, and the customer-center playbook. Use after `dw-demo-base`.
Swift frontend — swift/2.3 baseline deserialize, feature-pack install, templates, paragraph types, Visual Editor, and the customer-center playbook. Use after `dw-demo-base`.

**[dw-demo-erp](skills/dw-demo-erp/SKILL.md)**
ERP integration demo — DB-staged mock or live BC, Integration Framework rules. Use after `dw-demo-base`.
Expand Down
7 changes: 6 additions & 1 deletion skills/dw-demo-base/assets/INDEX.md.template
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@
| `samples` | `$DW_VAULT\samples\` | Reference admin-UI samples (`dw10adminUI/`) and any future sample bundles | _(applies to dw10adminUI commit hash)_ | _(YYYY-MM-DD)_ |
| `databases` | `$DW_VAULT\databases\` | Clean-DB zips / .mdf snapshots for fast restore (the escape-hatch alternative to deserialize). When populated, this slot is the **canonical in-vault fast-restore source** — name the artifact in this row and keep the stamps current; never describe the slot as reserved/empty while an artifact sits in it (`compare-vault.md` drift detection and the setup-checks probe expect it here) | _(version of DW10 the snapshot targets)_ | _(YYYY-MM-DD)_ |
| `docs` | `$DW_VAULT\docs\` | Curated DW10 docs (custom admin screens guide, middleware deep-dive) | _(N/A -- version-agnostic)_ | _(YYYY-MM-DD)_ |
| `serialized-data` | `$DW_VAULT\serialized-data\` | YAML baselines for the DW Serializer deserialize. Each subfolder is one baseline (e.g. generic `Swift2.2/`, plus per-demo customer-flavoured baselines named `<demo>-base/` by convention once derived). | _(per-baseline; each subfolder lists its target DW10 version in its own README)_ | _(YYYY-MM-DD)_ |
| `serialized-data` | `$DW_VAULT\serialized-data\` | YAML baselines for the DW Serializer deserialize. Each subfolder is one baseline (e.g. generic `swift-2.3/`, plus per-demo customer-flavoured baselines named `<demo>-base/` by convention once derived). | _(per-baseline; each subfolder lists its target DW10 version in its own README)_ | _(YYYY-MM-DD)_ |

> **Note (baselines):** demo builds download baselines per-demo into the demo's own `baselines\`
> folder (see `dw-demo-swift/references/deserialize-flow.md`) from the baseline distribution repo
> the team designates. The `serialized-data` slot above is a legacy/local mirror, not the
> resolution path for new demo builds.

## Resolution rule

Expand Down
4 changes: 2 additions & 2 deletions skills/dw-demo-pim/references/access-surfaces.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ Surface choice is task-driven, not preference-driven. Common shortcuts: bulk sch

The Management API admin-endpoint catalog (BuildIndex, IndexStatus, CacheInformationRefresh, GetServiceCaches, FeatureManagementToggle, CompletionSettingsSourceById), the runtime OpenAPI-discovery probe, and the per-project discovery table (host URL/port, SQL Server, DB name, API token) are vendor-generic platform facts — see [`../../dw-demo-base/references/foundational/data-access.md`](../../dw-demo-base/references/foundational/data-access.md).

Two vault-resolved baselines this demo skill leans on (per-project, discovered via `$env:DW_VAULT`):
Two reference sources this demo skill leans on (per-project):

| Ref | How to find it in the current project |
|---|---|
| Swift 2.2 baseline (vault) | `$env:DW_VAULT\serialized-data\Swift2.2\` — the canonical Swift 2.2 baseline. Its serialized index XML is the copy-paste source for `Products.index` definitions. |
| Swift baseline (per-demo download) | `<demo-root>\baselines\swift-2.3\` — the demo's downloaded copy of the canonical swift/2.3 baseline (a `config/deploy/seed` tree, fetched from the baseline distribution repo your team designates). Its serialized index XML is the copy-paste source for `Products.index` definitions. |
| DW10 source clone (vault) | `$env:DW_VAULT\dw10source\` — search `src/Features/Ecommerce` for Ecom internals and `Dynamicweb.Products.UI` for admin UI behavior. Otherwise fall back to https://doc.dynamicweb.dev/ |

When the user gives you a token, port, or path in chat, treat it as scoped to the project in the current working directory — save it in conversation state, not as a global default.
7 changes: 4 additions & 3 deletions skills/dw-demo-swift/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ orchestrator abstraction (GSD primary, native command set, and the standalone ha

## Step 0 — Load the Swift baseline (every Swift demo)

Before any frontend work (templates, paragraphs, re-skin), load the Swift content baseline into the host's project DB. Swift demos depend on `Swift-v2_*` item types, `Swift2.2` paragraph wiring, and the **content rows** (Area, Pages, grid-rows, paragraphs) that the baseline ships. `dynamicweb-demo-base` deliberately does NOT deserialize — that step lives here.
Before any frontend work (templates, paragraphs, re-skin), load the Swift content baseline into the host's project DB. Swift demos depend on `Swift-v2_*` item types, Swift paragraph wiring, and the **content rows** (Area, Pages, grid-rows, paragraphs) that the baseline ships. `dynamicweb-demo-base` deliberately does NOT deserialize — that step lives here.

**Baseline shape — content-only.** The Swift2.2 vault baseline ships **only `_content/`** — no framework rows (no currencies, no countries, no languages, no shops). Framework data must already exist in the target DB; the area's YAML uses string FKs (`AreaEcomShopId: "SHOP1"`, `AreaEcomCountryCode: "DE"`) that resolve against existing rows. A PIM-set-up host (per `dynamicweb-pim-demo/references/canonical-setup-order.md` Steps 1-4: currencies, countries, languages, manufacturers, SHOP1 with language relation) is the canonical clean target — the deserialize is **naturally additive** and does not conflict with PIM-curated framework rows or product data. See [`references/deserialize-flow.md`](references/deserialize-flow.md) §3 for the full shape contract.
**Baseline shape — full deploy + seed.** The `swift-2.3` baseline is a `config/deploy/seed` tree: `deploy/` ships framework `_sql/` (currencies, countries, languages, shops, payments, shippings, VAT) plus content, and `seed/` ships catalog `_sql/` (products, prices, groups, variants) plus content — so a `swift-2.3` deserialize no longer needs the framework pre-seeded, unlike the retired content-only `Swift2.2` baselines. The area YAML uses string FKs (`AreaEcomShopId: "SHOP1"`, `AreaEcomCountryCode: "DE"`) that resolve against the framework rows the deploy pass lands; a PIM-set-up host that already holds SHOP1/DE/EUR/LANG1 stays a clean target (seed mode preserves existing rows). See [`references/deserialize-flow.md`](references/deserialize-flow.md) §3 for the full shape contract.

1. **Verify framework prerequisites in target DB** — at minimum: `SHOP1` (or whichever ShopId the area's YAML references), `DE` country (or whichever AreaEcomCountryCode), `LANG1` with shop language relation, EUR currency. PIM-skill `canonical-setup-order.md` Steps 1-4 covers this. If you ran the PIM flow already, you're done.
1. **Framework prerequisites in target DB** — the `swift-2.3` baseline's `deploy/_sql/` ships the framework (currencies, countries, languages, shops, payments, shippings, VAT), so a fresh DB no longer needs it pre-seeded. When you WANT a PIM-curated framework instead, set up `SHOP1` (or whichever ShopId the area's YAML references), `DE` country (or whichever AreaEcomCountryCode), `LANG1` with shop language relation, and EUR currency first — PIM-skill `canonical-setup-order.md` Steps 1-4 covers this, and `seed` mode preserves those existing rows.
2. **Verify Serializer is installed** in the host per [`../dw-demo-base/references/serializer-reference.md`](../dw-demo-base/references/serializer-reference.md) "Installation".
3. **Deploy the Swift design package** — npm build, Items XMLs + Designs + Styles copy, the ProductsBackend/ProductsFrontend skip rule, catalog-paragraph path rewrite, and the slider card-template fix all live in [`references/deserialize-flow.md`](references/deserialize-flow.md) §"Design-package deploy (before any deserialize)".
4. **Run the deserialize flow** -> [`references/deserialize-flow.md`](references/deserialize-flow.md). HTTP POST `/Admin/Api/SerializerDeserialize` with strict mode on. Surfaces FK orphans / missing templates / schema drift as `CumulativeStrictModeException` HTTP 4xx.
Expand Down Expand Up @@ -61,6 +61,7 @@ Each reference is an independent file owned end-to-end by a single topic; cross-
|---|---|
| **Load the Swift baseline content into the host** (POST `/Admin/Api/SerializerDeserialize`; includes the design-package deploy step) | **references/deserialize-flow.md** |
| **Verify post-deserialize integrity** (mandatory) | **references/integrity-sweep.md** |
| **Install a feature pack into a demo host** (download the pack release into the demo's `baselines\feature-packs\` folder, source-drop the `.cs`, copy disk overlays, deserialize the fragment AFTER the base baseline) | **references/pack-activation.md** |
| **Start a new demo's frontend** (configuration-only Day-1 workflow) or use the Visual Editor effectively | **references/admin-ui-authoring.md** |
| Understand Swift template / page / paragraph conventions; debug Razor pitfalls in custom layouts (`@Html.Raw`, `ProductFieldValues`, raw Razor source rendering on the PDP, role gates by customer-number suffix) | references/templates.md |
| **Component-first gate** — map a rendering requirement to a standard `Swift-v2_*` component (catalogue: category banner, subgroup nav, related/similar, specs, BOM) BEFORE customising; pick the right paragraph type for a section; debug "paragraph renders empty / stale after delete" (`RenderGrid` cache, `SelectedGroups` deserialization, alphabetical template fallback) | references/paragraphs.md |
Expand Down
2 changes: 1 addition & 1 deletion skills/dw-demo-swift/references/admin-ui-authoring.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# admin-ui-authoring.md

> Swift 2 admin-UI authoring: the configuration-only Day-1 workflow (get 80% of the brand applied via admin Style tools alone, zero CSS / Razor / .cs edits) plus the Visual Editor patterns for editing paragraph properties without touching code. Operates against a deserialized Swift 2.2 baseline (source-of-truth at `$env:DW_VAULT\serialized-data\Swift2.2\`).
> Swift 2 admin-UI authoring: the configuration-only Day-1 workflow (get 80% of the brand applied via admin Style tools alone, zero CSS / Razor / .cs edits) plus the Visual Editor patterns for editing paragraph properties without touching code. Operates against a deserialized swift/2.3 baseline (source-of-truth at `<demo-root>\baselines\swift-2.3\`).
>
> Swift 2.x guidance — never follow `/swift/swift-1/` URLs (different content model, phased out).

Expand Down
2 changes: 1 addition & 1 deletion skills/dw-demo-swift/references/asset-organisation.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# asset-organisation.md

> `wwwroot/Files/` asset organisation for a Swift 2.2 / Dynamicweb 10 demo. Reference layouts at `$env:DW_VAULT\serialized-data\Swift2.2\` and Swift v2.3.0 at https://github.com/dynamicweb/Swift.
> `wwwroot/Files/` asset organisation for a Swift 2.2 / Dynamicweb 10 demo. Reference layouts at `<demo-root>\baselines\swift-2.3\` and Swift v2.3.0 at https://github.com/dynamicweb/Swift.
>
> Swift 2.x guidance — never follow `/swift/swift-1/` URLs (different content model, phased out).

Expand Down
4 changes: 2 additions & 2 deletions skills/dw-demo-swift/references/customer-center.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Rebuilding is never the right answer. The stock section already supports imperso

## 2. Page-tree map

Source-of-truth: `$env:DW_VAULT\serialized-data\Swift2.2\_content\Swift 2\Customer center\` deserialized into a running host. Backtick-quote any path string when copying into other tools -- folder names contain spaces.
Source-of-truth: `<demo-root>\baselines\swift-2.3\deploy\_content\Swift 2\Customer center\` deserialized into a running host. Backtick-quote any path string when copying into other tools -- folder names contain spaces.

```
Customer center/
Expand Down Expand Up @@ -61,7 +61,7 @@ Symptom: CSR Overview page has empty grid rows, or `CSR/Orders/` shows no orders
3. **CSR ↔ customer grants not wired** -- `AccessUserSecondaryRelation` is empty for this CSR, or the column direction is inverted, or the required index-rebuild + cache-clear follow-up was skipped. See [`commerce-orders.md`](../../dw-demo-base/references/foundational/commerce-orders.md) "`AccessUserSecondaryRelation` — the impersonation grant".
4. **Index not built or cache stale after wiring the grant** -- see [`commerce-orders.md`](../../dw-demo-base/references/foundational/commerce-orders.md). For Products-index rebuilds, see [dynamicweb-pim-demo/references/governance.md "Recovery recipe: Rebuild Products index"](../../dw-demo-pim/references/governance.md).

What is NOT the cause: missing paragraphs / broken templates / Swift 2.3 incompatibility. The Swift2.2 baseline is verified working by [`deserialize-flow.md`](deserialize-flow.md); if the page renders at all, the structure is intact and the issue is data-side.
What is NOT the cause: missing paragraphs / broken templates / Swift 2.3 incompatibility. The swift/2.3 baseline is verified working by [`deserialize-flow.md`](deserialize-flow.md); if the page renders at all, the structure is intact and the issue is data-side.

## 5. Persona presentation: avatar + role badge

Expand Down
Loading
Loading