# Openpress Deploy

> Use when preparing, configuring, checking, staging, or publishing an open-press document to public hosting, especially Cloudflare Pages, deploy setup, deploy buttons, deploy status, public release checks, or safe deployment workflow.

- Skill: `quan0715/openpress-deploy` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add quan0715/openpress-deploy`
- Raw SKILL.md: https://api.skillmd.com/api/skills/quan0715/openpress-deploy/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: quan0715 (https://skillmd.com/u/quan0715)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/quan0715/openpress-deploy

---


# open-press Deploy

open-press deploy owns the public-release gate. Use it only when the user asks to configure, inspect, dry-run, or publish an open-press document.

## Responsibilities

- Inspect deploy config in `openpress/settings.json` under the `"deploy"` field.
- Check target adapter, staging source, project name, and confirmation settings.
- Run deploy preflight and dry runs.
- Keep secrets out of source files.
- Require explicit confirmation before publishing.
- Report the public URL and, when included, the PDF URL after successful deploy.

## Boundaries

- `openpress` owns generic CLI usage, non-deploy validation, local review, and the source/generated boundary.
- `openpress-create-pages` owns page artifact content and visual readiness.
- `openpress-create-slide` owns slide deck content and visual readiness.
- This skill owns public target confirmation and deploy execution.

## Public Deploy Rule

Never publish without a clear confirmation that names the target project.

Good confirmation shape:

```txt
This will publish the current open-press build to Cloudflare Pages project `<projectName>` from `<deploy.source>`.
Do you want me to deploy now?
```

## Preflight

Before real deploy, run the commands that prove the output is ready:

```bash
npm run build              # validates + renders dist-react/
```

Also scan public-facing source for unfinished markers:

```bash
rg "\\[TODO:|\\[FIX:|\\[DRAFT:" "press/*/chapters" press/design.md
```

### PDF Size Limit

Cloudflare Pages rejects any single file larger than 25 MB. A multi-press or image-heavy PDF commonly exceeds this limit.

Unless the user explicitly asks to publish the PDF, deploy without it:

```bash
npm run openpress:deploy -- --confirm --no-pdf
```

`--no-pdf` skips PDF generation and excludes it from the deploy source entirely.

If the user wants to check the PDF size first:

```bash
npm run openpress:pdf
du -sh .deploy/**/*.pdf 2>/dev/null
```

If the PDF is over 25 MB and the user still wants it publicly hosted, recommend
a separate host (Cloudflare R2, S3, etc.). OpenPress does not currently expose
an authored external-PDF URL field, so do not invent one in
`openpress/settings.json`; report the separate URL in the delivery handoff.

## Deploy Commands

Dry run:

```bash
npm run openpress:deploy:dry-run -- --no-pdf
```

Publish after explicit confirmation:

```bash
npm run openpress:deploy -- --confirm --no-pdf
```

Remove `--no-pdf` only when the user explicitly includes the PDF in the
confirmed publication target.

## When To Read References

- Read `references/cloudflare-pages.md` when creating or repairing Cloudflare Pages config, project setup, Wrangler auth expectations, or UI deploy-button behavior.

