skills/proof/SKILL.md
Web-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 an installed Proof preference says new docs should live there.
npx skillsauth add rdfitted/claude-code-setup proofInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Proof is a collaborative markdown editor for agents and humans.
Base URL resolution (check in order):
PROOF_URL is set, use it (e.g. http://localhost:4000)https://www.proofeditor.aiReplace https://www.proofeditor.ai in all API calls below with the resolved base URL.
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.
Use one reporting tool call:
curl -sS -X POST "https://www.proofeditor.ai/api/bridge/report_bug" \
-H "Content-Type: application/json" \
-d '{
"summary":"Short bug summary",
"context":"What you were trying to do and what looked wrong.",
"slug":"<slug-if-you-have-it>",
"evidence":[
{
"kind":"http_response",
"method":"POST",
"url":"https://www.proofeditor.ai/api/agent/<slug>/edit/v2",
"status":500,
"requestId":"<x-request-id>"
}
]
}'
If the response returns status: "needs_more_info", ask the suggested questions and call the same endpoint again.
If you want reference code while debugging or preparing the report, you can optionally inspect:
https://github.com/EveryInc/proof-sdkWhen 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.
Read comment threads from:
GET /api/agent/<slug>/state
Comment bodies, replies, and resolved state live in marks on the state response.
state.marks for comment text and thread metadata./snapshot for block refs and edit/v2 only. It does not include comment thread bodies./events/pending to notice activity and decide when to refresh state. Do not treat events as the source of comment text.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:codex",
"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:codex",
"operations":[
{"op":"append","section":"Notes","content":"\n\nNew note."},
{"op":"replace","search":"old","content":"new"}
]
}'
Notes for v1 /edit:
insert supports after only; insert.before is rejected.baseUpdatedAt from state for optimistic concurrency.replace accepts legacy search or target.anchor.insert accepts legacy after or target.anchor.target are provided, target wins.target fields:
anchor (required)mode (exact | normalized | contextual)occurrence (first | last | 0-based index)contextBefore / contextAfter (optional disambiguation)search/after anchors keep deterministic first-match behavior.target matches fail closed by default (ANCHOR_AMBIGUOUS) unless occurrence is explicit.Primary endpoint:
POST /api/agent/<slug>/ops
Compatibility endpoint:
POST /api/documents/<slug>/ops
Examples:
{"type":"comment.add","by":"ai:codex","quote":"anchor text","text":"Comment body"}
{"type":"suggestion.add","by":"ai:codex","kind":"replace","quote":"old text","content":"new text"}
{"type":"suggestion.add","by":"ai:codex","kind":"replace","quote":"old text","content":"new text","status":"accepted"}
{"type":"rewrite.apply","by":"ai:codex","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:codex"}'
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:
POST /api/bridge/report_bug with the request/response, request ID, slug, and a short context note.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-setuphttps://www.proofeditor.ai/api/bridge/report_bughttps://github.com/EveryInc/proof-sdkdevelopment
Restore from the Kopia backup repo in one of two opinionated modes. **wikis** (frequent, default) syncs per-project `.ai-docs/` directories from backup to local project trees — used to move compound-knowledge wikis between machines via the backup drive as sneakernet. **full** (rare) restores all sources to original paths for greenfield machine rebuild. Use when the user says "restore wikis", "sync wikis from backup", "pull the wikis", "I plugged in the backup drive on this machine", "rebuild this machine", "greenfield restore", or "restore everything". For ad-hoc single-file restores, use `backup-ops restore` instead.
documentation
# /bp-iterate Iterate the Fitted Business Plan(s). Manages the **internal canonical** and the **external partner/investor variant**, snapshot-on-version-bump lineage, redaction enforcement between variants, and cross-document coupling. ## When this runs - User says `/bp-iterate`, "iterate the BP," "bump the BP," "update the business plan," "version up the BP," "create / update / refresh the external variant" - A material trigger fires per the BP's own Iteration Log (first 2 new closes / fundi
tools
Run Kopia-based backups of key Windows files and config to an external drive. Use when the user says "back up", "run a backup", "snapshot", "the backup drive is plugged in", or wants to set up / configure backups for the first time. Handles initial repo setup, drive detection by volume label, source enumeration, and snapshot creation with structured exclusions.
testing
Secondary backup operations against the Kopia repo — verify integrity, run maintenance/prune, mirror to a second destination, restore files/folders, or run a quick top-up snapshot of hot directories. Use when the user says "verify backups", "check backup integrity", "prune old snapshots", "restore from backup", "mirror backups to cloud", "quick backup", "top up the backup", or asks about backup health. For the primary backup run, use the `backup` skill instead.