Skip to content

Releases: juliandickie/scribe-plugin

Scribe v1.3.2

Choose a tag to compare

@juliandickie juliandickie released this 01 Oct 04:11
18b30b2

The tab populate helper now runs without a permission prompt

  • The rule. The docs and push skills pre-approve the helper through allowed-tools: Bash(${CLAUDE_PLUGIN_ROOT}/scripts/doc-tab-populate *). Pushing a markdown file into a Google Doc tab no longer stops to ask for permission while either skill is active.
  • Nothing else changes. Per the Claude Code skills docs, allowed-tools only pre-approves. Every other tool, including all the Google Workspace tools, stays callable with its usual permission behaviour, and your own deny and ask rules still win.
  • Unquoted commands. The helper command in the skills, docs/services.md and README is now written unquoted, so it matches the rule exactly.
  • Developer docs. CLAUDE.md "Current state" is corrected, and the allowed-tools convention is recorded.

The helper itself is unchanged from 1.3.1. See the v1.3.1 notes for what it does.

Full detail in #4.

Scribe v1.3.1

Choose a tag to compare

@juliandickie juliandickie released this 30 Sep 23:26
54e070f

Fill Google Doc tabs straight from files

New scripts/doc-tab-populate. It fills an existing Doc tab from a markdown file using the MCP server's own converter, then reads the tab back and checks it.

  • No text through the session. The markdown never passes through Claude's context, so there is no cap on how many Docs a sync can cover.
  • One command. It runs through uvx on the pinned workspace-mcp, so there is nothing extra to install.
  • Same result as the tool. Structurally identical to manage_doc_tab populate_from_markdown, verified live on 1.26.1.
  • Read-back check. Confirms every text block landed, in order. Warns on flattened tables, flattened nested lists and emoji.
  • Refuses unsafe writes. Files with no text (which would blank the tab), files with emoji, and a non-pinned server.
  • Other safety. Writes carry the Doc's revision id. Secret locations are never read. --sandbox opt-in applies ALLOWED_FILE_DIRS.
  • Appending after text. When the tab's last paragraph has text, the helper inserts a paragraph break first. The tool glues the first new paragraph onto it.

The docs, push and workspace skills now use it for file-sourced tabs above about 8 KB or any multi-Doc sync. Its check is the standard "verify the push" step.

New gotchas in the docs skill

All confirmed live on workspace-mcp 1.26.1, and all return success:

  • Nested lists flatten.
  • Indented code blocks, raw HTML blocks and second paragraphs inside a list item are dropped.
  • One emoji makes the converter's offsets drift. An emoji in an H1 turned every later paragraph into an H1.
  • Appending glues onto a non-empty last paragraph.

Other skill fixes

  • A tab's URL is the Doc URL plus ?tab=<tab id>.
  • create_doc and import_to_google_doc give a single "Tab 1".
  • Which call to use for a tab list only.
  • Shared Drive search needs no corpora. An empty result is the name terms.
  • manage_sheet_tab is documented.
  • Parameter corrections to the live 1.26.1 schema for create_doc, create_spreadsheet, create_presentation, import_to_google_doc and create_drive_folder.

Maintenance

  • Both manifests at 1.3.1.
  • New make test target (54 offline tests).
  • make validate checks the helper and now fails properly.
  • New pin-bump checklist step.
  • Retirement plan for when upstream ships a file parameter on manage_doc_tab.

Full detail in #3.

Scribe v1.3.0

Choose a tag to compare

@juliandickie juliandickie released this 30 Sep 23:26
6d37539

Tagged retroactively on 1 October 2026. This commit merged to main on 14 September 2026 and has been what marketplace installers receive since then, but it was never tagged.

Upstream pin 1.25.2 to 1.26.1

  • Pins workspace-mcp@1.26.1 (released 2026-09-13).
  • Tool surface verified by live MCP handshake of both versions: 122 to 123 tools. One was added (manage_sheet_tab), none were removed, and all 11 parameter changes are additive. MINOR, not MAJOR.

Fixes that reach Scribe users

  • inspect_doc_structure returned HTTP 400 on every call made with includeTabsContent. It now works.
  • run_script_function passed a project ID where the API wants a deployment ID. Fixed.
  • Corrupt .docx, .xlsx and .pptx files now report as damaged.
  • Comment tools return real multi-line output.
  • Startup errors log at ERROR level.

Unchanged

GFM tables still flatten on populate_from_markdown, because upstream PR #929 is still open. The verification and repair guidance in the docs skill stays load-bearing.

Note - marketplace.json still said 1.2.0 in this release. v1.3.1 aligns both manifests.

Scribe v1.2.0

Choose a tag to compare

@juliandickie juliandickie released this 28 Aug 01:40

Upstream pin bump release. The wrapped MCP server moves from workspace-mcp 1.21.2 to 1.25.2 (ten upstream releases), and the skill documentation was re-verified against a live MCP handshake of the new version.

Upstream pin - workspace-mcp 1.25.2

