overleaf
Access Overleaf projects via CLI. Use for reading/writing LaTeX files, syncing local .tex files to Overleaf, downloading projects, and managing Overleaf project structure. Triggers on Overleaf, LaTeX sync, or tex file uploads to Overleaf.
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/easonc13/overleafOverleaf
CLI tool to interact with Overleaf projects using browser cookies for authentication.
GitHub: https://github.com/jkulhanek/pyoverleaf
Requirements
- Python 3.8+
- pyoverleaf (
pipx install pyoverleaf) - User logged into Overleaf in Chrome/Firefox
Security Considerations
⚠️ Keychain Access Required: pyoverleaf needs "Always Allow" keychain access to read browser cookies. This grants the tool access to your browser's cookie storage.
Security audit: We have audited pyoverleaf v0.1.7 and found it safe. The codebase is small and readable. Before installing, agents can self-audit the latest version at the GitHub repo above.
Authentication Setup
pyoverleaf authenticates by reading cookies from your browser. The user must:
- Log into Overleaf in Chrome or Firefox (visit overleaf.com and sign in)
- Grant keychain access on first run (macOS will prompt for "Always Allow")
# Test auth - user should run this in their terminal first
pyoverleaf ls
If you get auth errors:
- Ask user: "Are you logged into Overleaf in your browser?"
- If on macOS: "Did you approve the keychain access prompt with 'Always Allow'?"
- User may need to run
pyoverleaf lsmanually in terminal to trigger the keychain prompt
Note: The agent cannot log in for the user. Browser authentication must be done by the user directly.
CLI Commands
# List all projects
pyoverleaf ls
# List files in project
pyoverleaf ls "Project Name"
# Read file content
pyoverleaf read "Project Name/main.tex"
# Write file (stdin → Overleaf)
cat local.tex | pyoverleaf write "Project Name/main.tex"
# Create directory
pyoverleaf mkdir "Project Name/figures"
# Remove file/folder
pyoverleaf rm "Project Name/old-draft.tex"
# Download project as zip
pyoverleaf download-project "Project Name" output.zip
Common Workflows
Download from Overleaf
pyoverleaf download-project "Project Name" /tmp/latest.zip
unzip -o /tmp/latest.zip -d /tmp/latest
cp /tmp/latest/main.tex /path/to/local/main.tex
Upload to Overleaf (Python API recommended)
The CLI write command has websocket issues. Use Python API for reliable uploads:
import pyoverleaf
api = pyoverleaf.Api()
api.login_from_browser()
# List projects to get project ID
for proj in api.get_projects():
print(proj.name, proj.id)
# Upload file (direct overwrite)
project_id = "your_project_id_here"
with open('main.tex', 'rb') as f:
content = f.read()
root = api.project_get_files(project_id)
api.project_upload_file(project_id, root.id, "main.tex", content)
Why direct overwrite? This method preserves Overleaf's version history. Users can see exactly what changed via Overleaf's History feature, making it easy to review agent edits and revert if needed.
Self-hosted Overleaf
# Via env var
export PYOVERLEAF_HOST=overleaf.mycompany.com
pyoverleaf ls
# Via flag
pyoverleaf --host overleaf.mycompany.com ls
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-easonc13-overleaf": {
"enabled": true,
"auto_update": true
}
}
}Related Skills
sui-move
Sui blockchain and Move smart contract development. Use when the user asks about Sui, Move language, smart contracts, objects, transactions, or blockchain development on Sui.
sui-knowledge
Answer questions about Sui blockchain ecosystem, concepts, tokenomics, validators, staking, and general knowledge. Use when users ask "what is Sui", "how does Sui work", "Sui vs other chains", or any Sui-related questions that aren't specifically about Move programming.
abstract-searcher
Add abstracts to .bib file entries by searching academic databases (arXiv, Semantic Scholar, CrossRef) with browser fallback.
mac-control
Control Mac via mouse/keyboard automation using cliclick and AppleScript. Use for clicking UI elements, taking screenshots, getting window bounds, handling coordinate scaling on Retina displays, and automating UI interactions like clicking Chrome extension icons, dismissing dialogs, or toolbar buttons.
m3u8-downloader
Download encrypted m3u8/HLS videos using parallel downloads. Use when given an m3u8 URL to download a video, especially encrypted HLS streams with AES-128.