# Documents, Boxes and Blank_Slate — LLM Prompt

> **How to use this file:** Paste the entire contents into Claude, ChatGPT, Gemini, or any LLM as your opening message. It gives the model the whole guide, so it can walk you through it, ask where you have got to, and help when something does not behave.
>
> *Source: [https://documentation.elmspark.com/guides/documents-boxes-blank-slate/](https://documentation.elmspark.com/guides/documents-boxes-blank-slate/)*

---

You are helping me with the following. Use this guide as your reference. Work through it with me, ask what I have already done, and help me troubleshoot. Where a step changes something on a live site, a domain, or a server, tell me what it will do and wait for me to confirm before we go on. If something here contradicts what I am actually seeing, say so rather than guessing.

**What this covers:** Where a PageMotor page actually comes from, what Blank_Slate, an HTML Document and an HTML Box each are, and where EP Blog, EP Cards and EP Membership output lands on a Document-first site.

PageMotor guide

# Documents, Boxes and Blank_Slate

Where a page actually comes from in PageMotor, and where each EP plugin's output lands, so you can build a Document-first site without guessing.

## Three surfaces, three different things

The confusion is that all three end up as HTML in the browser. They are not the same kind of thing at all.

### Blank_Slate

**A Theme.** A Theme owns Templates, and a Template is a tree of blocks whose instances emit markup: HTML Container, HTML Box, Page Content and so on.

Almost nothing. A Page template and a 404 template, both fallbacks.

Your Documents carry the design and the Theme only has to catch what falls through.

### HTML Document

**A content row, not a Theme.** Type `html`. PageMotor stores the whole document, folds the site head metadata in when you save it, and serves it as stored at a clean URL.

Nothing. No Template, no blocks, no Theme CSS. What you write is what ships.

The home page and every designed page.

### HTML Box

**A block instance inside a Template.** A box of raw HTML you author, rendered inside the Template tree, with the Theme's CSS around it.

PageMotor processes its content, so shortcodes expand inside it.

You need plugin output on a designed surface. It is the bridge between the two worlds.

## How a page is served

One decision decides everything else. PageMotor looks at the content row's type and takes one of two paths.

Every clean URL maps to one row: a Page, a Post, a Document, a Members Only page.

Document types (html, and any plugin type cloned from it) get an access check, then the stored content is sent as it is. Finished. The Theme never runs.

The Theme picks a Template, walks its block tree, and Page Content emits the row's body. That is where shortcodes are processed.

**Hold on to this.** Shortcodes are processed on path 2b only: in Page Content, in an HTML Box, in a Text Box and in Modular Content. Path 2a never processes anything.

## Two kinds of plugin output

Every EP plugin puts things on the page in one of two ways, and the way decides where it can go.

| Kind | Examples | Where it renders |
|---|---|---|
| **A content type** The plugin registers a new kind of row. | EP Blog's Post. EP Membership's Members Only page. | Where the type says. A Post goes through the Theme's Page template. A Members Only page is a Document and is served as stored. |
| **A shortcode** The plugin replaces a tag in your content with markup. | EP Cards' cards and card groups. EP Blog's index and recent-posts list. EP Membership's login and register forms. | Page content, an HTML Box, a Text Box, Modular Content. Never inside a Document. |

## Plugin by plugin

### [EP Blog](https://documentation.elmspark.com/plugins/ep-blog/)

| Feature | How it renders | Put it in |
|---|---|---|
| A post | Content type `post`, through the Theme | Blank_Slate's Page template, which you style once |
| The blog index | Shortcode `[ep-blog]` | A Page called Blog, or an HTML Box |
| Recent posts, categories, post navigation | Shortcodes | A Page or an HTML Box |

### [EP Cards](https://documentation.elmspark.com/plugins/ep-cards/)

| Feature | How it renders | Put it in |
|---|---|---|
| One card | Shortcode `[ep_card id="…"]` | A Page or an HTML Box |
| A card group | Shortcode `[ep_card_group group="…"]` | A Page or an HTML Box |

EP Cards is entirely shortcodes. It has no content type of its own.

### [EP Membership](https://documentation.elmspark.com/plugins/ep-membership/)

| Feature | How it renders | Put it in |
|---|---|---|
| A gated page | Content type Members Only: a clone of the html type with the protection flag on | It is already a Document. Write it as one. |
| Login, register, logout link | Shortcodes | A Page such as Sign in, or an HTML Box |
| Member profile, member dashboard | Shortcodes | A Page such as Account |
| Someone below the level opens a gated page | PageMotor checks access before serving and sends the plugin's denied text instead of the page | Nothing to place. Set the denied text in EP Membership. |

## The one trap: a shortcode inside a Document

Put `[ep_card_group]` or `[ep-blog]` or `[ep-login-form]` inside a Document and the visitor sees the tag as literal text. Not broken markup, not an error: the tag itself, because a Document is served as stored.

Checked on a clean install with a control. The same core shortcode in a Document and in a Page:

**The fix is placement, not code.** Move the shortcode to a Page or an HTML Box. If the design needs plugin output on a page that must stay a Document, either render that piece at save time or make that one page a Page with an HTML Box carrying the design.

## Build recipe: a minimal blog with cards and members

The ellanew.com shape: a quiet front, posts underneath, a few cards, and a members area. Tick each step as you go. Ticks stay in this browser only.

1. Activate Blank_Slate Themes, pick Blank_Slate. You now have a Page template and a 404 template and nothing else. Done
2. Write the home page as a Document Type html, with its own CSS in its own head. Over MCP that is save-content with type `html` and the whole page in `document`. Set it as the site home. Done
3. Style Blank_Slate's Page template once Header, footer, type and colour, matching the home Document. Every Post and every Page will inherit this, so do it once and do it well. Done
4. Install EP Blog and write Posts Each post is a Post row. It renders through the Page template you just styled. Done
5. Make a Page called Blog holding the index A plain Page whose content is `[ep-blog]`. Link to it from the home Document's nav. Done
6. Place cards in a Page or a Box Install EP Cards, build the group, then put `[ep_card_group group="…"]` in a Page or an HTML Box. Not in the home Document. Done
7. Install EP Membership and write the gated pages Set the levels, then write each members page as a Members Only row. They are Documents, so they carry their own CSS like the home page does. Done
8. Make a Sign in Page with the form shortcodes A Page holding the login and register form shortcodes. Link it from the nav and from the denied text. Done
9. Check it the way a visitor would Open the home Document signed out. Open a Post. Open the Blog Page and see the index. Sign in as a member below the level and open a gated page: you should see the denied text, not the page and not a 404. Done

## Quick lookup

| I want | Put it in |
|---|---|
| A designed page with its own look | A Document |
| A page that is only for members | A Members Only Document |
| A blog post | A Post, styled by the Page template |
| The list of posts | `[ep-blog]` in a Page or an HTML Box |
| A row of cards | `[ep_card_group]` in a Page or an HTML Box |
| Login and register forms | The form shortcodes in a Page or an HTML Box |
| Plugin output on a designed page | Make that page a Page with an HTML Box, not a Document |

## Questions people ask next

**Can I put a card group on the home page if the home page is a Document?**

Not by shortcode. Either make the home page a Page whose design lives in an HTML Box, so the shortcode expands, or render the cards' markup into the Document when you save it.

**Does a Document get the Theme's CSS or fonts?**

No. It carries its own head. PageMotor folds in the site metadata when you save, nothing else.

**Does a Members Only page get the Theme?**

No. It is a Document with a lock on it. Write it with its own CSS, the same as the home page.

**What does a member below the level see on a gated page?**

The plugin's denied text, sent instead of the page. Not a 404. Set that text in EP Membership and link the sign-in Page from it.

**Can Claude build all of this over MCP?**

Yes. Documents are save-content with type html and the page in `document`. Pages and Posts are save-content with content. Members Only pages use the plugin's type. The Theme template is edited through the theme actions.

**Where does the Design Conversion Skill fit?**

It converts an existing HTML design into a Theme. On a Document-first site you are not converting anything, so you do not need it.

Related: [Blogging in PageMotor](https://documentation.elmspark.com/guides/blogging-in-pagemotor/), and the plugin pages for [EP Blog](https://documentation.elmspark.com/plugins/ep-blog/), [EP Cards](https://documentation.elmspark.com/plugins/ep-cards/) and [EP Membership](https://documentation.elmspark.com/plugins/ep-membership/).

---

*Generated from the guide above. If something here looks wrong, the guide is the source of truth: https://documentation.elmspark.com/guides/documents-boxes-blank-slate/*
