Claude skills for Dynamicweb 10 — installable as a Claude plugin.
Skills are organized by task domain on disk (skills/dw-<domain>-<topic>/) and bundled by
role in the plugin registry. Skills are shared across bundles: a single skill directory can
appear in more than one role bundle, with no copying or symlinks.
.claude-plugin/
marketplace.json # plugin registry — role bundles, each curating skills by path
skills/
dw-setup-*/ # install, configure, upgrade a solution; drive the dw CLI
dw-render-*/ # Razor, ViewModels, TemplateTags
dw-content-modelling/ # item types, paragraphs, content models
dw-content-localization/ # translate a page/site, create a language version
dw-swift-building/ # customize a Swift 2 site for a business
dw-swift-page-blocks/ # Swift 2 page-building vocabulary (reference)
dw-swift-page-design/ # build a Swift 2 page from a reference/mockup
dw-swift-migrate-v1/ # faithful Swift 1 -> Swift 2 layout port
dw-swift-migrate-content/ # rebuild any site's content as modern Swift 2
dw-headless-delivery/ # decoupled frontends over the /dwapi/ delivery API
dw-pim-*/ # PIM modelling, completeness, workflow, localization
dw-pim-migrate-dw9/ # migrate a DW9 product catalog into DW10 PIM
dw-commerce-*/ # catalog, orders, B2B
dw-search-indexing/ # search indexes on Lucene
dw-users-permissions/ # users, groups, permissions
dw-extend-*/ # C# API, providers, scheduled tasks, MCP tools, admin UI
dw-integration-*/ # Integration Framework, ERP connectors, Business Central
dw-data-access/ # data-access patterns and caching
dw-data-write-effects/ # proving a write landed, and the rebuilds it owes
dw-data-audit-trail/ # investigate who/when/why something changed
dw-source-explorer/ # browse Dynamicweb source on GitHub
dw-source-doc-lookup/ # consult the live Dynamicweb documentation
dw-demo-*/ # presales demo chain (base, pim, swift, headless, hosted, erp, foldback)
Each bundle is a role-oriented selection of skills. Shared skills (for example
dw-setup-install, dw-extend-mcp-tools, dw-integration-bc) appear in more than one bundle.
| Plugin | Audience | Skills included |
|---|---|---|
dynamicweb-setup |
Provisioning Dynamicweb 10 | setup-install, setup-config, setup-upgrade, setup-cli |
dynamicweb-frontend |
Template & storefront developers | render-razor, render-viewmodels, render-templatetags, content-modelling, content-localization, swift-building, swift-page-blocks, swift-page-design, swift-migrate-v1, swift-migrate-content, headless-delivery |
dynamicweb-commerce |
Commerce & PIM implementers | pim-modelling, pim-completeness, pim-workflow, pim-localization, pim-migrate-dw9, commerce-catalog, commerce-orders, commerce-b2b, search-indexing, users-permissions, data-access, data-write-effects |
dynamicweb-backend |
Backend & platform engineers | extend-csharp-api, extend-providers, extend-scheduled-tasks, extend-mcp-tools, extend-admin-ui, integration-framework, integration-erp, integration-bc, data-access, data-write-effects, data-audit-trail |
dynamicweb-developer |
Developers building on the platform | setup-install, source-explorer, source-doc-lookup, extend-mcp-tools |
dynamicweb-presales |
Presales & demo engineers | demo-base, demo-pim, demo-swift, demo-headless, demo-hosted, demo-erp, demo-foldback, integration-bc; + the foundational skills the demo skills reference (setup-install, setup-config, setup-upgrade, source-explorer, integration-framework, integration-erp, extend-csharp-api, extend-mcp-tools, extend-providers, headless-delivery, search-indexing, users-permissions, the pim/commerce/render/content/data-access skills, data-write-effects, swift-building) |
dw-setup-install Installs Dynamicweb Swift 2 from scratch — downloads the latest database, files, and demo data, imports the database, installs the temporary MCP add-ins payload, and writes the first-run bootstrap manifest.
dw-setup-config Configure Dynamicweb 10 environment and connection settings.
dw-setup-upgrade Manage Dynamicweb 10 version upgrades and migration mechanics.
dw-setup-cli
Operate a solution with the dw CLI — install add-ins, push and pull Files-archive content, trigger a recycle, and prove the change landed.
dw-render-razor Build template hierarchies and Razor patterns — the foundation for all rendering.
dw-render-viewmodels Fetch and shape content using ViewModels in Dynamicweb 10 templates.
dw-render-templatetags Build templates using TemplateTags to access content properties directly.
dw-content-modelling Design item types, paragraphs, and content models in Dynamicweb 10, and create/publish a page or paragraph through the MCP tools.
dw-content-localization Create a language version of a website and translate its page content, or translate an existing page/site from one language to another.
dw-swift-building Customize an existing Swift 2 site for a specific business without rebuilding it — preserves the working page shell and updates area, navigation, category pages, and item values.
dw-swift-page-blocks Reference for the Swift 2 page-building vocabulary — grid row layouts, paragraph component types with their variants and fields, color schemes, and the MCP tools that compose them.
dw-swift-page-design Build a good-looking Swift 2 page — matching an existing page's style, from a screenshot/mockup, or by recreating a live page from its URL.
dw-swift-migrate-v1 Faithful, layout-preserving migration of pages from a Swift 1 solution into Swift 2.
dw-swift-migrate-content Extract any existing site's content and rebuild it as a standard, modern Swift 2 site.
dw-headless-delivery
Build decoupled frontends using the /dwapi/ delivery API — authentication, content, ecommerce, users, navigation, forms, and query endpoints.
dw-pim-modelling Model Dynamicweb 10 PIM data — Data Models, category fields, variant groups, and global vs category field storage.
dw-pim-completeness Configure Dynamicweb 10 product completeness — completion rules, completeness scoring, and query-driven automatic workflows.
dw-pim-workflow Configure Dynamicweb 10 PIM workflows — named states, transitions, and editorial handoffs across the product enrichment lifecycle.
dw-pim-localization Manage product translation and localization across EcomLanguages.
dw-pim-migrate-dw9 Migrate a Dynamicweb 9 solution's product structure and catalog data into a Dynamicweb 10 PIM — structure, product import, data-model assignment, and verification, in that order.
dw-commerce-catalog Render product catalogs and assortments in Dynamicweb 10.
dw-commerce-orders Handle orders, checkout, and cart functionality.
dw-commerce-b2b Implement B2B patterns — customer groups, scoped assortments, and sales workflows.
dw-commerce-cpq Build and operate a Carrot Solutions CPQ configurator — models, rules, catalogue-driven lookups, pages, and the card-as-quote model.
dw-search-indexing Build and configure Dynamicweb 10 search indexes on Lucene — index types, builders, analyzers, scoring, and product index setup.
dw-users-permissions Manage users, groups, and the Permission entity store.
dw-extend-csharp-api
Use the C# API and Dynamicweb.Services for custom backend code.
dw-extend-providers Build providers, notification subscribers, and AddIns.
dw-extend-scheduled-tasks
Create and manage scheduled tasks, including RunSqlScheduledTaskAddIn.
dw-extend-mcp-tools Step-by-step guide for adding new MCP tools to the Dynamicweb MCP project.
dw-extend-admin-ui Extend the administration interface from your own assembly — list/edit/overview screens, areas and tree nodes, injectors into screens you do not own.
dw-integration-framework Understand Dynamicweb 10 Integration Framework architecture and patterns.
dw-integration-erp Configure ERP connectors and data ownership.
dw-integration-bc
Live "PIM for Business Central connector" demos — expose the local DW host publicly via ngrok so a real BC tenant can call the connector's /admin/api/BC* surface.
dw-data-access Choose appropriate data-access patterns and optimize caching.
dw-data-write-effects Prove a write landed (success is not proof — round-trip it) and know which mutations owe a follow-up rebuild: product index, assortments, price recalculation, country cache.
dw-data-audit-trail Investigate why something changed, who changed a record, when a value was set, or inspect version/history for any Dynamicweb 10 entity.
dw-source-explorer Browse Dynamicweb source code on GitHub to understand internal APIs, classes, and extension points.
dw-source-doc-lookup Consult the live Dynamicweb documentation as the source of truth before answering how a feature works, is configured, or fits together.
dw-demo-base
Foundation skill for all demos. Scaffolds the dw10-suite host (pinning Dynamicweb.Suite to the Distribution's gate-proven platform version when the scaffold validates Distribution content), wires the Backend MCP and two-layer localhost TLS bypass, installs Playwright MCP, and drops the customisations and customer-context guardrails. Use this first. Also owns the orchestrator abstraction (references/orchestrator.md) — how a build is driven, GSD primary or the native /demo:* command set. Hosted/cloud installs (building on one, publishing a local demo onto one) route to dw-demo-hosted. Owns the branded-demo path choice (references/branded-demo-paths.md): YAML brand layer first (the measured default), deserialize-then-tools, or tools only, with the conditions under which the tool path is right. Owns the visual-QA design gate (references/visual-qa.md) — the mechanical definition-of-done (overflow, section-gap, image-band-height, PLP row-content detectors) plus a human taste sign-off, armed from the first gate run. The product-query verb surface lives in dw-search-indexing — query-authoring.md (which read verb is authoritative, the restart-free query-cache flush, QueryMove/QueryCopy order of operations) and query-expressions.md (expression Path semantics, operator reality, sorting, result paging, and the three ways a build verb answers 200 and builds nothing).
dw-demo-pim
PIM modelling from a blank DB — product data built from scratch via MCP. Use after dw-demo-base.
dw-demo-swift
Swift frontend — baseline deserialize, the zero-state pass (references/re-skin.md §"Step 0") that retires the shipped baseline's own copy, defaultValue placeholders and skeleton bands before any brand work, catalogue imagery from a customer print-catalogue PDF (references/asset-organisation.md), feature-pack install, templates, paragraph types, Visual Editor, the customer-center playbook (incl. the Swift 2.4 sign-in profiles / switch-user recipe and the checkout order-field recipe), and the mobile pass (references/mobile-pass.md) — canvas-fit debugging (body.scrollWidth), the Swift 2.4 trap catalogue, and the theme-default ≥1.2.0 "verify first" caveat. Use after dw-demo-base.
dw-demo-headless
Headless delivery demo — Frontend API setup, a decoupled frontend against the DW content/commerce APIs. Routes endpoint detail to dw-headless-delivery. Use after dw-demo-base.
dw-demo-erp
ERP integration demo — DB-staged mock or live BC, Integration Framework rules. Use after dw-demo-base.
dw-demo-hosted
Hosted/cloud installs reached only by URL + Admin API key — building a demo directly on one (references/online-mode.md) and publishing a locally-built demo onto one (references/publish-to-hosted.md). No scaffold, no SQL; verify by round-trip, not status code. Use after dw-demo-base.
dw-demo-foldback
Fold a demo-build learning back into this repo as a sanitized, atomic PR — route it foundational-vs-demo, strip customer specifics, validate, bump the version, open the PR (references/fold-back-workflow.md). Maintainer flow. Use after dw-demo-base.
The presales demo chain has a hard order. dw-demo-base must run first — it scaffolds
the host, wires MCP + the TLS bypass, and captures the demo's versions + downloads its artifacts
per-demo. The sister demo skills
(dw-demo-pim, dw-demo-swift, dw-demo-headless, dw-demo-hosted, dw-demo-erp, dw-demo-foldback, and the dw-integration-bc connector demo)
are Use AFTER and inherit that setup; they no-op or break if run standalone.
The demo skills hold domain knowledge and carry no build sequencing — that is owned by a
swappable orchestrator: GSD (primary; its pipeline injects the skills into fresh-context
agents via the agent_skills block) or the native /demo:* command set (scaffolded into the
demo project, it detects GSD and defers unless run --standalone). With neither present, the floor
is a lightweight in-skill harness — each skill guards its own canonical flow (ordering + a gate
per step + a resumable .demo/<slug>/flow-state.json artifact) so a fully standalone run is still
not run blind. All three read the same SKILL.md files. The abstraction — running modes,
detection/deference, the agent_skills keystone, the strictness gradient, and shared acceptance
criteria — lives in
dw-demo-base/references/orchestrator.md.
manifest.json (repo root) is a generated index of the Dynamo-visible skills — name,
type (knowledge or flow), group, mcp (see below), a one-sentence description, and
the path to its SKILL.md. The Dynamicweb MCP server ("Dynamo") fetches this single file to
auto-discover skills; Claude Code does not use it (it loads skills via marketplace.json, and
still sees every skill).
Every skill declares its Dynamo visibility in frontmatter — dynamo: true puts it in the
manifest, dynamo: false leaves it out entirely. The flag is visibility, never exclusivity: a
dynamo: true skill is usable in Dynamo, its content is held to what an MCP client can
execute, and it runs anywhere an MCP client runs: Claude Code, Dynamo, any other agent. No skill
is Dynamo-only, and no skill tells a client to stop because it is not Dynamo. Dynamo runs inside a Dynamicweb install with
MCP tools and read/write access under Files/; it has no shell, SQL, git, browser, or csproj.
A skill whose steps need one of those (the demo chain, local install/upgrade, ngrok, MCP tool
authoring, source browsing) is dynamo: false, because offering it to an in-product admin is
noise they cannot act on. The axis is orthogonal to mcp: — a demo scaffold is mcp: required
yet dynamo: false, and dw-render-razor is mcp: none yet dynamo: true.
Every skill declares its MCP dependence in frontmatter — mcp: required (the skill's
steps are Dynamicweb MCP tool calls and it carries an ## MCP preflight section), mcp: optional (the knowledge stands alone and a ## Without MCP section states the fallback), or
mcp: none (pure platform knowledge / offline flows). Harnesses without a live Dynamicweb
MCP connection can filter out required skills using this field.
It is generated from each skill's frontmatter — never edit it by hand:
node scripts/build-manifest.mjs # rewrite manifest.json
node scripts/build-manifest.mjs --check # CI: fail if it is stale
The description shown by Dynamo is the first sentence of each skill's description, so keep
that first sentence a tight, intent-bearing summary with no mid-sentence periods. CI
(.github/workflows/manifest-check.yml) fails on drift.
scripts/validate-skills.py (Python 3, no dependencies) lints the repo structure —
marketplace schema and integrity, folder/name/path agreement, relative-link resolution,
absence of UTF-8 BOMs, and the description convention. Run python3 scripts/validate-skills.py
before committing. See CLAUDE.md for the optional SessionStart hook that runs it
automatically.
You can also validate against Claude Code's own schema:
claude plugin validate ./
Add this repo as a plugin marketplace, then install the bundle for your role:
claude plugin marketplace add dynamicweb/skills
claude plugin install dynamicweb-presales@dynamicweb-skills
Install any of the six bundles by name: dynamicweb-setup, dynamicweb-frontend,
dynamicweb-commerce, dynamicweb-backend, dynamicweb-developer, dynamicweb-presales.
These skills delegate execution to the Dynamicweb 10 MCP server. The MCP server must be connected before using any skill.
Skills may ship scripts under skills/*/scripts/. PowerShell scripts require PowerShell 7+ (winget install --id Microsoft.PowerShell) and start with #Requires -Version 7.0; any other runtime a skill needs is declared in that skill's compatibility: frontmatter. The script contract is in .claude/skills/dw-skill-authoring/SKILL.md ("Shipping scripts").