Help us improve
Share bugs, ideas, or general feedback.
From mermaid-event-model
Seeds project with canonical hotel-booking Event Model: markdown file with mermaid DSL plus model-viewer.html renderer for it and future slices. Bootstraps new models or resets reference.
npx claudepluginhub howarddierking/mermaid-event-modelHow this skill is triggered — by the user, by Claude, or both
Slash command
/mermaid-event-model:create-event-modelThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Seed a project with a working Event Model: a markdown file wrapping the canonical hotel-booking DSL, plus a `model-viewer.html` page that renders it (and lists any companion slice specs in a sidebar).
Applies C++ Core Guidelines to write, review, or refactor C++ code. Enforces modern, safe, and idiomatic practices for C++17/20/23.
Share bugs, ideas, or general feedback.
Seed a project with a working Event Model: a markdown file wrapping the canonical hotel-booking DSL, plus a model-viewer.html page that renders it (and lists any companion slice specs in a sidebar).
The argument $ARGUMENTS is the target path for the model file. If no argument is provided, default to blueprint_dsl.md in the project root. If the argument doesn't already end in .md, append .md.
Locate the template files. Use the Bash tool with dirname on the path to this SKILL.md to find the skill directory — do not hard-code an absolute path. The two templates are:
template.md — markdown wrapper containing the canonical DSL inside a fenced mermaid block. Has a {{MODEL_NAME}} placeholder in the title.template.html — the model-viewer.html page (markdown + diagram + slice-spec sidebar). Also has a {{MODEL_NAME}} placeholder for the default model the viewer loads.Determine the two output paths:
$ARGUMENTS path (or blueprint_dsl.md if absent), with .md appended if missing.model-viewer.html.Compute the model basename: the model output filename without its .md extension. This is the {{MODEL_NAME}} substitution value (e.g. blueprint_dsl.md → blueprint_dsl).
Write template.md to the model output, substituting {{MODEL_NAME}} with the basename. Preserve tab indentation in the embedded DSL exactly — the parser is indent-aware and uses tabs.
Write template.html to the viewer output, substituting {{MODEL_NAME}} with the same basename so the viewer loads the correct model by default.
If either output file already exists, confirm with the user before overwriting (per file).
Confirm to the user what you wrote and where, plus the command to view it:
python3 -m http.server 8000
# then open http://localhost:8000/model-viewer.html
The viewer accepts ?model=<basename> to load a different model in the same directory. The slice-spec sidebar fills in once the user runs /mermaid-event-model:spec-slices against the model.
template.mdA markdown file wrapping the canonical hotel-booking event model in a fenced mermaid block. The DSL itself exercises every feature:
hotelProximityTranslatorprocessPayment)paymentSucceeded ↔ paymentsToProcess — exercises the renderer's back-edge handlingtemplate.htmlA model-viewer.html page that:
.md (markdown prose around the embedded eventModel diagram) in the main pane<model>-slices/ in a sidebar, falling back to "(no slice specs found)" until the user runs spec-slicesd3, mermaid, marked, and the @howarddierking/mermaid-event-model package via jsDelivr through a browser importmap, so it works with no install or build step beyond a static file server