Install
openclaw skills install proofeditorWeb-first skill for working with Proof documents via proofeditor.ai. Use when a Proof URL is shared, when creating collaborative docs in Proof, or when the u...
openclaw skills install proofeditorProof is a collaborative markdown editor for agents and humans. Use the hosted web API at https://www.proofeditor.ai.
Every write must include by: "ai:<agent-name>" so Proof can track who wrote what.
This skill is web-only. Do not use a local Mac app bridge or localhost:9847 from this skill.
If the user shares a Proof URL:
When creating new docs, follow this priority order:
collaborative_docs.Supported default modes:
all_new_markdown: new markdown artifacts you create go to Proof by default.collaborative_docs: plans, specs, bug writeups, reports, memos, proposals, drafts, and similar iterative docs go to Proof by default.explicit_only: only use Proof when the user explicitly asks.Boundary rules:
Shared URL format:
https://www.proofeditor.ai/d/<slug>?token=<token>
Use one of:
Authorization: Bearer <token> (preferred)x-share-token: <token>?token=<token>by controls authorship. X-Agent-Id controls presence identity.
When a Proof URL is provided:
slug and token.X-Agent-Id or by posting presence.Connected in Proof and ready.Read state and show presence on read:
curl -sS "https://www.proofeditor.ai/api/agent/<slug>/state" \
-H "Authorization: Bearer <token>" \
-H "X-Agent-Id: <your-agent-id>"
Update presence explicitly:
curl -sS -X POST "https://www.proofeditor.ai/api/agent/<slug>/presence" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-H "X-Agent-Id: <your-agent-id>" \
-d '{
"agentId":"<your-agent-id>",
"status":"reading",
"summary":"Joining the doc"
}'
Common statuses: reading, thinking, acting, waiting, completed, error.
Create a shared document:
curl -sS -X POST https://www.proofeditor.ai/share/markdown \
-H "Content-Type: application/json" \
-d '{"title":"My Document","markdown":"# Hello\n\nFirst draft."}'
Save:
slugaccessTokenshareUrltokenUrl_linksWhen Proof is the default for the task:
| Task | Recommended API | Why |
|---|---|---|
| Precise paragraph or section rewrite | edit/v2 | Block refs plus revision locking |
| Simple append or replace | edit | Minimal payload |
| Human-reviewed edits | ops | Suggestions and comments in track changes |
| Large rewrite proposal | ops + rewrite.apply | Produces reviewable changes |
Get a snapshot:
curl -sS "https://www.proofeditor.ai/api/agent/<slug>/snapshot" \
-H "Authorization: Bearer <token>"
Apply block operations:
curl -sS -X POST "https://www.proofeditor.ai/api/agent/<slug>/edit/v2" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-H "Idempotency-Key: <unique-key>" \
-d '{
"by":"ai:<your-agent-name>",
"baseRevision":42,
"operations":[
{"op":"replace_block","ref":"b3","block":{"markdown":"Updated paragraph."}},
{"op":"insert_after","ref":"b3","blocks":[{"markdown":"## New section"}]}
]
}'
Supported ops:
replace_blockinsert_beforeinsert_afterdelete_blockreplace_rangefind_replace_in_blockUse this for quick append or replace flows:
curl -sS -X POST "https://www.proofeditor.ai/api/agent/<slug>/edit" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{
"by":"ai:<your-agent-name>",
"operations":[
{"op":"append","section":"Notes","content":"\n\nNew note."},
{"op":"replace","search":"old","content":"new"}
]
}'
Primary endpoint:
POST /api/agent/<slug>/ops
Compatibility endpoint:
POST /api/documents/<slug>/ops
Examples:
{"type":"comment.add","by":"ai:<your-agent-name>","quote":"anchor text","text":"Comment body"}
{"type":"suggestion.add","by":"ai:<your-agent-name>","kind":"replace","quote":"old text","content":"new text"}
{"type":"suggestion.add","by":"ai:<your-agent-name>","kind":"replace","quote":"old text","content":"new text","status":"accepted"}
{"type":"rewrite.apply","by":"ai:<your-agent-name>","content":"# Rewritten markdown"}
Use ops when you want the human to review changes in track changes.
Poll for pending events:
curl -sS "https://www.proofeditor.ai/api/agent/<slug>/events/pending?after=0" \
-H "Authorization: Bearer <token>"
Ack processed events:
curl -sS -X POST "https://www.proofeditor.ai/api/agent/<slug>/events/ack" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{"upToId":123,"by":"ai:<your-agent-name>"}'
If you are staying in the loop while a human reviews changes, keep presence updated so the doc shows what you are doing.
| Error | Meaning | Action |
|---|---|---|
401/403 | Bad or missing auth | Re-read token from URL and retry with bearer token |
404 | Slug not found | Verify slug and environment |
409 PROJECTION_STALE | Metadata catching up | Re-read state or snapshot, then retry |
409 STALE_REVISION | Snapshot out of date | Use the fresh snapshot or state and retry |
409 ANCHOR_NOT_FOUND | V1 search anchor missing | Re-read state and choose a tighter anchor |
422 | Invalid payload | Fix required fields and schema |
429 | Rate limit | Back off and retry with jitter |
Guidelines:
by on every write.content and markdown payloads as canonical text input.Idempotency-Key on edit/v2 requests so retries stay safe.https://www.proofeditor.ai/.well-known/agent.jsonhttps://www.proofeditor.ai/agent-docshttps://www.proofeditor.ai/agent-setup