public-google-drive
О программе
Этот навык позволяет разработчикам создавать и редактировать публичные Google Документы и Таблицы без аутентификации OAuth. Документы автоматически размещаются с доступными для общего доступа ссылками, а регистрация пользователей происходит незаметно при первом использовании. Он идеально подходит для быстрого создания совместных документов или электронных таблиц в рабочих процессах Claude Code.
Быстрая установка
Claude Code
Рекомендуетсяnpx skills add zagmoai/public-google-drive -a claude-code/plugin add https://github.com/zagmoai/public-google-drivegit clone https://github.com/zagmoai/public-google-drive.git ~/.claude/skills/public-google-driveСкопируйте и вставьте эту команду в Claude Code для установки этого навыка
Документация
Public Google Drive — Create and Edit Google Docs/Sheets Hosted on Memyard
Use this skill to create and edit Google Docs and Google Sheets that live in Memyard's workspace. Documents are viewable at https://app.memyard.com/share/<resource_id> (or your configured Memyard base URL). No user OAuth is required. Registration is automatic on first use: when the user first creates or edits a document, register and persist credentials so they never have to fetch a URL or save a key.
Setup / Registration (automatic on first use)
Base URL: https://api.memyard.com — all API paths below are relative to this. Credentials and base URL are persisted in <HOME>/.memyard/agent_config.json, where <HOME> is $HOME on macOS/Linux or %USERPROFILE% on Windows.
Before calling any document endpoint (plan, execute, docs, sheets, etc.), ensure an agent key is available. Do this automatically so the user never has to:
-
Check for existing config If
<HOME>/.memyard/agent_config.jsonexists and containsbase_url,agent_id, andagent_key, use those. SetAuthorization: Bearer <agent_key>for all requests. Skip registration. -
If no config: register and persist
POST <base_url>/v1/drive/registerwith{"name": "My Claude Agent"}. Response:{ "agent_id": "uuid", "agent_key": "myd_...", "message": "Store this key securely. It will not be shown again." }Ensure
<HOME>/.memyard/exists and is only accessible by the owner (on macOS/Linux:chmod 0700; on Windows the default per-user directory permissions are sufficient). Persist to<HOME>/.memyard/agent_config.json(on macOS/Linux:chmod 0600):{ "base_url": "<base_url>", "agent_id": "<from response>", "agent_key": "<from response>" }Use the key for all subsequent requests:
Authorization: Bearer <agent_key>.
Available Operations
Write path: Plan then Execute
- POST /v1/drive/plan — Propose what you want to write: doc or sheet, title, intended operation (create / append / insert), and a content_summary (required for content check). Server returns either approved_plan (with
plan_idandexpires_at) or rejected_plan (withreasonsandadjusted_constraints). No Drive or DB write happens yet. - POST /v1/drive/execute — Send the
plan_idfrom an approved plan plus a payload (title, content, columns, rows as needed). Server performs the write and returns the same shape as create/update (resource_id, view_url, etc.). Each plan is one-time use.
This gives the server a choke point for scope, size, content policy, and rate limiting before any Drive API calls.
- Create Google Doc — via plan (doc_type=document, intended_operation=create) then execute with payload.title and payload.content.
- Create Google Sheet — via plan (doc_type=spreadsheet, intended_operation=create) then execute with payload.title, optional payload.columns and payload.rows.
- Append to Doc — via plan (intended_operation=append, resource_id required) then execute with payload.content.
- Insert into Doc — via plan (intended_operation=insert, resource_id required) then execute with payload.content and optional payload.anchor.
- Append rows to Sheet — via plan (intended_operation=append, resource_id required) then execute with payload.rows.
- Get document metadata — GET /v1/drive/docs/<resource_id> (read-only; no plan needed).
- List my documents — GET /v1/drive/documents (read-only; no plan needed).
API Reference
All endpoints are relative to <base_url>/v1/drive (see Setup above).
All endpoints except register and discover/<id> require:
Authorization: Bearer <agent_key>
Register (no auth)
POST /v1/drive/register
Content-Type: application/json
{"name": "My Agent Name"}
# Response: { "agent_id", "agent_key", "message" }
Plan (propose a write)
POST /v1/drive/plan
Authorization: Bearer <agent_key>
Content-Type: application/json
{
"doc_type": "document",
"title": "My Document",
"intended_operation": "create",
"content_summary": "A short summary of what I will write (e.g. meeting notes)."
}
# For append/insert also send: "resource_id": "<uuid>"
# Optional: "structure" (e.g. columns for a sheet)
Response — approved (200):
{
"approved_plan": {
"plan_id": "<opaque>",
"expires_at": "<ISO>",
"constraints": { "max_chars": 50000 },
"doc_type": "document",
"title": "My Document",
"intended_operation": "create"
}
}
Response — rejected (200):
{
"rejected_plan": {
"reasons": ["Content policy: disallowed term or phrase in summary"],
"adjusted_constraints": { "max_chars": 50000, "max_rows": 1000 }
}
}
Plans expire after a short TTL (e.g. 10 minutes). Use the plan_id exactly once in execute.
Execute (perform the write)
POST /v1/drive/execute
Authorization: Bearer <agent_key>
Content-Type: application/json
{
"plan_id": "<from approved_plan>",
"payload": {
"title": "My Document",
"content": "Initial content here."
}
}
For create document: payload.title, payload.content. For create spreadsheet: payload.title, optional payload.columns, payload.rows. For append doc: payload.content. For insert doc: payload.content, optional payload.anchor. For append sheet: payload.rows (array of rows).
Response (201): Same as create/update endpoints — e.g. { "resource_id", "view_url", "title", ... } or { "resource_id", "char_count", "updated_at" } for append.
Errors: 400 if plan expired or invalid, or payload validation fails; 403 if plan belongs to another agent.
Get document metadata
GET /v1/drive/docs/<resource_id>
Authorization: Bearer <agent_key>
# Response: { "resource_id", "title", "doc_type", "view_url", "web_view_link", "created_at", "updated_at" }
List my documents
GET /v1/drive/documents?limit=50&offset=0
Authorization: Bearer <agent_key>
# Response: { "documents": [ { "id", "title", "doc_type", "web_view_link", "created_at", "updated_at", "view_url" }, ... ] }
Constraints
- Rate limits: Registration 5/hour per IP; document creates 10/hour per agent; writes 60/hour per agent. Returned as
429 Too Many RequestswithRetry-Afterheader. - Size limits: Doc content max 50,000 characters per request; sheet max 1,000 rows per request (tunable via env).
- Permissions: Documents are created with "anyone with link" = reader only. You cannot change sharing via this API.
- Viewing: Share the
view_url(e.g.https://app.memyard.com/share/<resource_id>) for others to view the document in the browser.
Example: Full flow with plan then execute
# Read base_url and agent_key from <HOME>/.memyard/agent_config.json
BASE="<base_url>/v1/drive"
KEY="<agent_key>"
# 2. Propose a write (create doc)
PLAN=$(curl -s -X POST "$BASE/plan" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"doc_type":"document","title":"Hello","intended_operation":"create","content_summary":"Meeting notes"}')
# 3. If approved, execute with payload
if echo "$PLAN" | jq -e '.approved_plan' > /dev/null; then
PLAN_ID=$(echo "$PLAN" | jq -r '.approved_plan.plan_id')
DOC=$(curl -s -X POST "$BASE/execute" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d "{\"plan_id\":\"$PLAN_ID\",\"payload\":{\"title\":\"Hello\",\"content\":\"First paragraph.\"}}")
RESOURCE_ID=$(echo "$DOC" | jq -r '.resource_id')
echo "Created: $RESOURCE_ID"
else
echo "Rejected:"; echo "$PLAN" | jq '.rejected_plan'
fi
# 4. To append: plan with intended_operation=append and resource_id, then execute with payload.content
Public discover metadata (no auth)
To resolve a public document for embedding (e.g. on the discover page):
GET /v1/drive/discover/<resource_id>
# Response: { "resource_id", "title", "doc_type", "web_view_link", "created_at", "updated_at" }
This endpoint does not require authentication.
GitHub репозиторий
Frequently asked questions
What is the public-google-drive skill?
public-google-drive is a Claude Skill by zagmoai. Skills package instructions and resources that Claude loads on demand, so Claude can perform public-google-drive-related tasks without extra prompting.
How do I install public-google-drive?
Use the install commands on this page: add public-google-drive to Claude Code as a plugin, or clone its repository into your skills directory, then restart Claude so it picks up the skill.
What category does public-google-drive belong to?
public-google-drive is in the Meta category, tagged word, automation and design.
Is public-google-drive free to use?
Yes. public-google-drive is listed on AIMCP and free to install. It runs inside Claude, so no separate service account is required to use the skill itself.
Похожие навыки
Этот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.
Этот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.
Этот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.
SGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.
