---
name: new-post
description: Draft a single schema-valid content JSON (release, editorial, review, or profile) from a brief, then validate and build it. Use when the user wants to quickly create one page and already has the facts/links. For the full guided flow (resolve links, fetch art, review, deploy) use /studio.
---

# /new-post — draft one page

Argument: the content type — `release` | `editorial` | `review` | `profile`.

## Steps
1. **Read the contract for the type:** `schemas/<type>.schema.json` (required fields + enums),
   `examples/<type>.example.json` (imitate its shape/depth), `voice/voice-guide.md` (tone + banlist + facts rule).
   For a **review**, also read `docs/reviews.md` (the verdict-first review format); for the page
   **vibe/appearance**, see `docs/layouts.md`.
2. **Collect the brief.** Ask for title, the gist, and any facts (artist, dates, ISRC, credits, price, links).
   Anything factual not provided MUST be `null` — never invent it.
3. **Emit the JSON** to `content/<folder>/<slug>.json` (`releases|posts|reviews|profile`), matching the
   golden example; prose in the producer's voice; enums only (`schemas/enums.schema.json`).
4. **Validate + build:** run `npm run build` (validates as a gate). Read any error paths, fix, retry —
   do not hand back until it builds.
5. **Report:** show `dist/<segment>/<slug>/index.html`, the build's **facts-to-confirm** list, and any
   **missing local assets** so the human can eyeball before publishing.
   Note: URL **segment** differs from source **folder** for editorial — source folder `posts/` → URL `/blog/<slug>/`
   (segments: release→releases, editorial→**blog**, review→reviews, profile→profile). Previews live at
   `dist/<segment>/<slug>/`, not `dist/<folder>/`.

## Guardrails
- Required fields + enums come from the schema — never freelance them.
- Prose is yours; identifiers are the human's. `null` beats fabricated.
- You produce data, not HTML.