The tool surface is stable - zero tools added or removed (122 tools), 22 tools gained additive parameters, and one schema change. Highlights most relevant to Scribe workflows -

  • Gmail reply threading fixed end to end. Drafted and sent replies attach to the original thread, target the latest non-draft message, and send_gmail_message gains reply_all, quote_original, and forward_message_id (forwarding with attachments).

  • read_sheet_values no longer silently truncates output at 50 rows. Open-ended ranges clamp at 1000 rows.

  • search_drive_files excludes trashed files by default, matching the Drive web UI (include_trashed opts back in).

  • update_drive_file gains content updates with replace/append/prepend modes, keeping non-Google formats intact.

  • Docs tables gain header-row pinning (create_table_with_data header_rows, pin_table_header_rows batch operation) and per-edge paragraph borders.

  • Slides speaker notes are readable and editable (get_presentation include_speaker_notes).

  • Calendar manage_event supports Zoom/Webex/Teams conferencing and per-boundary timezones; get_events gains single_events for recurring series.

  • Multiple CVE-driven dependency raises (cryptography, starlette, pypdf, PyJWT, mcp).

One breaking schema change - set_publish_settings (Forms) replaced publish_as_template/require_authentication with is_published/is_accepting_responses. The forms skill documents the new fields.

Not included - native markdown tables

The GFM table fix for populate_from_markdown (upstream PR 929) is still unmerged upstream, so tables still flatten to pipe text in 1.25.2. The mandatory post-populate table verification and repair guidance in the docs, push, and workspace skills remains in force.

Verification

  • Live MCP handshake of 1.21.2 and 1.25.2 diffed name-by-name and parameter-by-parameter.
  • All 188 documented tool references checked against the live 1.25.2 schema.
  • Live authenticated list_calendars call on 1.25.2 confirmed the existing token cache works unchanged - no re-auth needed after updating.
  • All ten service skills stamped last-validated: 2026-08-28.

Scribe v1.1.1

Choose a tag to compare

@juliandickie juliandickie released this 16 Jul 12:11

Scribe v1.1.1

Skill-layer hardening for the markdown table defect on the populate_from_markdown path, plus contributor doc updates. The workspace-mcp pin is unchanged at 1.21.2.

Why

GFM tables in markdown pushed through manage_doc_tab populate_from_markdown flatten to a single paragraph of raw pipe text while the tool reports success. The root cause is in the upstream converter (tables are not enabled in its parser) and a fix is submitted upstream as taylorwilsdon/google_workspace_mcp#929. Until that ships in a PyPI release and the pin bumps, the failure is silent, so the skills now make verification mandatory.

Changes

  • docs skill - the Gotchas now carry a mandatory post-populate table verification (detailed inspect_doc_structure, table count matches source, zero pipe-text paragraphs) and the proven repair pass (modify_doc_text wipe plus create_table_with_data per table, bottom-up). Also corrects an inverted claim - import_to_google_doc renders tables natively and always has.
  • push skill - new mandatory "Table integrity check" section; a push is not complete until the check passes.
  • workspace skill - router hint updated to point at the verification pass.
  • CLAUDE.md - contribution pattern rewritten around the standing fork (sync to mirror upstream, feature branch off upstream main, single focused PR); PR #929 recorded in the contribution history.

The skill wording is verification-driven rather than version-driven, so it remains correct after the upstream fix lands - the check simply passes on first inspect. A follow-up release will bump the workspace-mcp pin once the table fix ships upstream, at which point populate_from_markdown renders native Docs tables directly.

Scribe v1.1.0

Choose a tag to compare

@juliandickie juliandickie released this 13 Jun 14:05

Documentation accuracy, a new orientation command, and an upstream refresh. No breaking changes - update via your plugin marketplace and restart.

New

  • /scribe:start - orientation command. Checks which Google accounts are authenticated and lists every workflow Scribe offers, grouped by use case. Run it first, or any time.

Changed

  • Pinned workspace-mcp updated 1.20.4 to 1.21.2. Additive upstream release - gmail inline-image attachments via content_id, Office-to-Google import, contacts birthday fields, and a socket-timeout hang fix. No breaking changes, scope changes, or env-var renames.

  • Gmail skill now documents the real send and draft surface - the four attachment modes (url / path / content / content_id), Send As (from_email / from_name), include_signature, body_format for HTML, and reply threading.

  • New cross-service "File and attachment handling" map in the orchestration router - the file-reference modes and the per-tool parameter names (path/url vs file_path/file_url vs fileUrl).

  • Documented the Google-Doc rendering gotchas - GFM tables render as raw pipe text, and single-newline lines collapse into one paragraph - with the correct list and paragraph patterns.

  • auth-init - clearer OAuth callback explanation and a proactive Windows path note.

Notes

  • Windows ${HOME} path behaviour is documented but not yet verified on a live Windows machine.

Scribe v1.0.0 - Full Google Workspace Suite

Choose a tag to compare

@juliandickie juliandickie released this 15 May 03:01

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

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

Choose a tag to compare

@juliandickie juliandickie released this 13 May 12:30

Full Changelog: v0.3.0...v0.3.1

Scribe v0.3.0 - PyPI install path

Choose a tag to compare

@juliandickie juliandickie released this 07 May 14:58

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

Choose a tag to compare

@juliandickie juliandickie released this 27 Apr 01:08

Full Changelog: v0.2.1...v0.2.2