Releases: juliandickie/scribe-plugin
Scribe v1.0.0 - Full Google Workspace Suite
The biggest release since the initial plugin. Scribe is now a complete Google Workspace orchestration layer with 10 service skills, 14 named workflow commands, and a refactored orchestration router.
What's new
14 named workflow commands for cross-service operations:
/scribe:daily-briefing- inbox + calendar morning sweep/scribe:inbox-triage- categorise, label, draft replies/scribe:support-scan- support inbox to tracking sheet + drafts/scribe:meeting-prep- prep doc with related emails/scribe:thread-to-doc- email thread to Doc + attachments to folder/scribe:client-digest- full activity digest for a client/scribe:weekly-wrap- weekly summary across services/scribe:follow-up-tracker- find unanswered sent emails/scribe:contact-onboard- bootstrap folder + Contact + Sheet + welcome/scribe:doc-chase- nudge inactive doc reviewers/scribe:attach-vault- organise email attachments into Drive/scribe:event-recap- post-meeting notes doc + follow-up/scribe:smart-reply- contextual draft from prior history/scribe:educator-setup- bootstrap educator's Drive structure
10 service skills - one per Google service - now auto-activate to give Claude per-service MCP tool API depth - gmail, calendar, docs, drive, sheets, slides, contacts, tasks, forms, chat.
Three-layer skill architecture - orchestration router + service skills + workflow skills - keeps each skill focused under 500 lines and ensures Claude loads the right context per request.
Cross-plugin composition - workflow skills include "if ClickUp/Slack/Spiffy/AC Builder plugin is installed..." prose hints so Claude chains across plugins naturally without code coupling.
Multi-account orchestration - explicit multi-account intent ("check both my inboxes") triggers auto-loop across all authenticated accounts. Ambiguous intent prompts once.
make check-upstream maintenance ritual - new Makefile target hits PyPI's JSON API monthly to flag drift against the pinned workspace-mcp version.
Pre-release accuracy work
This release went through a full pre-tag code review against the actual workspace-mcp@1.20.4 tool surface. Every service skill's MCP tool reference was verified against the installed package source, not approximated. Caught and fixed - non-existent list_authenticated_accounts references, invented Sheets/Slides/Contacts/Tasks/Forms/Chat tool names, manage_event action="read" (replaced with get_events(event_id=...)), and other accuracy issues. The release ships with correct upstream tool names throughout.
Upgrading from 0.x
The install command is the same:
/plugin marketplace add juliandickie/scribe-plugin
/plugin install scribe
After upgrading, run /scribe:auth-status to confirm existing tokens still work. Existing tokens cover the broader scope set the v1.0 tool list requests, but if you see "Scope not authorized" errors on a specific service, re-run /scribe:auth-add EMAIL for that account.
Documentation
- Workflows reference - docs/workflows.md
- Services reference - docs/services.md
- Multi-org setup - docs/multi-org-setup.md
- Setup walkthrough -
/scribe:auth-initafter install
Credits
Wraps workspace-mcp@1.20.4 by @taylorwilsdon. The breadth of this release is possible because of his work on the underlying MCP server.
Scribe v0.3.1
Full Changelog: v0.3.0...v0.3.1
Scribe v0.3.0 - PyPI install path
Scribe v0.3.0
Minor-version release marking the shift from git-URL fork dependency to PyPI-published upstream. No user-facing capability changes.
What changed
The plugin's manifest used to install workspace-mcp from git+https://github.com/juliandickie/google_workspace_mcp.git@fork-extension. As of v0.3.0 it installs from PyPI -
- "args": [
- "--from",
- "git+https://github.com/juliandickie/google_workspace_mcp.git@fork-extension",
- "workspace-mcp",
+ "args": [
+ "workspace-mcp@1.20.4",
...
]This is possible because our markdown writer contribution (PR #727) and the QoL improvements that followed (PR #742) are now both shipped in upstream taylorwilsdon/google_workspace_mcp v1.20.4 on PyPI.
Why this matters
- Faster cold start - uvx pulls from PyPI cache instead of cloning a git branch
- Pinned to a known-good version - reproducible installs across machines and time
- No more fork dependency - users no longer need to trust a branch on a downstream fork; they're consuming the same upstream package the maintainer publishes
- Free upstream improvements - when taylor cuts v1.20.5, v1.21.0, etc., we test and bump the pin in plugin.json
Items addressed in upstream
The original deferred-items list from v0.2.1 has now been resolved -
| Item | Status |
|---|---|
| Auto-retry on transient HTTP 500s | ✅ in v1.20.3+ via PR #742 |
import_to_google_doc description rewording |
✅ in v1.20.3+ via PR #742 |
list_drive_items surfaces driveId |
✅ in v1.20.3+ via PR #742 |
| Configurable scope subset per install | ⏳ design discussion at upstream issue #771 |
Migration
If you have v0.2.x installed -
/plugin update scribe
Or full reinstall in fresh sessions -
/plugin uninstall scribe
/plugin install scribe
Existing OAuth tokens at ~/.workspace-mcp/credentials/*.json continue to work. The upstream tool surface is the post-PR-727 shape (the consolidated manage_doc_tab action tool with populate_from_markdown, create, rename, delete actions) which the v0.2.2 skills already match.
What v0.3.0 is NOT
This is not a feature release. The plugin's user-facing surface (skills, slash commands, install flow, multi-org docs) is identical to v0.2.2. The change is entirely behind-the-scenes plumbing.
Acknowledgements
Major thanks to @taylorwilsdon for the responsive review of PR #727, the elegant manage_doc_tab consolidation refactor during merge, and the same-week turnaround on the four QoL improvements via PR #742. This release exists because upstream is healthy and active.
License
MIT - see LICENSE.
Scribe v0.2.2
Full Changelog: v0.2.1...v0.2.2
Scribe v0.2.1 - feedback-driven fixes
Scribe v0.2.1
Patch release driven by detailed user feedback after a real cross-org bulk-upload session. No new features - all changes target onboarding friction surfaced in the feedback document (paraphrased here).
What was broken before v0.2.1
If you followed the README's getting-started flow on a fresh machine and tried to push markdown from a project repo, you hit at least three friction walls in order -
/scribe:auth-addfailed with "OAuth client credentials not found" pointing at a uv cache path you'd never created/scribe:auth-inittold you to save credentials at~/.workspace-mcp/oauth_client.jsonbut the server ignored that path unless you also setGOOGLE_CLIENT_SECRET_PATHenv var manuallyimport_to_google_docrejected your project-repo file with a sandbox error that wasn't documented anywhere user-facing
What's fixed
Manifest (the leverage point)
plugin.json's mcpServers.scribe.env now sets -
GOOGLE_CLIENT_SECRET_PATHto${HOME}/.workspace-mcp/oauth_client.json(matches what/scribe:auth-inittells you to do)WORKSPACE_MCP_CREDENTIALS_DIRto${HOME}/.workspace-mcp/credentialsALLOWED_FILE_DIRSto${HOME}/.workspace-mcp/attachments
The plugin's friendly outer surface now agrees with what the underlying MCP server actually does.
Skills
/scribe:auth-initrewritten with explicit canonical-path instruction, multi-org callout, and Troubleshooting section/scribe:auth-addnow checks for the OAuth client file BEFORE attempting the flow and prints a clear "run auth-init first" message if missing/scribe:pushdocuments theALLOWED_FILE_DIRSsandbox up front, walks Claude through auto-copying outside-sandbox files into a session subdirectory, warns that symlinks don't bypass the check, and recommendsfile_pathovercontentfor batch operations
Docs
- New File-path sandbox section in README explaining the directory restriction and how to extend it
- Expanded Multi-account support split into within-org (works out of the box) and cross-org (needs the symlink-swap pattern below)
- New
docs/multi-org-setup.mdwalkthrough for the cross-Workspace case - New
scripts/switch.shready-to-install helper for flipping between OAuth clients across orgs - Four new Troubleshooting entries (sandbox error, transient 500s, slash-command-not-found, OAuth client cache-path error)
Upgrading
If you already have v0.2.0 installed -
/plugin update scribe
Or full reinstall -
/plugin uninstall scribe
/plugin install scribe
/scribe:auth-status
Existing OAuth tokens at ~/.workspace-mcp/credentials/*.json continue to work - this release only changes the plugin's wiring, not the token format.
Items deferred to the upstream fork
These were flagged in the feedback but require changes in juliandickie/google_workspace_mcp rather than this plugin -
- Auto-retry on transient HTTP 500/502/503/504 from Drive API
import_to_google_doctool description rewording to preferfile_pathovercontentlist_drive_itemssurfacingdriveIdfor Shared Drive context- Configurable scope subset (drive-only vs drive+gmail+calendar) per install
These will be filed as upstream issues. If the fork's PR to taylorwilsdon's google_workspace_mcp merges, fixes flow back to all Scribe users automatically.
License
MIT - see LICENSE.
Scribe v0.2.0 - skills-first architecture
Scribe v0.2.0
Breaking change release. Migrates the plugin from the legacy commands/ directory to the modern skills/ pattern per Anthropic's 2026 plugin docs.
What changed
-
Slash commands are now namespaced. Old -
/scribe-auth-init. New -/scribe:auth-init. Same for all five commands (auth-init,auth-add,auth-status,push,client-resolve). -
Install-time warning gone. No more "it uses the legacy commands/ format" message.
-
Skills-first layout. All user-invoked slash commands now live in
skills/<name>/SKILL.md. Three of the five (auth-init,auth-add,auth-status,client-resolve) usedisable-model-invocation: truein frontmatter so they're purely user-triggered.pushremains both user-invokable (via/scribe:push) and auto-activatable (when the user says things like "push this markdown to Drive"). -
skills/workspace/SKILL.md(renamed fromskills/scribe) still auto-activates when Claude encounters Google-Workspace context. The rename avoids the ugly/scribe:scribeinvocation name.
Migration path for users
Replace any saved commands or muscle memory -
| Old | New |
|---|---|
/scribe-auth-init |
/scribe:auth-init |
/scribe-auth-add |
/scribe:auth-add |
/scribe-auth-status |
/scribe:auth-status |
/scribe-push |
/scribe:push |
/scribe-client-resolve |
/scribe:client-resolve |
The /scribe-* (hyphen) versions stop working with v0.2.0+. If you're pinned to v0.1.0 you can keep using the old syntax.
Under the hood
Plugin structure now -
scribe-plugin/
├── .claude-plugin/plugin.json
├── skills/
│ ├── auth-add/SKILL.md
│ ├── auth-init/SKILL.md
│ ├── auth-status/SKILL.md
│ ├── client-resolve/SKILL.md
│ ├── push/SKILL.md
│ └── workspace/SKILL.md
├── hooks/post-install.sh (optional manual installer)
├── docs/images/ (3 feature images)
├── LICENSE
└── README.md
commands/ directory is gone. No functional regressions - every capability from v0.1.0 is preserved.
License
MIT - see LICENSE.
Scribe v0.1.0 - initial release
Scribe v0.1.0
Initial public release of Scribe - a Claude Code plugin for Google Workspace automation.
What's in the box
-
gworkspace-plugin → scribe-plugin - the plugin manifest with inline
mcpServersdeclaration. Claude Code auto-installs the MCP server viauvxon first use, no separate install step needed. -
5 slash commands for common operations -
/scribe-auth-init,/scribe-auth-add,/scribe-auth-status,/scribe-push,/scribe-client-resolve. -
1 skill (
skills/scribe/SKILL.md) that teaches Claude when and how to invoke the MCP tools. -
Optional manual install script at
hooks/post-install.shfor eagerly pre-warming theworkspace-mcpinstall instead of waiting for first use.
Installation
In a Claude Code session:
/plugin marketplace add juliandickie/scribe-plugin
/plugin install scribe
/scribe-auth-init
See the README for Google Cloud Project setup walkthrough (5 minutes, one time).
What it wraps
Scribe wraps the workspace-mcp server - a fork of taylorwilsdon/google_workspace_mcp extended with a high-fidelity update_tab_from_markdown writer that converts CommonMark+GFM markdown into Google Docs API batchUpdate requests with full formatting fidelity.
Supports headings H1-H6, paragraphs, inline bold and italic and code and links, ordered and unordered lists, fenced code blocks, blockquotes, horizontal rules. Tab-aware for Docs with multi-tab layouts.
Production validation
-
24 unit tests for the markdown writer passing
-
2 integration tests against a real Google Doc passing
-
Real-world acceptance - an agency populated 12 condition documents × 8 content tabs each (96 tabs) for a clinic client in under 4 minutes end-to-end. The equivalent browser-paste workflow used to take close to an hour.
Known limitations
-
Images, tables, footnotes, smart chips, and equations are not yet supported by the markdown writer (tables fall through to plain-text rendering).
-
First-use install takes a few seconds while
uvxdownloads the MCP server from the fork. Subsequent invocations are instant. -
API quota is Google's default 60 requests per minute per user. Heavy batch operations may need a quota increase.
License
MIT - see LICENSE.