feat: add Google Workspace skill#589
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdds a new "Google Workspace — Tool Router" skill with per-service MCP references for 12 services, three evaluation specs, a docs-layout workflow, server/options reference, and CLI/MCP routing rules; plus Docs API index normalization helpers, related docs_tools validation updates, and tests exercising start_index=0 normalization. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant SkillRouter as "Skill Router\n(Google Workspace SKILL)"
participant MCPServer as "Workspace MCP\n(stream or stdio)"
participant CLI as "uvx CLI\n(workspace-mcp --cli)"
participant OAuth as "OAuth (Google)\nClient Credentials"
participant GoogleAPIs as "Google APIs\n(Gmail/Drive/Sheets/...)"
User->>SkillRouter: Request tool (base name + JSON args + user_email)
alt MCP available
SkillRouter->>MCPServer: Route tool call (tool + args + user_email)
MCPServer->>OAuth: Ensure auth (start_google_auth if needed)
OAuth-->>MCPServer: OAuth tokens
MCPServer->>GoogleAPIs: Call service API
GoogleAPIs-->>MCPServer: Response / artifacts
MCPServer-->>SkillRouter: Tool result
else MCP unavailable / CLI fallback
SkillRouter->>CLI: Invoke CLI tool (base + JSON args)
CLI->>OAuth: Start OAuth on first use (interactive)
OAuth-->>CLI: OAuth tokens
CLI->>GoogleAPIs: Call service API
GoogleAPIs-->>CLI: Response / artifacts
CLI-->>SkillRouter: Tool result
end
SkillRouter-->>User: Return aggregated result / messages
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
SKILL.md: - Fix "every tool requires user_google_email" (generate_trigger_code doesn't) - Add start_google_auth to routing tables - Add missing reference file links for Forms, Tasks, Contacts, Chat, Apps Script, Search - Move import_to_google_doc to Drive section (per tool_tiers.yaml) - Remove non-standard metadata frontmatter field - Rewrite setup: skill guides credential config into ~/.claude/settings.local.json - Add PYTHONIOENCODING=utf-8 for Windows - Add Windows cmd.exe quoting note for CLI mode plugin.json: - Add author field Reference files: - apps-script.md: fix header re generate_trigger_code - docs.md: add user_google_email to all 12 tables that were missing it - sheets.md: add missing include_notes parameter to read_sheet_values - contacts.md, forms.md, gmail.md, drive.md, tasks.md: fix page_token type to any Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
707821a to
f26e3bc
Compare
f26e3bc to
9003a54
Compare
There was a problem hiding this comment.
Actionable comments posted: 8
🧹 Nitpick comments (3)
skills/managing-google-workspace/evaluations/share_file.json (1)
5-8: Consider adding disambiguation behavior for duplicate file matches.If multiple files match “Q1 budget,” this eval can become nondeterministic. Consider expecting either a follow-up clarification or a deterministic tie-break rule (e.g., most recently modified spreadsheet).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills/managing-google-workspace/evaluations/share_file.json` around lines 5 - 8, The eval currently calls search_drive_files, manage_drive_access, and get_drive_shareable_link but doesn't handle duplicate matches; update the evaluation flow in share_file.json so that when search_drive_files returns multiple results it either (a) emits a follow-up clarification asking which file the user means, or (b) applies a deterministic tie-break (e.g., prefer spreadsheets and then choose the most recently modified file) before calling manage_drive_access and get_drive_shareable_link; reference the search_drive_files result handling logic and implement the disambiguation/path selection there so downstream calls use a single unambiguous file.skills/managing-google-workspace/evaluations/search_email.json (1)
5-5: Make the date-filter expectation explicit for deterministic evals.“a date filter” is broad; consider naming a concrete Gmail query form (e.g.,
newer_than:7d) so scorer/evaluator behavior is unambiguous.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills/managing-google-workspace/evaluations/search_email.json` at line 5, The description string "Calls search_gmail_messages with a query combining from:alice and a date filter" is ambiguous; update that entry in search_email.json to specify an explicit Gmail date filter (for example: "Calls search_gmail_messages with a query combining from:alice and newer_than:7d") so evaluators and scorers have a deterministic expectation; ensure the new string replaces the vague "a date filter" phrase and uses the chosen concrete query form (e.g., newer_than:7d or after:YYYY/MM/DD).skills/managing-google-workspace/references/search.md (1)
17-24: Use concrete types instead ofanyfor typed parameters.Lines 17-24 can be more precise (e.g.,
search_type: string,site_search: string,site_search_filter: string,date_restrict: string,file_type: string,language: string,country: string,sites: array[string]) to match tool signatures and reduce invocation errors.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills/managing-google-workspace/references/search.md` around lines 17 - 24, Replace the loose `any` types in the search parameter docs with concrete types matching the tool signature: change `search_type`, `site_search`, `site_search_filter`, `date_restrict`, `file_type`, `language`, and `country` to `string`, and change `sites` to an array of strings (e.g., `string[]` or "array[string]" notation used elsewhere); update the table entries for `search_type`, `site_search`, `site_search_filter`, `date_restrict`, `file_type`, `language`, `country`, and `sites` accordingly so callers and type checkers get exact expected types.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@skills/managing-google-workspace/references/gmail.md`:
- Line 114: The docs currently list the parameter quote_original in the Gmail
tool schema as a stable option; update the documentation for the
symbol/parameter quote_original to indicate it's unreleased/preview (or remove
it) so consumers won't make invalid calls against the published plugin. Edit the
entry that defines quote_original to add a clear "unreleased" or "preview" note
(or hide it until the tool schema is released) and ensure any examples or tables
referencing quote_original are updated to match.
- Line 200: Remove the trailing space inside the inline code span for the reply
subject so it uses `Re:` instead of `` `Re: ` ``; update the sentence that
references `thread_id`, `in_reply_to`, `references` to keep the same meaning but
change the code span to `Re:` (no internal spaces) so it satisfies markdownlint
MD038.
In `@skills/managing-google-workspace/references/search.md`:
- Line 7: Change the heading level for "search_custom" from H3 to H2 to fix the
skipped heading level; locate the line containing "### search_custom" and
replace it with "## search_custom" so the document's heading hierarchy is
consistent.
In `@skills/managing-google-workspace/references/server-options.md`:
- Around line 40-47: The fenced code block containing multiple JSON command
objects should declare its language to satisfy markdown linting—change the
opening fence from ``` to ```json in the block that includes the JSON-like
commands (e.g., the lines starting with {"command": "uvx", "args":
["workspace-mcp"], ...}) so the block is treated and highlighted as JSON.
In `@skills/managing-google-workspace/references/sheets.md`:
- Line 46: The docs list the parameter include_notes which is not yet released
and can break users; either remove the include_notes row from the sheets.md
parameter table or mark it clearly as "requires unreleased build" (e.g., add a
short footnote next to include_notes and a header comment explaining the plugin
manifest version gating). Update the sheets.md entry for include_notes and any
related manifest/version note so the documentation matches the released plugin
manifest.
- Line 56: The parameter description for "values" is a fragment; update the note
for the "values" parameter to be a complete sentence that clarifies accepted
formats (e.g., "Can be provided as a JSON string or as a list") and keep the
reference to `clear_values=true` intact; modify the table cell that currently
reads "Can be JSON string or list" to the suggested full phrase and ensure
punctuation and spacing match the surrounding table row for "values".
In `@skills/managing-google-workspace/SKILL.md`:
- Line 248: The SKILL.md parameter docs for start_google_auth are reversed:
update the text so it matches the actual function signature (start_google_auth)
— document user_google_email as a required string parameter and service_name as
optional with default "Google Workspace" (string); keep the legacy OAuth 2.0
note but ensure the examples and any call-site guidance reflect that
user_google_email is required and service_name is optional.
- Line 56: Update the SKILL.md line that claims "Credentials are cached in
`store_creds/`" to accurately reflect the implementation in
auth/credential_store.py: list the actual priority used to locate credential
caches (1) the WORKSPACE_MCP_CREDENTIALS_DIR or GOOGLE_MCP_CREDENTIALS_DIR env
vars, (2) ~/.claude/.credentials if ~/.claude exists, and (3) .credentials in
the local directory as fallback; remove any mention of a non-existent
store_creds/ directory so the docs match the code paths in
auth/credential_store.py.
---
Nitpick comments:
In `@skills/managing-google-workspace/evaluations/search_email.json`:
- Line 5: The description string "Calls search_gmail_messages with a query
combining from:alice and a date filter" is ambiguous; update that entry in
search_email.json to specify an explicit Gmail date filter (for example: "Calls
search_gmail_messages with a query combining from:alice and newer_than:7d") so
evaluators and scorers have a deterministic expectation; ensure the new string
replaces the vague "a date filter" phrase and uses the chosen concrete query
form (e.g., newer_than:7d or after:YYYY/MM/DD).
In `@skills/managing-google-workspace/evaluations/share_file.json`:
- Around line 5-8: The eval currently calls search_drive_files,
manage_drive_access, and get_drive_shareable_link but doesn't handle duplicate
matches; update the evaluation flow in share_file.json so that when
search_drive_files returns multiple results it either (a) emits a follow-up
clarification asking which file the user means, or (b) applies a deterministic
tie-break (e.g., prefer spreadsheets and then choose the most recently modified
file) before calling manage_drive_access and get_drive_shareable_link; reference
the search_drive_files result handling logic and implement the
disambiguation/path selection there so downstream calls use a single unambiguous
file.
In `@skills/managing-google-workspace/references/search.md`:
- Around line 17-24: Replace the loose `any` types in the search parameter docs
with concrete types matching the tool signature: change `search_type`,
`site_search`, `site_search_filter`, `date_restrict`, `file_type`, `language`,
and `country` to `string`, and change `sites` to an array of strings (e.g.,
`string[]` or "array[string]" notation used elsewhere); update the table entries
for `search_type`, `site_search`, `site_search_filter`, `date_restrict`,
`file_type`, `language`, `country`, and `sites` accordingly so callers and type
checkers get exact expected types.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: a0d278ce-260e-4852-a0a6-781f68f11770
📒 Files selected for processing (19)
.claude-plugin/marketplace.json.claude-plugin/plugin.jsonskills/managing-google-workspace/SKILL.mdskills/managing-google-workspace/evaluations/edit_doc.jsonskills/managing-google-workspace/evaluations/search_email.jsonskills/managing-google-workspace/evaluations/share_file.jsonskills/managing-google-workspace/references/apps-script.mdskills/managing-google-workspace/references/calendar.mdskills/managing-google-workspace/references/chat.mdskills/managing-google-workspace/references/contacts.mdskills/managing-google-workspace/references/docs.mdskills/managing-google-workspace/references/drive.mdskills/managing-google-workspace/references/forms.mdskills/managing-google-workspace/references/gmail.mdskills/managing-google-workspace/references/search.mdskills/managing-google-workspace/references/server-options.mdskills/managing-google-workspace/references/sheets.mdskills/managing-google-workspace/references/slides.mdskills/managing-google-workspace/references/tasks.md
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
skills/managing-google-workspace/references/search.md (1)
7-7:⚠️ Potential issue | 🟡 MinorUse an H2 heading at Line 7 to avoid heading-level skip.
### search_customshould be## search_customto keep heading hierarchy valid (MD001).🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills/managing-google-workspace/references/search.md` at line 7, The heading "search_custom" is using H3 (###) which causes a heading-level skip; change the Markdown heading for "search_custom" from H3 to H2 (replace "### search_custom" with "## search_custom") so the document maintains correct heading hierarchy and satisfies MD001.
🧹 Nitpick comments (1)
skills/managing-google-workspace/references/calendar.md (1)
1-88: Excellent documentation—clear, accurate, and well-structured.The reference documentation accurately reflects the implementation based on the provided code snippets. Parameter tables are complete with correct types, defaults (e.g.,
calendar_id: "primary",max_results: 25,detailed: false), and helpful usage notes. The Tips section provides valuable guidance on Calendar IDs, RFC 3339 time formatting, all-day events, and attendee formats.The structure is consistent across all four tool sections, making it easy to scan and reference during development.
Optional: Address markdownlint warnings for strict compliance.
The linter flagged MD058 warnings about blank lines around tables on lines 67 and 87. After inspection, these appear to be false positives—all tables already have proper blank lines before and after them. However, if your team enforces strict linter compliance, you may want to investigate the specific expectations of
markdownlint-cli2 0.21.0for this rule.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills/managing-google-workspace/references/calendar.md` around lines 1 - 88, Linter MD058 flagged "blank lines around tables" in this markdown; to fix, ensure each table (e.g., the tables under the "get_events", "manage_event", and "query_freebusy" sections and the "Calendars & Events" header) has a single blank line immediately before and after the pipe-table block so markdownlint-cli2 recognizes the spacing; update the affected table blocks to add or normalize those blank lines, then re-run markdownlint-cli2 to confirm, or alternatively add an MD058 rule exception in the repo's markdownlint configuration if these are false positives.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@skills/managing-google-workspace/references/sheets.md`:
- Line 155: Update the gradient rules documentation for `gradient_points` to
state that each point must include `type` and `color` but `value` is optional;
only include `value` when your rule requires a concrete anchor (e.g., for
`NUMBER`, `PERCENT`, `PERCENTILE` usages) and omit it for `MIN`/`MAX` points —
reference the `gradient_points` structure and the `type`, `value`, `color` keys
when making this change so the doc matches the implementation.
---
Duplicate comments:
In `@skills/managing-google-workspace/references/search.md`:
- Line 7: The heading "search_custom" is using H3 (###) which causes a
heading-level skip; change the Markdown heading for "search_custom" from H3 to
H2 (replace "### search_custom" with "## search_custom") so the document
maintains correct heading hierarchy and satisfies MD001.
---
Nitpick comments:
In `@skills/managing-google-workspace/references/calendar.md`:
- Around line 1-88: Linter MD058 flagged "blank lines around tables" in this
markdown; to fix, ensure each table (e.g., the tables under the "get_events",
"manage_event", and "query_freebusy" sections and the "Calendars & Events"
header) has a single blank line immediately before and after the pipe-table
block so markdownlint-cli2 recognizes the spacing; update the affected table
blocks to add or normalize those blank lines, then re-run markdownlint-cli2 to
confirm, or alternatively add an MD058 rule exception in the repo's markdownlint
configuration if these are false positives.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 5d2a4bb9-c494-45b7-9bb5-929f3ac1f1a6
📒 Files selected for processing (19)
.claude-plugin/marketplace.json.claude-plugin/plugin.jsonskills/managing-google-workspace/SKILL.mdskills/managing-google-workspace/evaluations/edit_doc.jsonskills/managing-google-workspace/evaluations/search_email.jsonskills/managing-google-workspace/evaluations/share_file.jsonskills/managing-google-workspace/references/apps-script.mdskills/managing-google-workspace/references/calendar.mdskills/managing-google-workspace/references/chat.mdskills/managing-google-workspace/references/contacts.mdskills/managing-google-workspace/references/docs.mdskills/managing-google-workspace/references/drive.mdskills/managing-google-workspace/references/forms.mdskills/managing-google-workspace/references/gmail.mdskills/managing-google-workspace/references/search.mdskills/managing-google-workspace/references/server-options.mdskills/managing-google-workspace/references/sheets.mdskills/managing-google-workspace/references/slides.mdskills/managing-google-workspace/references/tasks.md
✅ Files skipped from review due to trivial changes (14)
- skills/managing-google-workspace/evaluations/edit_doc.json
- .claude-plugin/plugin.json
- skills/managing-google-workspace/evaluations/search_email.json
- .claude-plugin/marketplace.json
- skills/managing-google-workspace/references/gmail.md
- skills/managing-google-workspace/evaluations/share_file.json
- skills/managing-google-workspace/references/docs.md
- skills/managing-google-workspace/references/drive.md
- skills/managing-google-workspace/SKILL.md
- skills/managing-google-workspace/references/forms.md
- skills/managing-google-workspace/references/contacts.md
- skills/managing-google-workspace/references/slides.md
- skills/managing-google-workspace/references/apps-script.md
- skills/managing-google-workspace/references/tasks.md
🚧 Files skipped from review as they are similar to previous changes (1)
- skills/managing-google-workspace/references/chat.md
2630103 to
8759a96
Compare
|
@coderabbitai resume |
✅ Actions performedReviews resumed. |
There was a problem hiding this comment.
Actionable comments posted: 3
♻️ Duplicate comments (1)
skills/managing-google-workspace/SKILL.md (1)
248-248:⚠️ Potential issue | 🟡 MinorCorrect
start_google_authparameter requirements (currently reversed).Line 248 marks
user_google_emailas optional andservice_nameas required, but this should be the opposite for accurate invocation guidance.📝 Proposed fix
-Parameters: `user_google_email` (string, optional), `service_name` (string, required -- e.g. `"gmail"`, `"drive"`). Legacy OAuth 2.0 only -- disabled when OAuth 2.1 is enabled. In most cases, just call the tool you need and auth happens automatically. +Parameters: `user_google_email` (string, required), `service_name` (string, optional, default: `"Google Workspace"`). Legacy OAuth 2.0 only -- disabled when OAuth 2.1 is enabled. In most cases, just call the tool you need and auth happens automatically.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills/managing-google-workspace/SKILL.md` at line 248, The parameter docs for start_google_auth are reversed: update the SKILL.md description so that start_google_auth lists user_google_email as required (string) and service_name as optional (string, e.g. "gmail", "drive"); replace the current "user_google_email (string, optional), service_name (string, required)" text with "user_google_email (string, required), service_name (string, optional -- e.g. 'gmail', 'drive')" and keep the note about Legacy OAuth 2.0 behavior unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@skills/managing-google-workspace/references/apps-script.md`:
- Around line 67-73: Add a blank line before and after each Markdown table so
MD058 no longer triggers; locate the table blocks starting with the header row
"| Parameter | Type | Required | Default | Notes |" and the other table headers
at the ranges noted (around lines 87-94, 107-113, 117-120, 141-148, 156-163,
168-172) and ensure there is at least one empty line immediately above and below
each table block (i.e., insert a blank line before the header line and one after
the final table row).
In `@skills/managing-google-workspace/references/calendar.md`:
- Around line 69-76: The markdown table starting with the header row "|
Parameter | Type | Required | Default | Notes |" needs blank-line separators
above and below it to satisfy MD058; edit the Availability section (the table
block containing the calendar parameters like user_google_email, time_min,
time_max, calendar_ids, group_expansion_max, calendar_expansion_max) and insert
one empty line immediately before the table and one empty line immediately after
the table so the table is isolated from surrounding paragraphs.
In `@skills/managing-google-workspace/SKILL.md`:
- Around line 67-83: The markdown tables in
skills/managing-google-workspace/SKILL.md are missing surrounding blank lines
which triggers repeated MD058 warnings; update each service table block (the
Task/Tool tables such as the block listing search_gmail_messages,
get_gmail_message_content, etc.) by adding a blank line immediately before and
after each table so they are separated from surrounding paragraphs and
headings—apply the same fix to the other table blocks referenced in the review
(the blocks around the other listed line ranges) to normalize spacing and
silence the markdownlint MD058 errors.
---
Duplicate comments:
In `@skills/managing-google-workspace/SKILL.md`:
- Line 248: The parameter docs for start_google_auth are reversed: update the
SKILL.md description so that start_google_auth lists user_google_email as
required (string) and service_name as optional (string, e.g. "gmail", "drive");
replace the current "user_google_email (string, optional), service_name (string,
required)" text with "user_google_email (string, required), service_name
(string, optional -- e.g. 'gmail', 'drive')" and keep the note about Legacy
OAuth 2.0 behavior unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 3a822b4f-1bff-4d3c-8d66-6577e18e1764
📒 Files selected for processing (19)
.claude-plugin/marketplace.json.claude-plugin/plugin.jsonskills/managing-google-workspace/SKILL.mdskills/managing-google-workspace/evaluations/edit_doc.jsonskills/managing-google-workspace/evaluations/search_email.jsonskills/managing-google-workspace/evaluations/share_file.jsonskills/managing-google-workspace/references/apps-script.mdskills/managing-google-workspace/references/calendar.mdskills/managing-google-workspace/references/chat.mdskills/managing-google-workspace/references/contacts.mdskills/managing-google-workspace/references/docs.mdskills/managing-google-workspace/references/drive.mdskills/managing-google-workspace/references/forms.mdskills/managing-google-workspace/references/gmail.mdskills/managing-google-workspace/references/search.mdskills/managing-google-workspace/references/server-options.mdskills/managing-google-workspace/references/sheets.mdskills/managing-google-workspace/references/slides.mdskills/managing-google-workspace/references/tasks.md
✅ Files skipped from review due to trivial changes (15)
- skills/managing-google-workspace/evaluations/edit_doc.json
- skills/managing-google-workspace/evaluations/share_file.json
- skills/managing-google-workspace/references/search.md
- skills/managing-google-workspace/references/gmail.md
- skills/managing-google-workspace/references/docs.md
- skills/managing-google-workspace/references/sheets.md
- .claude-plugin/marketplace.json
- skills/managing-google-workspace/references/chat.md
- skills/managing-google-workspace/references/server-options.md
- skills/managing-google-workspace/references/forms.md
- skills/managing-google-workspace/references/slides.md
- skills/managing-google-workspace/references/contacts.md
- skills/managing-google-workspace/references/tasks.md
- skills/managing-google-workspace/references/drive.md
- .claude-plugin/plugin.json
🚧 Files skipped from review as they are similar to previous changes (1)
- skills/managing-google-workspace/evaluations/search_email.json
|
@coderabbitai resolve |
✅ Actions performedComments resolved. Auto-approval is disabled; enable |
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@skills/managing-google-workspace/evaluations/share_file.json`:
- Around line 6-8: The flow currently auto-selects the "most recently modified"
spreadsheet when multiple matches and then calls manage_drive_access and
get_drive_shareable_link; change this to require explicit user confirmation
before any permission-changing call: when multiple candidates are returned, do
not auto-select by modification date—present the candidate list and pause for an
explicit user selection/confirmation, and only after the user confirms the
chosen file invoke manage_drive_access and then get_drive_shareable_link
(reference functions manage_drive_access and get_drive_shareable_link).
In `@skills/managing-google-workspace/references/apps-script.md`:
- Line 182: Update the text to reflect the actual implementation: change the
sentence that mandates calling create_version before manage_deployment to state
that manage_deployment (create action) will create a version internally, so
calling create_version is not required when using manage_deployment; reference
the functions create_version and manage_deployment in the updated wording and
clarify that create_version can still be used if callers want to explicitly
create a named/versioned snapshot before deployment.
In `@skills/managing-google-workspace/references/chat.md`:
- Line 64: Update the table row for the parameter emoji_unicode to clearly state
it expects a literal Unicode emoji character (not a shortcode); change the
example from "e.g. thumbs-up" to something like "e.g. 👍 (literal Unicode
emoji), not 'thumbs-up' shortcode" and ensure the description for emoji_unicode
mirrors the wording used elsewhere in the doc (the emoji_unicode parameter) so
readers understand it requires the actual emoji character.
In `@skills/managing-google-workspace/references/gmail.md`:
- Line 114: Update the docs to reflect that quote_original is implemented: in
the gmail.md entries for the parameter quote_original (both occurrences) remove
the "(unreleased)" label and mark it as supported/available (or the correct
release/version), and ensure the description matches the behavior implemented in
gmail/gmail_tools.py (the tool that handles quote_original/thread_id logic);
make both occurrences consistent with the actual function signature and
behavior.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 800e5af1-5561-47d4-ac71-7eec04b284ee
📒 Files selected for processing (19)
.claude-plugin/marketplace.json.claude-plugin/plugin.jsonskills/managing-google-workspace/SKILL.mdskills/managing-google-workspace/evaluations/edit_doc.jsonskills/managing-google-workspace/evaluations/search_email.jsonskills/managing-google-workspace/evaluations/share_file.jsonskills/managing-google-workspace/references/apps-script.mdskills/managing-google-workspace/references/calendar.mdskills/managing-google-workspace/references/chat.mdskills/managing-google-workspace/references/contacts.mdskills/managing-google-workspace/references/docs.mdskills/managing-google-workspace/references/drive.mdskills/managing-google-workspace/references/forms.mdskills/managing-google-workspace/references/gmail.mdskills/managing-google-workspace/references/search.mdskills/managing-google-workspace/references/server-options.mdskills/managing-google-workspace/references/sheets.mdskills/managing-google-workspace/references/slides.mdskills/managing-google-workspace/references/tasks.md
|
I appreciate the diligence in review process here! Very interesting - will take it for a spin, thank you for putting this together |
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
skills/managing-google-workspace/SKILL.md (1)
68-243: Add blank lines around tables for markdown compliance.The service tool tables are missing blank line separators, triggering multiple MD058 linting warnings. Adding a blank line immediately before and after each table will satisfy markdown linting and improve readability.
📋 Example fix for the Gmail section
### Gmail + | Task | Tool | |------|------| | Search/find emails | `search_gmail_messages` | ... | List filters | `list_gmail_filters` | + For parameters: [references/gmail.md](references/gmail.md)Apply the same pattern to all service tables (Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, Contacts, Chat, Apps Script, Custom Search, and Auth).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills/managing-google-workspace/SKILL.md` around lines 68 - 243, The markdown tables under each service header (e.g., the Gmail table starting under "### Gmail" listing tools like `search_gmail_messages`, `get_gmail_message_content`, etc.) need a blank line immediately before and after the table to satisfy MD058; for each section (Gmail, Google Drive, Google Calendar, Google Docs, Google Sheets, Google Slides, Google Forms, Google Tasks, Google Contacts, Google Chat, Google Apps Script, Google Custom Search) insert one empty line above the table start and one empty line after the table end so every table is separated from surrounding text.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@skills/managing-google-workspace/references/apps-script.md`:
- Around line 69-73: Several markdown table blocks (e.g., the table containing
"user_google_email", "script_id", and "files") lack a blank line after the table
which triggers MD058; add a single blank line after each table block to separate
it from the following content. Update the table ending after the row with
`files` and similarly fix the other table blocks referenced (lines with the
blocks containing "user_google_email"/"script_id"/"files" and the blocks at
93-97, 106-113, 117-121, 137-142, 159-164, 168-173) so each table is followed by
one empty line.
In `@skills/managing-google-workspace/SKILL.md`:
- Line 58: Update the documentation line that currently says credentials are
cached in `~/.claude/.credentials` to reflect the actual implementation: change
it to state credentials are cached in `~/.google_workspace_mcp/credentials` by
default and mention the override environment variables
`WORKSPACE_MCP_CREDENTIALS_DIR` (preferred) and `GOOGLE_MCP_CREDENTIALS_DIR`
(backwards compatible); adjust the text in SKILL.md near the credentials
description so readers see the correct default path and both env var options.
---
Nitpick comments:
In `@skills/managing-google-workspace/SKILL.md`:
- Around line 68-243: The markdown tables under each service header (e.g., the
Gmail table starting under "### Gmail" listing tools like
`search_gmail_messages`, `get_gmail_message_content`, etc.) need a blank line
immediately before and after the table to satisfy MD058; for each section
(Gmail, Google Drive, Google Calendar, Google Docs, Google Sheets, Google
Slides, Google Forms, Google Tasks, Google Contacts, Google Chat, Google Apps
Script, Google Custom Search) insert one empty line above the table start and
one empty line after the table end so every table is separated from surrounding
text.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: f1b65201-2298-4725-849c-d734c9deadac
📒 Files selected for processing (19)
.claude-plugin/marketplace.json.claude-plugin/plugin.jsonskills/managing-google-workspace/SKILL.mdskills/managing-google-workspace/evaluations/edit_doc.jsonskills/managing-google-workspace/evaluations/search_email.jsonskills/managing-google-workspace/evaluations/share_file.jsonskills/managing-google-workspace/references/apps-script.mdskills/managing-google-workspace/references/calendar.mdskills/managing-google-workspace/references/chat.mdskills/managing-google-workspace/references/contacts.mdskills/managing-google-workspace/references/docs.mdskills/managing-google-workspace/references/drive.mdskills/managing-google-workspace/references/forms.mdskills/managing-google-workspace/references/gmail.mdskills/managing-google-workspace/references/search.mdskills/managing-google-workspace/references/server-options.mdskills/managing-google-workspace/references/sheets.mdskills/managing-google-workspace/references/slides.mdskills/managing-google-workspace/references/tasks.md
Add managing-google-workspace skill with routing table for 114 tools across 12 services. Uses progressive disclosure to reduce context overhead vs loading all tool schemas upfront. Addresses taylorwilsdon#242. - SKILL.md with service routing, workflows, and OAuth setup guide - 13 reference files (one per service + server options) - 3 evaluation scenarios (edit doc, search email, share file) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4105653 to
0e8b0f2
Compare
|
@coderabbitai resume |
✅ Actions performedReviews resumed. |
|
Hey — I had a separate PR (#684, now closed) adding a Claude Code skill specifically for creating formatted Google Docs. Your PR is the better home for this content, so posting it here as a suggested addition. Your The problems
The batch pattern that avoids themFor each content section, repeat:
Key rules:
I had this as a standalone skill file with the full detail including a pitfalls/fixes table and quick reference. Happy to contribute it as a reference file (e.g. |
Adds agent-facing guidance for navigating Google Docs API formatting pitfalls (style cascade, index shifting, list merging, table cell ordering) when using this MCP's document creation tools. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
skills/managing-google-workspace/references/docs-layout-workflow.md (1)
122-124: Add language specifiers to code blocks.Both code blocks are missing language specifiers. This improves syntax highlighting and accessibility.
🎨 Proposed fix
For the PDF export example:
-``` +```python mcp__google-workspace__export_doc_to_pdf(document_id="<doc_id>")For the Quick Reference examples: ```diff -``` +```python # Heading 1 update_paragraph_style(start_index=X, end_index=Y, heading_level=1)Based on learnings: As per coding guidelines, fenced code blocks should have a language specified (markdownlint MD040).
Also applies to: 151-166
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills/managing-google-workspace/references/docs-layout-workflow.md` around lines 122 - 124, Add language specifiers to the fenced code blocks so markdown renders with syntax highlighting: update the block containing the call mcp__google-workspace__export_doc_to_pdf(document_id="<doc_id>") to use a python specifier (```python) and similarly add a language specifier (e.g., ```python) to the Quick Reference examples that show update_paragraph_style(start_index=X, end_index=Y, heading_level=1) and the other code fences between lines ~151-166.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@skills/managing-google-workspace/references/docs-layout-workflow.md`:
- Around line 29-34: The install example uses the wrong source path and target
directory; update the instructions so the source is the actual file name
(skills/managing-google-workspace/references/docs-layout-workflow.md) and the
target directory matches the skill structure
(~/.claude/skills/managing-google-workspace/references/) by replacing the
cp/mkdir lines in the docs-layout-workflow.md section, or alternatively remove
the manual install steps and note that docs-layout-workflow.md is included
automatically when the managing-google-workspace skill is installed; ensure
references to "create-google-doc-with-layout" are changed to
"managing-google-workspace" and update the directory path accordingly.
---
Nitpick comments:
In `@skills/managing-google-workspace/references/docs-layout-workflow.md`:
- Around line 122-124: Add language specifiers to the fenced code blocks so
markdown renders with syntax highlighting: update the block containing the call
mcp__google-workspace__export_doc_to_pdf(document_id="<doc_id>") to use a python
specifier (```python) and similarly add a language specifier (e.g., ```python)
to the Quick Reference examples that show update_paragraph_style(start_index=X,
end_index=Y, heading_level=1) and the other code fences between lines ~151-166.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 231342eb-d6b8-4336-b5b7-bec6a9972078
📒 Files selected for processing (1)
skills/managing-google-workspace/references/docs-layout-workflow.md
…n docs-layout-workflow
|
@coderabbitai resume |
✅ Actions performedReviews resumed. |
…e_original, include_notes
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@skills/managing-google-workspace/references/docs-layout-workflow.md`:
- Around line 46-51: The docs currently claim update_paragraph_style doesn't
support tab_id, but the function signature update_paragraph_style (see
gdocs/docs_tools.py at the function definition around line 1965) accepts tab_id:
str = None; verify whether that parameter is actually honored (run a quick
integration unit or inspect the implementation) and then update the text at the
two locations (the sentence at Step 1 and the pitfalls table entry) to match
reality: if tab_id is non-functional, explicitly document that the parameter
exists but is ignored and recommend single-tab templates; if tab_id works,
remove the warning and add a short usage note showing how to pass tab_id to
target a specific tab.
- Around line 168-171: The two helpers modify_doc_text and
update_paragraph_style use inconsistent index bases; standardize both to 0-based
to match Google Docs: update the docstrings for modify_doc_text and
update_paragraph_style to state "start_index: Start position (0-based)", remove
or adjust the special-case logic that treats start_index == 0 in
modify_doc_text, and change the validation in update_paragraph_style that
currently rejects start_index < 1 so it instead accepts 0 (e.g., allow
start_index >= 0); ensure any internal conversions or callers use the unified
0-based convention and update any tests/comments accordingly.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 9c74fa55-95e8-47f9-9f91-cdb40da64e71
📒 Files selected for processing (1)
skills/managing-google-workspace/references/docs-layout-workflow.md
…ace_mcp into feat/plugin-skill
There was a problem hiding this comment.
🧹 Nitpick comments (1)
gdocs/docs_helpers.py (1)
156-170: Consider adding explicit tests for non-body targets (tab_id/segment_id).A small regression test that confirms
start_index=0is not remapped whentab_idorsegment_idis set would lock in the guard behavior.Suggested test additions
+def test_zero_start_not_normalized_when_tab_id_is_set(): + result = create_update_paragraph_style_request( + 0, 10, heading_level=1, tab_id="tab-123" + ) + inner = result["updateParagraphStyle"] + assert inner["range"]["startIndex"] == 0 + +def test_zero_start_not_normalized_when_segment_id_is_set(): + result = create_update_paragraph_style_request( + 0, 10, heading_level=1, segment_id="kix.header" + ) + inner = result["updateParagraphStyle"] + assert inner["range"]["startIndex"] == 0🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@gdocs/docs_helpers.py` around lines 156 - 170, Add unit tests for _normalize_body_start_index to lock in the guard behavior: assert that when both tab_id and segment_id are None and start_index==0 the function returns 1, and assert that when either tab_id or segment_id is provided (e.g., tab_id="t1" and segment_id=None, and vice versa) a start_index of 0 is preserved (returns 0). Target tests to call _normalize_body_start_index directly and include cases for non-zero start_index as a control.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@gdocs/docs_helpers.py`:
- Around line 156-170: Add unit tests for _normalize_body_start_index to lock in
the guard behavior: assert that when both tab_id and segment_id are None and
start_index==0 the function returns 1, and assert that when either tab_id or
segment_id is provided (e.g., tab_id="t1" and segment_id=None, and vice versa) a
start_index of 0 is preserved (returns 0). Target tests to call
_normalize_body_start_index directly and include cases for non-zero start_index
as a control.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 643b496d-5944-43f0-9149-ce09a436ffa8
📒 Files selected for processing (6)
gdocs/docs_helpers.pygdocs/docs_tools.pyskills/managing-google-workspace/references/docs-layout-workflow.mdskills/managing-google-workspace/references/docs.mdtests/gdocs/test_advanced_doc_formatting.pytests/gdocs/test_paragraph_style.py
✅ Files skipped from review due to trivial changes (2)
- skills/managing-google-workspace/references/docs-layout-workflow.md
- skills/managing-google-workspace/references/docs.md
|
Thanks! Getting this merged now. |
Description
Adds a Claude Code skill for the Google Workspace MCP server.
The issue asks for progressive disclosure of tool schemas to reduce context wastage. MCP currently loads all 114 tool schemas at startup regardless of what the user needs.
The
managing-google-workspaceskill addresses this with a routing table and 14 reference files that load on demand, replacing 114 tool schemas with progressive disclosure.With MCP enabled, the skill adds routing and workflow guidance on top of the existing tool schemas. With MCP disabled, the skill replaces them entirely via CLI fallback.
Marketplace deployment and env var filtering are in #623.
What's included
managing-google-workspace) -- tool routing, workflows, and parameter guidance for 114 tools across 12 servicesType of Change
Testing
Checklist
Test plan
skills/managing-google-workspace/🤖 Generated with Claude Code
Summary by CodeRabbit