# Preview

> Run a dry run of a Rubicon programming write batch via programming_write_dry_run to get a confirmationToken and a human-readable preview of the change before anything is published. Use this as stage 3 of the Rubicon programming pipeline, after programming-inference and before publish.

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

---


# Preview

Stage 3 of 4 in the Rubicon coach programming pipeline:

`sheet-read` → `programming-inference` → `preview` → `publish`

Input: the operation batch built in `programming-inference` (≤25
`create_node` / `patch_node` / `create_edge` / `patch_edge` operations).
Output: a `confirmationToken` and a diff-style preview of what would change
in Rubicon. **Nothing is written to Rubicon by this step.**

## What to do

1. Call the Coach MCP Surface tool `programming_write_dry_run` with the
   exact operation batch from `programming-inference`, unmodified.
2. This is a protected tool — expect an OAuth challenge the first time in a
   session (or after token expiry). Let the coach complete Codex's OAuth
   flow as themselves; do not attempt to pre-supply or hardcode any token.
3. The tool returns:
   - a `confirmationToken` — a SHA-256-based token computed server-side,
     deterministic for the exact operation set + requester + track slug.
     This plugin does not compute, cache, or modify this token. Treat it as
     opaque.
   - a preview of the resulting change (which nodes/edges would be
     created or patched, and how).
4. Show the coach the preview in a clear, readable form — group by node vs.
   edge, and call out anything that looks like it might be wrong (e.g. a
   `patch_node` touching a node the coach didn't expect, or a movement edge
   that resolved to a surprising `nodeId`).
5. Stop here. Do not proceed to `publish` until the coach explicitly
   confirms the preview looks correct.

## Why the token matters

The `confirmationToken` is a hard safety gate the Rubicon server already
enforces (not something this plugin adds): `publish` will only succeed if
the operations sent to `programming_write_publish` are byte-for-byte the
same set that produced this token. If the coach wants to change anything
after seeing the preview, go back to `programming-inference`, rebuild the
batch, and re-run `preview` to get a fresh, matching token. Never try to
reuse a token against a modified operation set — the server will reject it,
and that rejection is working as intended.

## Handoff

Once the coach approves the preview, hand off to the `publish` skill with:

- the exact same operation batch used for this dry run
- the `confirmationToken` returned here

