Skip to content

Writer Guide v1

This guide covers how to create, format, and preview content on the platform.

Start Writing Immediately

Use the scaffolding command to ensure your post is placed correctly and contains a valid frontmatter schema:

sh
just new "The Title of My Post"

Storage & Naming

  • Storage: content/blog/YYYY/
  • Filename: YYYY-MM-DD-slug.md
  • Slugs: derived automatically from the filename. Changing the filename changes the URL.

Frontmatter

Every post must begin with a YAML block. The system validates it at build time to ensure SEO and site integrity.

→ See the Full Frontmatter Schema.

Features

Code Blocks

Syntax highlighting is performed at build time.

ts
const platform: string = 'deterministic';

Code Tabs

Group multiple languages in a single block using the :::code-tabs directive.

md
:::code-tabs

```ts title="TypeScript"
const x: number = 1;
```

```js title="JavaScript"
const x = 1;
```

:::

Math (KaTeX)

Rendered to static HTML at build time.

  • Inline: $E=mc^2$
  • Block: $$\int_{a}^{b} f(x) \, dx$$

Diagrams (Mermaid)

Rendered to static SVG at build time. No client-side Mermaid runtime ships unless you opt in.

md
```mermaid
graph TD;
    A-->B;
```

Images

Images should be placed adjacent to the markdown file in the same directory. Use relative paths and always provide an alt attribute.

![Alt description of the image](./my-image.png)

Errors & Fixing

  1. Invalid frontmatter — build fails (strict mode in CI) or warns (locally). Check CLI output for the exact field name.
  2. Broken internal links[anchor](./unknown-post) triggers MDX011_BROKEN_INTERNAL_LINK.
  3. Missing alt text — images must have alt text: ![description](./path.png).

To find issues locally:

sh
just check
just spell                       # cspell + markdownlint
just preview                     # production build preview
bun run content:diagnostics      # detailed report → target/generated/diagnostics.{md,json}