Markitdown
ImCa0/just-laws
Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.
Connect to Puzle Read — an intelligent reading workbench that helps users turn articles and documents into searchable personal knowledge.
$ npx skills add LeoYeAI/openclaw-master-skills --skill puzle-read-skill -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills puzle-read-skill --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/puzle-read .claude/skills/puzle-read-skill && 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 "puzle-read-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/puzle-read into .claude/skills/puzle-read-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "puzle-read-skill", 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/puzle-readType 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 puzle-read-skill -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills puzle-read-skill --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/puzle-read .agents/skills/puzle-read-skill && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "puzle-read-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/puzle-read into .agents/skills/puzle-read-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "puzle-read-skill", 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 puzle-read-skill -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills puzle-read-skill --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/puzle-read .cursor/skills/puzle-read-skill && 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 "puzle-read-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/puzle-read into .cursor/skills/puzle-read-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "puzle-read-skill", 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/puzle-read--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 puzle-read-skill -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills puzle-read-skill --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/puzle-read .gemini/skills/puzle-read-skill && 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 "puzle-read-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/puzle-read into .gemini/skills/puzle-read-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "puzle-read-skill", 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 puzle-read-skillInstalls 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 puzle-read-skill -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/puzle-read .github/skills/puzle-read-skill && 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 "puzle-read-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/puzle-read into .github/skills/puzle-read-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "puzle-read-skill", 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 puzle-read-skill -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 puzle-read-skill --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/puzle-read .opencode/skills/puzle-read-skill && 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 "puzle-read-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/puzle-read into .opencode/skills/puzle-read-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "puzle-read-skill", 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.
puzle-read-skillConnect to Puzle Read — an intelligent reading workbench that helps users turn articles and documents into searchable personal knowledge.
Puzle Read Skill is an agent skill from LeoYeAI/openclaw-master-skills. Connect to Puzle Read — an intelligent reading workbench that helps users turn articles and documents into searchable personal knowledge. Save web articles (by URL or pre-fetched content), upload documents and files to the user's reading library, and search across everything they've read to find relevant insights. Use this skill whenever the user wants to: save or read web articles, add documents to their reading library, look up something from their reading collection, process PDFs or other files for deeper…
Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `_meta.json` and `scripts/puzle_reading.py`). Compatibility notes: requires python3, requests
It sits in Documents & Office, covering PDF. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
6 steps, taken from the step headings 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.
Ships 1 file in scripts/ (Python), which the agent can run.
From 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:
read.puzle.com.cnarticle1.comarticle2.comarticle3.comarxiv.orgAlso links to:
read-web-test.puzle.com.cnFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
PUZLE_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
requires python3, requests
From compatibility in the SKILL.md frontmatter.
Puzle Read Skill loads about 4.8k tokens when it runs. Until then it costs about 248 tokens; SKILL.md has 1,496 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); the scripts in this folder are not scanned.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,496 words, ~4,836 tokens.
.claude/skills/puzle-read-skill/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Save web articles, documents and files to your personal reading library powered by Puzle. AI analyzes the full text and enables semantic search across everything you've read.
When this skill is first activated, immediately greet the user and guide them through setup:
Check if a token is already configured:
from puzle_reading import PuzleReadingClient
if PuzleReadingClient.token_is_configured():
# Token exists, ready to goIf yes, tell the user: "Puzle Read Skill is ready! You can send me any URL, file, or text and I'll save it to your reading library. You can also search across everything you've read."
If no token is configured, walk the user through it:
get_token.gif file (located at <this-skill-directory>/get_token.gif) to the
user as an attachment so they can see the visual guide.PuzleReadingClient.save_token(token) and confirm.After setup is complete, briefly explain what the skill can do:
The bundled Client SDK lives at scripts/puzle_reading.py relative to this skill directory.
It requires the requests library.
import sys
sys.path.insert(0, "<this-skill-directory>/scripts")
from puzle_reading import PuzleReadingClientToken is stored in ~/.config/puzle/config.json with file permission 0o600 (owner read/write only).
The SDK looks for a token in the following priority order:
PuzleReadingClient(token="...")PUZLE_TOKEN~/.config/puzle/config.jsonIf the user sends a token in the conversation (typically a long string starting with eyJ...),
save it immediately:
PuzleReadingClient.save_token(token)
client = PuzleReadingClient() # auto-loads from config fileAfter saving, tell the user: "Token saved to ~/.config/puzle/config.json. You won't need to
provide it again in future sessions."
Guide them step by step:
get_token.gif relative to this skill directory.Once received, save it using the steps above.
Once a token has been saved, all subsequent calls work automatically — no need to ask the user again:
client = PuzleReadingClient() # auto-reads from ~/.config/puzle/config.jsonYou can check beforehand:
if not PuzleReadingClient.token_is_configured():
# Guide the user to provide a token
...The token is valid for approximately 7 days. When you receive PuzleAPIError(code=401):
PuzleReadingClient.save_token(new_token)Users can also configure via environment variable, which takes precedence over the config file:
export PUZLE_TOKEN="eyJhbG..."When the user just wants to save content — no need to wait for processing. Create the reading, give user the web link, done.
result = client.create_reading_from_url("https://example.com/article")
# result.web_url → "https://read.puzle.com.cn/read/42"
# Tell the user: "Saved! You can view it here: {result.web_url}"Use this mode when:
When the user wants to understand, summarize, or work with the content, processing takes 30–90 seconds. To avoid blocking the conversation:
wait_for_reading() + analysis# Step 1: Create and immediately respond to user
result = client.create_reading_from_url("https://example.com/article")
# Tell user: "Processing now. You can preview it here: {result.web_url}"
# Step 2: In a background task / subagent, wait and analyze
detail = client.wait_for_reading(result.reading_id, result.resource_type)
content = detail["data"]["content"]
# Generate summary / answer questions based on content
# Step 3: When done, present results to userWhy background processing? wait_for_reading() blocks for 30–90 seconds. Running it in
a subagent or background process keeps the conversation responsive. The user gets the web link
instantly and can start reading there, while the analysis runs in parallel.
Use this mode when:
When the user gives you a link, do NOT call create_reading_from_url() directly.
Try the following approaches in order, falling through to the next step only on failure:
User sends a URL
│
▼
┌─────────────────────────────────────────────────┐
│ Step 1: Fetch the page yourself │
│ │
│ Use WebFetch, browser, or any available tool │
│ to retrieve the page content. │
│ │
│ Success (got meaningful content)? │
│ → Extract using readability (or use the │
│ tool's formatted output directly) │
│ → Extract: title, body HTML, plain text, │
│ author, site name │
│ → Call create_reading_from_html() │
│ ✅ Done │
│ │
│ Benefits of this approach: │
│ - Skips Puzle's fetching phase, faster │
│ - Handles JS-rendered dynamic pages │
│ - Handles pages with anti-scraping measures │
│ - Higher content quality (you can preprocess) │
└────────────┬────────────────────────────────────┘
│ Failed: empty content, 401/403,
│ auth wall, login required, timeout
▼
┌─────────────────────────────────────────────────┐
│ Step 2: Check for internal/specialized tools │
│ │
│ The URL might be an internal or auth-protected │
│ resource. Look in the environment for tools │
│ that can access it: │
│ - MCP servers for internal docs (Confluence, │
│ Notion, Google Docs, etc.) │
│ - API endpoints that can fetch internal content │
│ - Authenticated browser sessions │
│ │
│ Found a tool and got content? │
│ → Save content as a local file (.html / .md) │
│ → Call create_reading_from_file() │
│ ✅ Done │
└────────────┬────────────────────────────────────┘
│ No suitable tool, or still failed
▼
┌─────────────────────────────────────────────────┐
│ Step 3: Fallback — let Puzle server fetch it │
│ │
│ Call create_reading_from_url(url) │
│ Puzle backend handles fetching and parsing. │
│ This may still fail for auth-protected pages, │
│ but it's the last resort. │
│ ✅ Done │
└─────────────────────────────────────────────────┘Step 1 readability extraction example:
# Assume you've fetched the page HTML using WebFetch or similar tools
raw_html = fetch_result # full HTML
# Extract body content (use any available readability tool or extract manually)
# You need: title, content (HTML), text_content (plain text)
result = client.create_reading_from_html(
url=original_url,
title=extracted_title,
content=extracted_html, # body HTML
text_content=extracted_text, # plain text version
byline=author, # optional
site_name=site_name, # optional
)When to skip directly to Step 3 (no need to attempt Step 1/2):
create_reading_from_html()| User says | Example |
|---|---|
| Pastes raw HTML or article text | "Analyze this content: ..." |
| Provides pre-fetched page content | "I already scraped this page" |
| Content from JS-rendered page | "This page is JS-rendered, here's the source" |
create_reading_from_file()| User says | Example |
|---|---|
| Uploads or references a local file | "Analyze this PDF" / "Read this report" |
| Shares meeting notes, memos, private docs | "Here are today's meeting notes, save them" |
| Provides pure text to persist | "These are my notes" — save as temp .md first |
| Shares images for analysis | "Look at this screenshot" (JPG/PNG) |
| Shares audio for transcription | "Process this recording" (MP3/WAV) |
| Internal link content already retrieved | Content from Step 1, saved as file then uploaded |
search() — User wants to find something in their readings| User says | Example |
|---|---|
| Recalls reading something before | "I read an article about microservices before" |
| Looking for a specific concept | "Is there anything about attention mechanism in my library" |
| Cross-referencing topics | "Find everything mentioning transformer" |
| Fact-checking against saved readings | "I remember an article said X, find it for me" |
| Building on prior knowledge | "What did that paper say again" |
list_readings() — User wants to browse their collection| User says | Example |
|---|---|
| Checking recent reading history | "What have I read recently" / "Show my reading history" |
| Looking for a specific reading by title | "What was that article I saved a few days ago" |
| Organizing or reviewing collection | "List my readings" |
get_reading_detail() — Need content of a known reading| User says | Example |
|---|---|
| Wants to re-read a specific article | "Show me the content of reading #42" |
| Following up on a previous reading | "Show me the full text of that article" |
| Checking if processing is complete | (internal use after creating a reading) |
| Concept | Description |
|---|---|
| Reading | A content record in Puzle — created from a URL, HTML, or file |
| resource_type | "link" (URL/HTML source) or "file" (uploaded file) |
| Status flow | fetching → parsing → ai_reading → done / fail |
| Processing | Creating a reading returns immediately; use wait_for_reading() only when you need the full content right away |
All create_reading_* methods return a ReadingResult with a web_url field
(e.g. https://read.puzle.com.cn/read/42) — always share this link with the user.
result = client.create_reading_from_url("https://example.com/article")
print(result.web_url) # → "https://read.puzle.com.cn/read/42"Use when the content has already been scraped — skips the fetching phase, so processing is faster.
result = client.create_reading_from_html(
url="https://example.com/article",
title="Article Title",
content="<div>Raw HTML...</div>",
text_content="Plain text version...",
# Optional: excerpt, byline, site_name, published_time
)
detail = client.wait_for_reading(result.reading_id, result.resource_type)Supported types: PDF, TXT, MD, CSV, JPG, PNG, WebP, GIF, MP3, WAV
result = client.create_reading_from_file("/path/to/document.pdf")
detail = client.wait_for_reading(result.reading_id, result.resource_type)The SDK automatically handles MD5 calculation and S3 upload internally.
If the user provides pure text, private docs, or other text material, you can save them as a local file and use this method to create a reading.
detail = client.get_reading_detail(reading_id=42, resource_type="link")
# detail["data"]["status"] — check processing state
# detail["data"]["content"] — full HTML (available when status == "done")
# detail["data"]["title"] — extracted titleUse resource_type="file" for file-based readings. The SDK routes to the correct endpoint.
readings = client.list_readings(page=1, page_size=10)
for item in readings["data"]["items"]:
print(f"[{item['resource_type']}] {item['title']} — {item['status']}")
# readings["data"]["total"] — total count across all pagesReturns a mixed list of link and file readings, sorted by most recent first.
# Search across all readings
hits = client.search("attention mechanism in NLP", top_k=5)
# Search within specific readings only
hits = client.search("transformer architecture", reading_ids=[1, 2, 3])
for hit in hits["data"]["items"]:
print(f"[{hit['reading_title']}] (score: {hit['score']:.3f})")
print(f" {hit['chunk_text'][:200]}...")Each result contains: reading_id, reading_title, resource_type, chunk_text, score.
result = client.create_reading_from_url("https://example.com/interesting-article")
# Tell user: "Saved! You can view it here: {result.web_url}"urls = ["https://article1.com", "https://article2.com", "https://article3.com"]
results = [client.create_reading_from_url(url) for url in urls]
# Tell user: "All 3 articles saved to your reading library:"
# for r in results: print(r.web_url)# Step 1: Create and respond immediately
result = client.create_reading_from_url("https://arxiv.org/abs/1706.03762")
# Tell user: "Analyzing the article. You can preview it here: {result.web_url}"
# Step 2: In background task / subagent
detail = client.wait_for_reading(result.reading_id, result.resource_type)
content = detail["data"]["content"]
# Generate summary, then present to user when readyresult = client.create_reading_from_file("~/Documents/research-paper.pdf")
# Tell user: "File uploaded, processing: {result.web_url}"
# In background task / subagent
detail = client.wait_for_reading(result.reading_id, result.resource_type)
content = detail["data"]["content"]
# Analyze, then present results to userWhen the user provides raw text (notes, memos, etc.), save it as a temp file first:
import tempfile
with tempfile.NamedTemporaryFile(mode="w", suffix=".md", delete=False) as f:
f.write(user_provided_text)
temp_path = f.name
result = client.create_reading_from_file(temp_path)
# Tell user: "Saved to your reading library: {result.web_url}"hits = client.search("attention mechanism", top_k=5)
for hit in hits["data"]["items"]:
print(f"[{hit['reading_title']}] {hit['chunk_text'][:100]}...")readings = client.list_readings(page=1, page_size=20)
# Show user titles so they can pick one
# Then get full content:
detail = client.get_reading_detail(reading_id=42, resource_type="link")
content = detail["data"]["content"]| Error | Meaning | What to do |
|---|---|---|
PuzleAPIError(code=401) | JWT token expired | Ask user to get a new token from Puzle |
PuzleAPIError(code=403_003) | Tourist user limit exceeded | Ask user to upgrade their Puzle account |
PuzleAPIError(code=404) | Reading not found | Verify the reading_id is correct |
PuzleAPIError(code=500) during wait | Processing failed | Tell user the content couldn't be processed |
PuzleTimeoutError | Processing took >120s | Suggest trying again later; some large files take longer |
wait_for_reading() when you need the content (Mode B)page_size max is 100 for list_readings© 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 (scripts) in skills/puzle-read of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Puzle Read Skill 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 |
|---|---|---|---|---|---|---|
| Puzle Read Skill this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.8k | Automated safety check: Pass | MIT | |
| MarkitdownImCa0/just-laws | 781 | 14 repos | ~3.2k | Automated safety check: Notes | MIT | |
| Gzh Designisjiamu/gzh-design-skill | 4k | — | ~2.2k | Automated safety check: Pass | AGPL-3.0 | |
| GenOffice Document CLIgenspark-ai/genoffice | 9.2k | — | ~19k | Automated safety check: Pass | Apache-2.0 | |
| Harness Book Best Practicewquguru/harness-books | 3.2k | — | ~4.1k | Automated safety check: Pass | None | |
| Bookforge Korean Ebook PDF Makergongnyang/bookforge | 316 | 1 repos | ~1.7k | Automated safety check: Pass | MIT |
ImCa0/just-laws
Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.
isjiamu/gzh-design-skill
微信公众号文章排版引擎,将 Markdown 转换为可直接粘贴到公众号编辑器的 HTML。主题风格从 references/theme-index.md 注册的自定义主题库中选取,自动章节编号、关键词下划线标记、引言卡片、目录导航、代码块、图片/GIF、作者签名。支持 Markdown / Word(.docx) / PDF / 纯文本输入(非 Markdown…
genspark-ai/genoffice
Creates, converts, reads and edits real pptx, xlsx, docx and PDF files locally through the genoffice command line.
wquguru/harness-books
Best practices for working on the Harness books repo. An agent skill from wquguru/harness-books.
gongnyang/bookforge
Produces book-style Korean ebook PDFs from a topic or finished manuscript, with six design styles, real book parts and quality-check gates before output.
aws-samples/amazon-bedrock-agents-healthcare-lifesciences
Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV.
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
Connect to Puzle Read — an intelligent reading workbench that helps users turn articles and documents into searchable personal knowledge. Puzle Read Skill is an agent skill from LeoYeAI/openclaw-master-skills. Connect to Puzle Read — an intelligent reading workbench that helps users turn articles and documents into searchable personal knowledge.
Puzle Read Skill fits situations like: the user wants to: save; read web articles; add documents to their reading library; look up something from their reading collection.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill puzle-read-skill -a claude-code`. Or copy the skill folder (skills/puzle-read in LeoYeAI/openclaw-master-skills) into .claude/skills/puzle-read-skill in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill puzle-read-skill -a codex`. Or copy the skill folder (skills/puzle-read in LeoYeAI/openclaw-master-skills) into .agents/skills/puzle-read-skill 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 puzle-read-skill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/puzle-read-skill, .gemini/skills/puzle-read-skill, .github/skills/puzle-read-skill and .opencode/skills/puzle-read-skill in your project.
Going by SKILL.md and its folder, Puzle Read Skill needs Python for the scripts in its folder and credentials named PUZLE_TOKEN. Our summary lists: Python 3; A credential in PUZLE_TOKEN. Compatibility (from SKILL.md): requires python3, requests.
SKILL.md names 6 domains. In commands or code: read.puzle.com.cn, article1.com, article2.com, article3.com and arxiv.org; the agent is likely to contact these when it follows the instructions. As links in the text: read-web-test.puzle.com.cn. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Puzle Read Skill 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.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Puzle Read Skill: Markitdown (ImCa0/just-laws, 781 stars), Gzh Design (isjiamu/gzh-design-skill, 4k stars), GenOffice Document CLI (genspark-ai/genoffice, 9.2k stars) and Harness Book Best Practice (wquguru/harness-books, 3.2k 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,161 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.