proof by everyinc/compound-engineering-plugin
npx skills add https://github.com/everyinc/compound-engineering-plugin --skill proofProof 是一款面向人类和智能体的协作式文档编辑器。它支持两种模式:
无需身份验证。返回一个包含访问令牌的可共享 URL。
curl -X POST https://www.proofeditor.ai/share/markdown \
-H "Content-Type: application/json" \
-d '{"title":"My Doc","markdown":"# Hello\n\nContent here."}'
响应格式:
{
"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"
}
}
使用 tokenUrl 作为可共享链接。_links 提供了确切的 API 路径。
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
curl -s "https://www.proofeditor.ai/api/agent/{slug}/state" \
-H "x-share-token: <token>"
所有操作都发送到 POST https://www.proofeditor.ai/api/agent/{slug}/ops
注意: 使用 /api/agent/{slug}/ops 路径(来自创建响应中的 _links),而不是 /api/documents/{slug}/ops。
受保护文档的身份验证:
x-share-token: <token> 或 Authorization: Bearer <token>?token=xxx 或创建响应中的 accessToken对文本添加评论:
{"op": "comment.add", "quote": "text to comment on", "by": "ai:<agent-name>", "text": "Your comment here"}
回复评论:
{"op": "comment.reply", "markId": "<id>", "by": "ai:<agent-name>", "text": "Reply text"}
解决评论:
{"op": "comment.resolve", "markId": "<id>", "by": "ai:<agent-name>"}
建议替换:
{"op": "suggestion.add", "kind": "replace", "quote": "original text", "by": "ai:<agent-name>", "content": "replacement text"}
建议删除:
{"op": "suggestion.add", "kind": "delete", "quote": "text to delete", "by": "ai:<agent-name>"}
批量重写:
{"op": "rewrite.apply", "content": "full new markdown", "by": "ai:<agent-name>"}
suggestion.add 操作若使用 kind: "insert" 会返回错误请求。请改用 kind: "replace" 并引用更广泛的文本范围,或者对于插入操作使用 rewrite.apply。/d/{slug}/bridge/*)需要客户端版本请求头(x-proof-client-version、x-proof-client-build、x-proof-client-protocol),否则会返回 426 CLIENT_UPGRADE_REQUIRED。请改用 /api/agent/{slug}/ops 端点。需要运行 Proof.app。桥接地址为 http://localhost:9847。
必需的请求头:
X-Agent-Id: claude(用于标识身份)Content-Type: application/jsonX-Window-Id: <uuid>(当打开多个文档时)| 方法 | 端点 | 用途 |
|---|---|---|
| GET | /windows | 列出打开的文档 |
| GET | /state | 读取 Markdown、光标位置、字数统计 |
| GET | /marks | 列出所有建议和评论 |
| 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 | 轮询用户操作 |
thinking, reading, idle, acting, waiting, completed
当获得一个 Proof URL,例如 https://www.proofeditor.ai/d/abc123?token=xxx 时:
abc123)和令牌# 读取
curl -s "https://www.proofeditor.ai/api/agent/abc123/state" \
-H "x-share-token: xxx"
# 评论
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"}'
# 建议编辑
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. 创建
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. 提取 URL 和令牌
URL=$(echo "$RESPONSE" | jq -r '.tokenUrl')
SLUG=$(echo "$RESPONSE" | jq -r '.slug')
TOKEN=$(echo "$RESPONSE" | jq -r '.accessToken')
# 3. 共享 URL
echo "$URL"
# 4. 使用操作端点进行编辑
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 的内容作为事实依据by 字段以进行归属跟踪每周安装量
76
代码仓库
GitHub 星标数
10.8K
首次出现
2026年3月2日
安全审计
已安装于
codex76
cursor76
gemini-cli75
kimi-cli75
opencode75
github-copilot75
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 |
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 trackingWeekly Installs
76
Repository
GitHub Stars
10.8K
First Seen
Mar 2, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykFail
Installed on
codex76
cursor76
gemini-cli75
kimi-cli75
opencode75
github-copilot75
Claude技能创建器指南:构建模块化AI技能包,优化工作流与工具集成
5,700 周安装
Datadog自动化监控:通过Rube MCP与Composio实现指标、日志、仪表板管理
69 周安装
Intercom自动化指南:通过Rube MCP与Composio实现客户支持对话管理
69 周安装
二进制初步分析指南:使用ReVa工具快速识别恶意软件与逆向工程
69 周安装
PrivateInvestigator 道德人员查找工具 | 公开数据调查、反向搜索与背景研究
69 周安装
TorchTitan:PyTorch原生分布式大语言模型预训练平台,支持4D并行与H100 GPU加速
69 周安装
screenshot 截图技能:跨平台桌面截图工具,支持macOS/Linux权限管理与多模式捕获
69 周安装
/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 |