From compound-engineering
Creates, edits, comments on, and shares markdown documents via Proof's web API and local bridge. Use when asked to proof, share a doc, or given a proofeditor.ai URL.
How this skill is triggered — by the user, by Claude, or both
Slash command
/compound-engineering:proofThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Proof is a collaborative document editor for humans and agents. It supports two modes:
Proof is a collaborative document editor for humans and agents. It supports two modes:
No authentication required. Returns a shareable URL with access token.
curl -X POST https://www.proofeditor.ai/share/markdown \
-H "Content-Type: application/json" \
-d '{"title":"My Doc","markdown":"# Hello\n\nContent here."}'
Response format:
{
"slug": "abc123",
"tokenUrl": "https://www.proofeditor.ai/d/abc123?token=xxx",
"accessToken": "xxx",
"ownerSecret": "yyy",
"_links": {
"state": "https://www.proofeditor.ai/api/agent/abc123/state",
"ops": "https://www.proofeditor.ai/api/agent/abc123/ops"
}
}
Use the tokenUrl as the shareable link. The _links give you the exact API paths.
curl -s "https://www.proofeditor.ai/api/agent/{slug}/state" \
-H "x-share-token: <token>"
All operations go to POST https://www.proofeditor.ai/api/agent/{slug}/ops
Note: Use the /api/agent/{slug}/ops path (from _links in create response), NOT /api/documents/{slug}/ops.
Authentication for protected docs:
x-share-token: <token> or Authorization: Bearer <token>?token=xxx or the accessToken from create responseComment on text:
{"op": "comment.add", "quote": "text to comment on", "by": "ai:<agent-name>", "text": "Your comment here"}
Reply to a comment:
{"op": "comment.reply", "markId": "<id>", "by": "ai:<agent-name>", "text": "Reply text"}
Resolve a comment:
{"op": "comment.resolve", "markId": "<id>", "by": "ai:<agent-name>"}
Suggest a replacement:
{"op": "suggestion.add", "kind": "replace", "quote": "original text", "by": "ai:<agent-name>", "content": "replacement text"}
Suggest a deletion:
{"op": "suggestion.add", "kind": "delete", "quote": "text to delete", "by": "ai:<agent-name>"}
Bulk rewrite:
{"op": "rewrite.apply", "content": "full new markdown", "by": "ai:<agent-name>"}
suggestion.add with kind: "insert" returns Bad Request on the web ops endpoint. Use kind: "replace" with a broader quote instead, or use rewrite.apply for insertions./d/{slug}/bridge/*) require client version headers (x-proof-client-version, x-proof-client-build, x-proof-client-protocol) and return 426 CLIENT_UPGRADE_REQUIRED without them. Use the /api/agent/{slug}/ops endpoint instead.Requires Proof.app running. Bridge at http://localhost:9847.
Required headers:
X-Agent-Id: claude (identity for presence)Content-Type: application/jsonX-Window-Id: <uuid> (when multiple docs open)| Method | Endpoint | Purpose |
|---|---|---|
| GET | /windows | List open documents |
| GET | /state | Read markdown, cursor, word count |
| GET | /marks | List all suggestions and comments |
| POST | /marks/suggest-replace | {"quote":"old","by":"ai:<agent-name>","content":"new"} |
| POST | /marks/suggest-insert | {"quote":"after this","by":"ai:<agent-name>","content":"insert"} |
| POST | /marks/suggest-delete | {"quote":"delete this","by":"ai:<agent-name>"} |
| POST | /marks/comment | {"quote":"text","by":"ai:<agent-name>","text":"comment"} |
| POST | /marks/reply | {"markId":"<id>","by":"ai:<agent-name>","text":"reply"} |
| POST | /marks/resolve | {"markId":"<id>","by":"ai:<agent-name>"} |
| POST | /marks/accept | {"markId":"<id>"} |
| POST | /marks/reject | {"markId":"<id>"} |
| POST | /rewrite | {"content":"full markdown","by":"ai:<agent-name>"} |
| POST | /presence | {"status":"reading","summary":"..."} |
| GET | /events/pending | Poll for user actions |
thinking, reading, idle, acting, waiting, completed
When given a Proof URL like https://www.proofeditor.ai/d/abc123?token=xxx:
abc123) and token from the URL# Read
curl -s "https://www.proofeditor.ai/api/agent/abc123/state" \
-H "x-share-token: xxx"
# Comment
curl -X POST "https://www.proofeditor.ai/api/agent/abc123/ops" \
-H "Content-Type: application/json" \
-H "x-share-token: xxx" \
-d '{"op":"comment.add","quote":"text","by":"ai:compound","text":"comment"}'
# Suggest edit
curl -X POST "https://www.proofeditor.ai/api/agent/abc123/ops" \
-H "Content-Type: application/json" \
-H "x-share-token: xxx" \
-d '{"op":"suggestion.add","kind":"replace","quote":"old","by":"ai:compound","content":"new"}'
# 1. Create
RESPONSE=$(curl -s -X POST https://www.proofeditor.ai/share/markdown \
-H "Content-Type: application/json" \
-d '{"title":"My Doc","markdown":"# Title\n\nContent here."}')
# 2. Extract URL and token
URL=$(echo "$RESPONSE" | jq -r '.tokenUrl')
SLUG=$(echo "$RESPONSE" | jq -r '.slug')
TOKEN=$(echo "$RESPONSE" | jq -r '.accessToken')
# 3. Share the URL
echo "$URL"
# 4. Make edits using the ops endpoint
curl -X POST "https://www.proofeditor.ai/api/agent/$SLUG/ops" \
-H "Content-Type: application/json" \
-H "x-share-token: $TOKEN" \
-d '{"op":"comment.add","quote":"Content here","by":"ai:compound","text":"Added a note"}'
/state content as source of truth before editingby field for attribution trackingnpx claudepluginhub fliptables/scape-marketplace --plugin compound-engineering2plugins reuse this skill
First indexed Mar 2, 2026
Publishes, reads, comments on, or edits markdown documents in Proof's collaborative editor. Use for sharing specs, plans, and drafts via Proof links.
Syncs, pushes, and pulls markdown docs with Glyphdown's CRDT-based collaboration platform. Use for editing shared docs, leaving suggestions, or managing a cloned workspace.
Guides interactions with the OpenMarkdown markdown app: opening/revealing files, section-based editing, reading file states, and live co-editing watch loops.