Qmd
alsk1992/CloddsBot
Local hybrid search for markdown notes and docs. An agent skill from alsk1992/CloddsBot.
Read and write Craft documents via the Craft Connect API. An agent skill from LeoYeAI/openclaw-master-skills.
$ npx skills add LeoYeAI/openclaw-master-skills --skill craft -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills craft --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/craft-connect .claude/skills/craft && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "craft" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/craft-connect into .claude/skills/craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "craft", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/craft-connectType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill craft -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills craft --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/craft-connect .agents/skills/craft && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "craft" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/craft-connect into .agents/skills/craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "craft", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill craft -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills craft --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/craft-connect .cursor/skills/craft && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "craft" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/craft-connect into .cursor/skills/craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "craft", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/craft-connect--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill craft -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills craft --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/craft-connect .gemini/skills/craft && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "craft" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/craft-connect into .gemini/skills/craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "craft", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills craftInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill craft -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/craft-connect .github/skills/craft && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "craft" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/craft-connect into .github/skills/craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "craft", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill craft -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills craft --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/craft-connect .opencode/skills/craft && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "craft" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/craft-connect into .opencode/skills/craft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "craft", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
craftRead and write Craft documents via the Craft Connect API. An agent skill from LeoYeAI/openclaw-master-skills.
Craft is an agent skill from LeoYeAI/openclaw-master-skills. Read and write Craft documents via the Craft Connect API. Use when the user asks to create, read, update, or search Craft documents, manage tasks, write daily notes, organize folders, work with collections (structured databases), or format rich content. Covers all block types including toggles, callouts, tables, code, highlights, math formulas, images, cards, and styled text. NOT for general note-taking to local files or unrelated document editors. Requires: CRAFTAPIURL (Craft Connect API base URL with embedded…
Its SKILL.md is about 4.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `_meta.json` and `references/formatting-cheatsheet.md`).
It sits in Knowledge Management, covering Note-taking. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
r.craft.doconnect.craft.doyoutube.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
STATUS_KEYCONTENT_KEYPRIORITY_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Craft loads about 4.3k tokens when it runs, and up to ~4.8k if it reads all its reference files. Until then it costs about 148 tokens; SKILL.md has 713 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 713 words, ~4,262 tokens.
.claude/skills/craft/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Operate on a Craft space via the Craft Connect REST API. Full CRUD on documents, blocks, folders, tasks, collections, and comments.
CRAFT_API_URL=https://connect.craft.do/links/<LINK_ID>/api/v1All calls use curl with -H "Content-Type: application/json" for writes and
-H "Accept: application/json" for reads.
Important: URL-encode non-ASCII characters (e.g. Chinese) in query params.
curl -s "$CRAFT_API_URL/connection"Returns space ID, timezone, current time, and deep-link URL templates.
# List all folders and locations
curl -s "$CRAFT_API_URL/folders"
# List documents in a location (unsorted | trash | templates | daily_notes)
curl -s "$CRAFT_API_URL/documents?location=unsorted"
# List documents in a folder
curl -s "$CRAFT_API_URL/documents?folderId=<FOLDER_ID>"
# With metadata (creation/modification dates, deep links)
curl -s "$CRAFT_API_URL/documents?location=unsorted&fetchMetadata=true"
# Date filters (ISO YYYY-MM-DD or: today, yesterday, tomorrow)
curl -s "$CRAFT_API_URL/documents?createdDateGte=2025-01-01&lastModifiedDateLte=today"# Search across ALL documents (URL-encode non-ASCII!)
curl -s "$CRAFT_API_URL/documents/search?include=<TERM>&fetchMetadata=true"
# Search within a specific document (with context blocks)
curl -s "$CRAFT_API_URL/blocks/search?blockId=<DOC_ID>&pattern=<REGEX>&beforeBlockCount=2&afterBlockCount=2"
# Filter search by folder or location
curl -s "$CRAFT_API_URL/documents/search?include=<TERM>&folderIds=<FOLDER_ID>"
curl -s "$CRAFT_API_URL/documents/search?include=<TERM>&location=daily_notes"# Create document (defaults to unsorted)
curl -s -X POST "$CRAFT_API_URL/documents" \
-H "Content-Type: application/json" \
-d '{"documents": [{"title": "My Document"}]}'
# Create in a specific folder
curl -s -X POST "$CRAFT_API_URL/documents" \
-H "Content-Type: application/json" \
-d '{"documents": [{"title": "Doc"}], "destination": {"folderId": "<ID>"}}'
# Create as template
curl -s -X POST "$CRAFT_API_URL/documents" \
-H "Content-Type: application/json" \
-d '{"documents": [{"title": "Template"}], "destination": {"destination": "templates"}}'
# Delete (soft-delete to trash, recoverable)
curl -s -X DELETE "$CRAFT_API_URL/documents" \
-H "Content-Type: application/json" \
-d '{"documentIds": ["<DOC_ID>"]}'
# Move between locations
curl -s -X PUT "$CRAFT_API_URL/documents/move" \
-H "Content-Type: application/json" \
-d '{"documentIds": ["<ID>"], "destination": {"folderId": "<FOLDER_ID>"}}'
# Restore from trash
curl -s -X PUT "$CRAFT_API_URL/documents/move" \
-H "Content-Type: application/json" \
-d '{"documentIds": ["<ID>"], "destination": {"destination": "unsorted"}}'# Get document content (JSON)
curl -s "$CRAFT_API_URL/blocks?id=<DOC_ID>" -H "Accept: application/json"
# Get daily note
curl -s "$CRAFT_API_URL/blocks?date=today" -H "Accept: application/json"
# Control depth (0=block only, 1=direct children, -1=all)
curl -s "$CRAFT_API_URL/blocks?id=<ID>&maxDepth=1"
# With metadata (comments, authors, timestamps)
curl -s "$CRAFT_API_URL/blocks?id=<ID>&fetchMetadata=true"Two methods: markdown (recommended) and blocks JSON.
Best for most content. Craft parses markdown and auto-generates correct block types, indentation levels, and list styles.
curl -s -X POST "$CRAFT_API_URL/blocks" \
-H "Content-Type: application/json" \
-d '{
"markdown": "## Heading\n\nParagraph\n\n- bullet 1\n- bullet 2",
"position": {"position": "end", "pageId": "<DOC_ID>"}
}'Use when you need explicit control over color, font, textStyle, or other
properties not expressible in plain markdown.
curl -s -X POST "$CRAFT_API_URL/blocks" \
-H "Content-Type: application/json" \
-d '{
"blocks": [
{"type": "text", "textStyle": "h2", "markdown": "## Title"},
{"type": "text", "color": "#00A3CB", "markdown": "<callout>💡 Info</callout>"}
],
"position": {"position": "end", "pageId": "<DOC_ID>"}
}'| Position | Syntax |
|---|---|
| Append to document | {"position": "end", "pageId": "<DOC_ID>"} |
| Prepend to document | {"position": "start", "pageId": "<DOC_ID>"} |
| After a specific block | {"position": "after", "siblingId": "<BLOCK_ID>"} |
| Before a specific block | {"position": "before", "siblingId": "<BLOCK_ID>"} |
| Append to daily note | {"position": "end", "date": "today"} |
# Update (only provided fields change; others preserved)
curl -s -X PUT "$CRAFT_API_URL/blocks" \
-H "Content-Type: application/json" \
-d '{"blocks": [{"id": "<BLOCK_ID>", "markdown": "Updated", "font": "serif"}]}'
# Delete blocks (permanent!)
curl -s -X DELETE "$CRAFT_API_URL/blocks" \
-H "Content-Type: application/json" \
-d '{"blockIds": ["<ID1>", "<ID2>"]}'
# Move blocks between documents
curl -s -X PUT "$CRAFT_API_URL/blocks/move" \
-H "Content-Type: application/json" \
-d '{"blockIds": ["<ID>"], "position": {"position": "end", "pageId": "<DOC_ID>"}}'# List tasks (scopes: inbox, active, upcoming, logbook, document)
curl -s "$CRAFT_API_URL/tasks?scope=active"
curl -s "$CRAFT_API_URL/tasks?scope=document&documentId=<DOC_ID>"
# Create task in inbox
curl -s -X POST "$CRAFT_API_URL/tasks" \
-H "Content-Type: application/json" \
-d '{"tasks": [{"markdown": "Task text", "taskInfo": {"scheduleDate": "tomorrow"}, "location": {"type": "inbox"}}]}'
# Create task in daily note
curl -s -X POST "$CRAFT_API_URL/tasks" \
-H "Content-Type: application/json" \
-d '{"tasks": [{"markdown": "Task", "taskInfo": {"scheduleDate": "2025-01-20", "deadlineDate": "2025-01-22"}, "location": {"type": "dailyNote", "date": "today"}}]}'
# Create task in a document
curl -s -X POST "$CRAFT_API_URL/tasks" \
-H "Content-Type: application/json" \
-d '{"tasks": [{"markdown": "Task", "location": {"type": "document", "documentId": "<DOC_ID>"}}]}'
# Complete task
curl -s -X PUT "$CRAFT_API_URL/tasks" \
-H "Content-Type: application/json" \
-d '{"tasksToUpdate": [{"id": "<TASK_ID>", "taskInfo": {"state": "done"}}]}'
# Delete task
curl -s -X DELETE "$CRAFT_API_URL/tasks" \
-H "Content-Type: application/json" \
-d '{"idsToDelete": ["<TASK_ID>"]}'# Create folder (root level)
curl -s -X POST "$CRAFT_API_URL/folders" \
-H "Content-Type: application/json" \
-d '{"folders": [{"name": "New Folder"}]}'
# Create nested folder
curl -s -X POST "$CRAFT_API_URL/folders" \
-H "Content-Type: application/json" \
-d '{"folders": [{"name": "Sub", "parentFolderId": "<PARENT_ID>"}]}'
# Delete folder (docs move to parent or Unsorted)
curl -s -X DELETE "$CRAFT_API_URL/folders" \
-H "Content-Type: application/json" \
-d '{"folderIds": ["<FOLDER_ID>"]}'
# Move folder
curl -s -X PUT "$CRAFT_API_URL/folders/move" \
-H "Content-Type: application/json" \
-d '{"folderIds": ["<ID>"], "destination": "root"}'
# or: "destination": {"parentFolderId": "<ID>"}Collections are like Notion databases — structured tables with typed columns.
# List all collections
curl -s "$CRAFT_API_URL/collections"
# Create collection in a document
curl -s -X POST "$CRAFT_API_URL/collections" \
-H "Content-Type: application/json" \
-d '{
"schema": {
"name": "Tasks",
"contentPropDetails": {"name": "Title"},
"properties": [
{"name": "Status", "type": "singleSelect", "options": [{"name": "Todo"}, {"name": "In Progress"}, {"name": "Done"}]},
{"name": "Priority", "type": "singleSelect", "options": [{"name": "High"}, {"name": "Medium"}, {"name": "Low"}]},
{"name": "Due Date", "type": "date"}
]
},
"position": {"position": "end", "pageId": "<DOC_ID>"}
}'
# Get schema (use json-schema-items format to learn the property keys!)
curl -s "$CRAFT_API_URL/collections/<COL_ID>/schema?format=json-schema-items"
# ⚠️ IMPORTANT: schema returns auto-generated keys like "", "_2", "_3", "_4"
# You MUST read the schema first to know the correct keys for items
# Get items
curl -s "$CRAFT_API_URL/collections/<COL_ID>/items"
# Add items (use schema keys, NOT "title"!)
# First GET the schema to find the contentProp key (e.g. "_4" for title)
curl -s -X POST "$CRAFT_API_URL/collections/<COL_ID>/items" \
-H "Content-Type: application/json" \
-d '{"items": [{"<CONTENT_KEY>": "Item Title", "properties": {"<STATUS_KEY>": "Todo", "<PRIORITY_KEY>": "High"}}]}'
# Update items
curl -s -X PUT "$CRAFT_API_URL/collections/<COL_ID>/items" \
-H "Content-Type: application/json" \
-d '{"itemsToUpdate": [{"id": "<ITEM_ID>", "properties": {"<STATUS_KEY>": "Done"}}]}'
# Delete items
curl -s -X DELETE "$CRAFT_API_URL/collections/<COL_ID>/items" \
-H "Content-Type: application/json" \
-d '{"idsToDelete": ["<ITEM_ID>"]}'
# Update schema (replaces entirely — include ALL fields you want to keep)
curl -s -X PUT "$CRAFT_API_URL/collections/<COL_ID>/schema" \
-H "Content-Type: application/json" \
-d '{"schema": { ... }}'curl -s -X POST "$CRAFT_API_URL/comments" \
-H "Content-Type: application/json" \
-d '{"comments": [{"blockId": "<BLOCK_ID>", "content": "Comment text"}]}'curl -s -X POST "$CRAFT_API_URL/upload?position=end&pageId=<DOC_ID>" \
-H "Content-Type: application/octet-stream" \
--data-binary @file.pngPosition params: position (start|end|before|after) + pageId/date/siblingId.
# H1 Title → textStyle: "h1"
## H2 Subtitle → textStyle: "h2"
### H3 Heading → textStyle: "h3"
#### H4 Strong → textStyle: "h4"**bold**, *italic*, ~strikethrough~, `inline code`
[link text](https://url)
$(a+b)^2$ ← inline equation<highlight color="COLOR">text</highlight>Solid: yellow, blue, red, green, purple, pink, mint, cyan, gray
Gradient: gradient-blue, gradient-purple, gradient-red, gradient-yellow, gradient-brown
- bullet item → listStyle: "bullet"
1. numbered item → listStyle: "numbered"
- [ ] todo task → listStyle: "task", taskInfo.state: "todo"
- [x] completed task → listStyle: "task", taskInfo.state: "done"
+ toggle (collapsible) → listStyle: "toggle"Children MUST be indented 2 spaces to nest inside a toggle:
+ Parent toggle
- Child 1 (hidden when collapsed)
- Child 2
+ Nested toggle
- Deep childUse markdown mode only. indentationLevel in blocks JSON is silently
ignored on insert.
> Quoted textProduces block with decorations: ["quote"].
Blocks JSON with lineStyle:
{"type": "line", "lineStyle": "extraLight", "markdown": "***"}
{"type": "line", "lineStyle": "light", "markdown": "****"}
{"type": "line", "lineStyle": "regular", "markdown": "*****"}
{"type": "line", "lineStyle": "strong", "markdown": "******"}Markdown mode: --- produces extraLight by default.
Markdown mode:
```python
def hello():
print("Hello")
```Blocks JSON (requires rawCode!):
{"type": "code", "language": "python", "rawCode": "def hello():\n print('Hello')", "markdown": "```python\ndef hello():\n print('Hello')\n```"}{"type": "code", "language": "math_formula", "rawCode": "x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}", "markdown": "```math_formula\nx = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\n```"}Inline equation in markdown: $(a+b)^2 = a^2 + 2ab + b^2$
Markdown mode:
| Col A | Col B |
| --- | --- |
| val 1 | val 2 |Blocks JSON:
{"type": "image", "url": "https://example.com/photo.jpg", "markdown": ""}Craft re-hosts the image and returns a https://r.craft.do/ URL.
{"type": "richUrl", "url": "https://www.youtube.com/watch?v=..."}{"type": "page", "textStyle": "page", "markdown": "Sub-page Title"}
{"type": "page", "textStyle": "card", "markdown": "Card Title"}Then insert content inside using the returned page ID as pageId.
Require blocks JSON with color:
{"type": "text", "color": "#00A3CB", "markdown": "<callout>💡 Info</callout>"}Common colors: #00A3CB (blue/info), #FF3B30 (red/warning), #34C759
(green/success), #FF9500 (orange/caution), #9862E8 (purple), #003382
(deep blue), #006744 (deep green), #864d00 (brown), #ef052a (bright red),
#9ea4aa (gray).
Callouts support inline styles inside:
<callout>**bold** and <highlight color="yellow">highlight</highlight></callout>
Set via font in blocks JSON: (default), serif, mono, rounded.
{"type": "text", "textStyle": "caption", "markdown": "<caption>Small annotation</caption>"}{"type": "text", "listStyle": "task", "taskInfo": {"state": "todo"}, "markdown": "- [ ] Task"}States: todo, done, canceled — NOT "completed".
{
"type": "text",
"font": "rounded",
"textStyle": "h3",
"color": "#9862E8",
"markdown": "<callout>### ✨ Purple rounded heading callout</callout>"
}| Need | Use | Why |
|---|---|---|
| Text, lists, headings | Markdown | Clean, auto-detects types |
| Toggle lists with children | Markdown | Only way to get indentation right |
| Code blocks, tables | Either | Markdown is simpler; JSON needs rawCode |
| Colored callouts | Blocks JSON | Need color property |
| Custom fonts | Blocks JSON | Need font property |
| Captions | Blocks JSON | Need textStyle: "caption" |
| Images, richUrl, pages | Blocks JSON | Need type field |
| Line styles | Blocks JSON | Need lineStyle |
| Math formulas | Blocks JSON | Need language: "math_formula" + rawCode |
| Mixed content | Split calls | Combine markdown + blocks JSON |
Toggle indentation: markdown mode with 2-space indent is the only way.
indentationLevel in blocks JSON is silently ignored on insert.
Task state values: todo | done | canceled. NOT completed.
Position after/before: use siblingId (not blockId).
Position end/start: use pageId or date.
Code blocks in JSON mode: require rawCode field. Without it you get
a validation error.
Collection item keys: the API docs say title but the real field name
is the auto-generated contentProp key from the schema (e.g. _4).
Always GET /collections/<id>/schema?format=json-schema-items first
to discover the correct keys.
URL-encode search terms: Chinese and special characters in query params
must be URL-encoded or curl returns 400.
Accept header: use application/json for reads. text/markdown may 502.
Document delete is soft: goes to trash, restorable via move. Block delete is permanent.
Large inserts: one POST can insert many blocks. Prefer fewer larger writes to avoid rate limits.
Image re-hosting: Craft downloads external images and re-hosts them
at https://r.craft.do/. Your original URL is replaced.
Collections are experimental: the API may change. Always read the schema before writing items.
© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in skills/craft-connect of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Craft next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Craft this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.3k | Automated safety check: Pass | MIT | |
| Qmdalsk1992/CloddsBot | 2.9k | 3 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Obsidian Canvas BoardsAgriciDaniel/claude-obsidian | 15k | — | ~1.4k | Automated safety check: Pass | MIT | |
| LLM Wikilewislulu/llm-wiki-skill | 655 | — | ~3.7k | Automated safety check: Pass | None | |
| Para Memory Filespaperclipai/paperclip | 99k | 1 repos | ~909 | Automated safety check: Pass | MIT | |
| Add Frontmatterheyitsnoah/claudesidian | 2.6k | — | ~951 | Automated safety check: Pass | MIT |
alsk1992/CloddsBot
Local hybrid search for markdown notes and docs. An agent skill from alsk1992/CloddsBot.
AgriciDaniel/claude-obsidian
Creates, inspects and updates Obsidian JSON Canvas boards in a vault, with text, file, link, group and edge nodes, using safe recoverable edits.
lewislulu/llm-wiki-skill
Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…
paperclipai/paperclip
Use a file-based PARA memory system to store, retrieve, and organize durable knowledge across sessions.
heyitsnoah/claudesidian
Add or update YAML frontmatter properties to enhance Obsidian note organization.
AgriciDaniel/claude-obsidian
Explains, drafts and validates Obsidian Bases .base files, building filters, formulas and table, card or list views, and applying edits only through one inspected transaction.
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Categories
Read and write Craft documents via the Craft Connect API. An agent skill from LeoYeAI/openclaw-master-skills. Craft is an agent skill from LeoYeAI/openclaw-master-skills. Read and write Craft documents via the Craft Connect API.
Craft fits situations like: the user asks to create; search Craft documents; write daily notes; organize folders.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill craft -a claude-code`. Or copy the skill folder (skills/craft-connect in LeoYeAI/openclaw-master-skills) into .claude/skills/craft in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill craft -a codex`. Or copy the skill folder (skills/craft-connect in LeoYeAI/openclaw-master-skills) into .agents/skills/craft in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill craft -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/craft, .gemini/skills/craft, .github/skills/craft and .opencode/skills/craft in your project.
Going by SKILL.md and its folder, Craft needs the command-line tools its instructions call (curl) and credentials named STATUS_KEY, CONTENT_KEY and PRIORITY_KEY. Our summary lists: A credential in CONTENT_KEY; A credential in STATUS_KEY.
SKILL.md names 3 domains. In commands or code: r.craft.do, connect.craft.do and youtube.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Craft is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 525 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Craft: Qmd (alsk1992/CloddsBot, 2.9k stars), Obsidian Canvas Boards (AgriciDaniel/claude-obsidian, 15k stars), LLM Wiki (lewislulu/llm-wiki-skill, 655 stars) and Para Memory Files (paperclipai/paperclip, 99k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,160 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.