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, fo, 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-fo-discovery, integration-fo, 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-fo, demo-foldback, integration-bc; + the foundational skills the demo skills reference (setup-install, setup-config, setup-upgrade, source-explorer, integration-framework, integration-erp, integration-fo-discovery, integration-fo, 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-fo-discovery Discover the data model a Dynamics 365 Finance & Operations (or AX 2009/2012) environment actually runs on, from outside, before integration mapping.
dw-integration-fo
Build the Dynamics 365 Finance & Operations integration end to end on the Integration Framework: S2S endpoints, the F&O entity map, OData-to-staging activities, stage-2 SQL views into products, groups, customers, prices and stock, the sales order export, and status and invoices back, with a verification ladder. Ships a generator for the staging DDL and the OData job files, so the whole integration can be built before the credential exists. Run after dw-integration-fo-discovery.
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-fo
A live Dynamics 365 Finance and Operations demo: one legal entity per customer demo in a shared sandbox, seeded from a golden company's configuration package, shaped from the customer's data model, every DW job pinned to its dataAreaId, and retired as dormant rather than deleted. Ships PowerShell for the company create, the copy watch, the measured copy-gap repair and the per-company verification. OData-only. 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-fo, 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").