Pageskill treats a page as content data. Frontmatter supplies the fields required by the collection schema, and the body uses CommonMark with GFM features. Patterns and Blocks provide reusable structure; the author does not write per-page HTML.
Make a document page
From the site root, create content/pages/hello/en.md:
---
title: Hello from Markdown
description: A small page that uses headings, lists, a table, and one reusable Block.
pattern: document
---
# Hello from Markdown
Pageskill turns this source into a page at `/en/hello/`.
## A short checklist
- Write the page in Markdown.
- Keep frontmatter names aligned with the collection schema.
- Reuse a Block only when `pageskill catalog` shows it exists.
| Source | Result |
| --- | --- |
| `# heading` | A semantic heading |
| `[Guide](/en/guide/)` | A normal site link |
:::hero{tone="brand" align="left"}
The `hero` Block is reusable theme structure.
:::
The starter provides the document Pattern and hero Block. The full default theme also provides docs; confirm a capability with pageskill catalog before using it.
Use the common building blocks
Use #, ##, and ### headings for document structure. Use paragraphs, lists, blockquotes, fenced code, tables, task lists, and ordinary Markdown links in the body. Put a scalar attribute on a directive, for example :::hero{tone="brand"}. Keep long prose in Markdown instead of encoding it as an HTML string.
Check the active names before copying an example:
pageskill catalog
pageskill inspect pattern:document
pageskill inspect block:hero
Check the result
Run the check and build from the site root:
pageskill check
pageskill build
The expected result is a successful check and a generated /en/hello/ page in dist/. If you run pageskill s, the preview server refreshes after the Markdown file changes.
Common errors
- The page has no title: add the required
titlefield to Frontmatter. - The Pattern is unknown: use
documentin a starter, or copy a theme thatcatalogshows provides the requested Pattern. - A Block attribute is rejected: inspect that Block and use only its declared scalar schema and allowed values.
- A table or directive renders strangely: check the closing
:::line and keep a blank line before and after block content. - HTML was added to “fix” one page: return to Markdown and a reusable Pattern or Block; raw HTML is escaped by default.
Expected result and next step
You can now write a checked document page using frontmatter and reusable Markdown structure. Continue with First content to create a page and a dated Product Note, or return to the Guide.