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 asets-gobizit/claude-skills 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. 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.
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_block/editPOST /api/agent/<slug>/edit has been removed.
Older callers receive 410 LEGACY_EDIT_REMOVED with guidance to re-read /state and switch to /edit/v2.
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-sdkdata-ai
Automated backup skill for PKA + Obsidian + Claude memory. Snapshots pka.db (via SQLite .backup so WAL is handled safely), the Obsidian vault, Claude memory files, agent profiles, and the help-content Excel into a single timestamped zip in Zoho WorkDrive. Daily/weekly/monthly retention rotation built in. USE WHEN Danny says "backup", "run backup", "snapshot pka", or to recover from a snapshot.
testing
Run any question, idea, or decision through a council of 5 AI advisors who independently analyze it, peer-review each other anonymously, and synthesize a final verdict. Based on Karpathy's LLM Council methodology, packaged as the stress-test skill. MANDATORY TRIGGERS: 'stress-test this', 'stress test this', 'pressure-test this', 'pressure test this', 'war room this', 'council this', 'run the council', 'debate this'. STRONG TRIGGERS (use when combined with a real decision or tradeoff): 'should I X or Y', 'which option', 'what would you do', 'is this the right move', 'validate this', 'get multiple perspectives', 'I can't decide', 'I'm torn between'. Do NOT trigger on simple yes/no questions, factual lookups, or casual 'should I' without a meaningful tradeoff (e.g. 'should I use markdown' is not a stress-test question). DO trigger when the user presents a genuine decision with stakes, multiple options, and context that suggests they want it pressure-tested from multiple angles.
content-media
Weekly scan of Obsidian vault for empty/low-content notes. Moves them to zToBeDeleted/ for user review. Use when the user says "tidy obsidian", "clean obsidian", "obsidian cleanup", or on scheduled weekly run.
development
Design-first website builder. Accepts a Claude Design export (HTML or screenshot) as a visual blueprint, collects business inputs, calls Claude API to generate a design-matched index.html, and publishes to GitHub Pages. Falls back to vibe-based generation if no design is provided. Use when the user says "make-website-design", "design website", "build from design", or provides a Claude Design export for website generation.