# mauricioperera.github.io/mcpwasm-pages-test > Two static mcpwasm skills hosted on plain GitHub Pages, no backend at all: > modelar_core (headless parametric 3D modeling) and margin_demo (URL-encoded > documents — create content, hand back a shareable URL, no server-side > persistence: the URL *is* the document). ## Skills - [margin_demo](/skills/margin-demo/tool.js): create_document({title, content}) -> {url} encodes a document into a shareable URL fragment (#d=...); decode_document({url}) reverses it. Nothing is stored server-side — GitHub Pages only serves this static file. - [modelar_core](/skills/modelar-core/SKILL.md): Headless parametric 3D modeling state tools — create_model, update_model, delete_model, duplicate_model, arrange_models, get_state over a state document passed in and returned per call. Two skills on one origin: pass the skill's `name` (above) as the second argument to the loaders below — `loadSkillInBrowser(origin, 'modelar_core')` or `loadSkill(origin, 'modelar_core')`. Omitting it always picks the FIRST skill listed here (`margin_demo`), silently, even if that's not the one you meant. No MCP client available? [browser-eval-client.js](/skills/margin-demo/browser-eval-client.js) (any browser, Worker-sandboxed) or [modelar-core's copy](/skills/modelar-core/browser-eval-client.js) fetch a skill's tool.js, verify its hash, and run it directly — same tools, no MCP handshake required. ## Editor - [/](/) — the margin-demo editor page. Open a URL produced by `create_document` here to view/edit that exact document; editing regenerates the URL live, client-side.