Plugin check: Run node "${PLUGIN_ROOT}/scripts/check-version.js" — if it outputs a message, show it to the user before proceeding.
Generate and fill one supplied localized Design Studio-compatible webpage body.
Initial request: $ARGUMENTS
Read ${PLUGIN_ROOT}/references/non-spa-preview.md and apply its **Entry and handoff
protocol**. Unless the initial request contains the explicit marker from an actual covered-skill
handoff, present the Customization notice before project inspection or task creation.
Always read and follow:
${PLUGIN_ROOT}/skills/author-webpage-content/references/webpage-content-composition.md${PLUGIN_ROOT}/skills/author-webpage-content/references/design-studio-component-authoring.mdRead only the page-element references used by the requested composition:
design-studio-section-layouts.mddesign-studio-flex-container-component.mddesign-studio-text-component.mddesign-studio-image-component.mddesign-studio-button-component.mddesign-studio-video-component.mddesign-studio-iframe-component.mddesign-studio-generative-ai-search-component.mddesign-studio-basic-form-component.mddesign-studio-list-component.mddesign-studio-multistep-form-component.mddesign-studio-spacer-component.mdAll page-element references are under:
${PLUGIN_ROOT}/skills/author-webpage-content/references/
These references own serialized section and component markup, editing
boundaries, preservation, accessibility, and verification rules. Do not invent
competing markup contracts.
For an add or edit Generative AI Search component request, target only{% codecomponent name:Pages.SearchSummary ... %}. Do not substitute{% include 'Search' %}, a Search web template, Search content snippets, the
Search Results page record, site markers, or search indexing/settings.
For an add or edit Basic Form, List, or Multistep form request, target only{% entityform name:'...' %}, {% include 'entity_list' key:'...' ... %}, or{% webform name:'...' %} respectively, pointing at a record already present in
the downloaded site. This skill does not create the backing basic form, list,
multistep form, Dataverse table form/view, or table permissions — see each
component reference's Scope section. If the named (or implied) record is
not found in the downloaded site, do not assist with constructing it: do not
query Dataverse (API, SDK, Web API, or CLI) and do not ask the user for IDs,
GUIDs, or permissions to assemble it locally. When asking the user how to
proceed, the only valid options are (a) embed an existing record, or (b) stop.
This skill receives and edits exactly one existing localized file per
invocation:
web-pages/<page-directory>/content-pages/<Page>.<locale>.webpage.copy.html
It may compose multiple sections and page elements in that file as one coherent
operation.
This skill does not create or modify:
form/view, or table-permission records;
for that locale.
The calling orchestrator must create or confirm the file and resolve its webpage and locale
identity before invoking this skill. edit-site uses${PLUGIN_ROOT}/skills/edit-site/references/webpage-authoring.md
for that metadata workflow.
This skill does not search for or select a webpage record.
If the target file or any required content, URL, snippet name, or other rendered
value is unresolved, stop before writing and return the exact missing input.
Do not manufacture a placeholder or expand this skill into metadata or
dependency authoring.
Complete routine composition without asking the user to approve mechanical
details. Infer safe formatting, escaping, indentation, and accessibility
details from the resolved specification, authoritative references, existing
page markup, and site-local conventions.
Choose independently when safe:
Stop before writing when a material choice remains unresolved, including:
a layout name missing from the recipe examples;
alternative text, video title, iframe title, or search behavior/text required by the
selected component;
downloaded site — never query Dataverse or assist with constructing it
locally, and never present "create a new one" as a selectable option in a
clarification question;
Prefer a structured specification containing:
designContext; require version evidence fornew sections, especially when the target page is blank;
create, replace, append, or modify;columns[].span values and intended wrapping/unused space; otherwiseresolve CSS-driven widths with the styling owner instead of guessing a preset;
The specification may be Markdown, YAML, JSON, or an unambiguous natural
language plan. Normalize it internally according to the composition reference;
do not require the user to rewrite a complete plan merely to match an example
format.
An approved new-site handoff requires custom composition using supported native sections,
columns and elements, not just text/image substitutions. Follow its resolved composition anddesignContext, not the creation template's arrangement. Retain/place required existing components through the
resolved-source rules in Whole-page composition, without inventing new native element types.
Remove unneeded starter sections or component placements when the approved handoff accounts for
their removal and dependencies. Do not retain them solely because they came with the template,
hide them with CSS, or delete their backing records.
Preserve required content/capabilities and native serialization as described in **Whole-page
composition**; an unrelated existing-site append or modify remains a narrow edit.
order.
Do not upload, deploy, or modify Dataverse directly.
Require one exact existing file path under:
web-pages/<page-directory>/content-pages/<Page>.<locale>.webpage.copy.html
The caller owns proving that the path belongs to the intended localized webpage.
Reject a missing file, directory path, root-level copy file, wildcard, or
multiple targets. Do not create directories, companion files, or webpage
metadata.
Follow Resolved composition contract in the composition reference. Preserve
the supplied section order, column assignment, element order, content,
destinations, sources, and accessibility requirements.
Require final rendered URLs, snippet names, Liquid expressions, text, and
accessibility values. The caller owns creating and resolving their underlying
records. Do not continue with symbolic asset names or design-tool placeholders.
Read the section-layout reference whenever the operation creates a section or
changes a section's column structure. Then read one component-specific reference
for each element type present in the normalized plan.
Use its Bootstrap 5 examples only with verified Bootstrap 5 evidence. Preserve inspected
Bootstrap 3/native and RTL patterns for existing sites; return missing evidence to the caller
rather than assuming the creation default or changing the framework.
Do not invoke one skill per page element. This skill is the single writer for
the target HTML and assembles all approved element markup in memory before
editing the file.
For create or replace, follow Whole-page composition in the composition
reference. Build sections in plan order, columns in layout order, and elements
in their specified order within each column.
For append or modify, follow Existing-page operations. Resolve exact
structural boundaries before changing the file, preserve unrelated markup, and
do not reserialize the entire page for a narrow edit.
Use the section-layout reference's recipes as defaults, not exhaustive geometry constraints.
Broader safe local layouts may proceed with Studio editing compatibility unverified
disclosed in the existing review and final report. Other page-element serialization contracts
remain unchanged; do not invent Studio controls, preview components, or an additional gate.
Replace every sample
value and marker with resolved plan values. Do not leave placeholder text,
placeholder URLs, <!-- COMPONENT_HTML -->, TODOs, or unexplained empty
components.
Run the complete verification checklist from the composition reference and each
page-element reference used. Review the final diff and confirm that only the
selected localized HTML file changed.
Report:
State that the change is local and was not uploaded or deployed.
Reference: ${PLUGIN_ROOT}/references/skill-tracking-reference.md
Follow the skill tracking instructions in the reference using--skillName "AuthorWebpageContent".