| name | dotcms-create-sites |
| description | Plans and builds a complete dotCMS site in two phases. Phase 1 interviews the user and writes PLAN.md (purpose, sitemap, data model, every fact tagged) and DESIGN.md (visual identity tokens). Phase 2 hands off to the dotcms-best-practices skill, which owns the build sequence, and holds the verify-and-fix loop until every page type renders. Stops invented facts shipping as real. Supports both VTL-rendered and headless (Next.js) delivery. Use when someone wants to build, scaffold, or create a new dotCMS site or microsite. |
dotCMS Create Sites
Two phases: plan, then build. You do both.
- Phase 1 — Plan. Interview the user and write two artifacts:
PLAN.md — everything non-visual: purpose, audience, hostname, sitemap, sections, data model, and every fact tagged confirmed / placeholder / n-a.
DESIGN.md — the visual identity (YAML tokens + prose rationale). Colors are never invented — sample them from the user's logo/assets if provided, or ask.
- Phase 2 — Build. Hand off to
dotcms-best-practices, which owns the build sequence.
PLAN.md and DESIGN.md belong in the project directory you're building — not wherever you
happen to be. A PLAN.md describing something other than a dotCMS site is not yours.
Phase 1 — Plan
Copy this checklist and track progress. References are in reference/plan/.
Plan Progress:
- [ ] 1. If a site PLAN.md/DESIGN.md already exists for THIS project, read it, confirm it,
and interview only on gaps. Otherwise start fresh — you are writing them.
- [ ] 2. Run the interview (reference/plan/interview.md) — infer from assets, confirm the
drafted plan in ONE batch; ask upfront only what can't be inferred (delivery mode,
transaction model, real-vs-placeholder facts)
- [ ] 3. Draft prose in the agreed voice; collect or defer every fact; source colors from
logo/assets or ask
- [ ] 4. Write DESIGN.md (visual identity) from reference/plan/design-template.md
- [ ] 5. Write PLAN.md (structure + tagged facts) from reference/plan/plan-template.md
- [ ] 6. Confirm tagging is complete — every FACT field tagged, every STRUCTURE section
carrying a heading tag — and PLAN.md's top checklist lists all gaps
- [ ] 7. Confirm the plan with the user before building
Phase 1 cannot be skipped unless both files already exist for this project and the user
confirms them. Don't start Phase 2 until the plan is confirmed.
Phase 2 — Hand off, then hold the loop
Load dotcms-best-practices and work through reference/README.md — the 11 steps in
dependency order, the delivery-mode fork, and the file for each step.
What you carry into it:
| From PLAN.md | Used for |
|---|
| §2 hostname | creating the site |
| §3b delivery mode | which branch of the sequence applies — VTL or headless |
| data model | the content types to create |
| sitemap and sections | the pages, and what gets placed on them |
| DESIGN.md tokens | the theme's CSS (VTL), or the app's styling (headless) |
The tagging rules survive the build: [PLACEHOLDER] renders as a visible TODO, never an
invented value; [n/a] is removed, not flagged; [ai-draft] needs sign-off before launch.
Hold the loop
The sequence ends in a verify-and-fix loop. Your job is not to let it stop at one pass — a
first failure is normal. Do not report the build done until every page type verifies.
dotcms-best-practices has a symptom index for classifying failures.
References — Phase 1 only
Tagging (the core rule)
Every field carries exactly one of [confirmed] · [PLACEHOLDER — needs human] ·
[n/a — intentionally omitted] · [ai-draft — approve]. Definitions and how to apply them:
reference/plan/interview.md. Never assume a missing fact is a
placeholder — ask which applies.
Done when
PLAN.md and DESIGN.md exist and are fully tagged — every FACT field, every STRUCTURE section.
The site is built and published. Every page type has passed its verify step. No
[PLACEHOLDER] renders as a real value, every [n/a] was removed rather than flagged, and
[ai-draft] copy is flagged for approval.