feat(sync): add google-workspace Gemini CLI extension as Type 4 plugin - #70
Conversation
- Add google-workspace extension entry to scripts/meta.ts - Add skipSkills?: boolean field to ExtensionMeta interface - Add skills/ directory copying support to Type 4 extension sync in cli.ts - Copies all subdirectories from external-plugins/<name>/skills/ to plugins/<name>/skills/ - Writes SYNC.md marker in each copied skill directory - Register google-workspace in .claude-plugin/marketplace.json - Register google-workspace in release-please-config.json - Enrich generated plugin.json with author, homepage, repository, license, keywords
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
2 issues found across 230 files
Note: This PR contains a large number of files. cubic only reviews up to 75 files per PR, so some files may not have been reviewed.
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="plugins/google-workspace/skills/gws-apps-script-push/SKILL.md">
<violation number="1" location="plugins/google-workspace/skills/gws-apps-script-push/SKILL.md:35">
P2: Example commands use `gws script +push`, which contradicts the documented `gws apps-script +push` usage and will mislead users. Align the examples with the actual command name.</violation>
</file>
<file name="plugins/google-workspace/skills/gws-calendar-insert/SKILL.md">
<violation number="1" location="plugins/google-workspace/skills/gws-calendar-insert/SKILL.md:22">
P2: Mutating command documentation should include `--dry-run` in the canonical usage to align with workspace safety rules and prevent accidental writes.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly expands the system's capabilities by integrating the Google Workspace CLI as a new Gemini extension. This integration not only brings a comprehensive set of 102 new skills for managing Google Workspace services but also refines the plugin synchronization process to handle skill directories more robustly. The addition of an opt-out mechanism for skill synchronization provides greater flexibility for extension developers. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces the google-workspace Gemini CLI extension as a Type 4 synced plugin. It also enhances the Type 4 sync script to handle copying skills/ directories from extensions. The changes look good overall, adding a significant new plugin and improving the sync capabilities. I've found one issue concerning script portability. My detailed comments are below.
| if command -v jq &> /dev/null; then | ||
| PLUGIN_NAME=$(jq -r '.name // "unknown"' "$PLUGIN_JSON") | ||
| else | ||
| PLUGIN_NAME=$(grep -oP '"name"\s*:\s*"\K[^"]+' "$PLUGIN_JSON" | head -1 || echo "unknown") |
There was a problem hiding this comment.
The use of grep -oP for parsing JSON is not portable, as the -P flag (for PCRE) is a GNU extension and not available on all systems, such as macOS. This can lead to script failures for developers on different operating systems.
Consider using a more portable tool like awk for the fallback mechanism when jq is not available. For example:
# Using awk for better portability
TEMP_NAME=$(awk -F'\"' '/"name"/ {print $4; exit}' "$PLUGIN_JSON")
PLUGIN_NAME=${TEMP_NAME:-unknown}This same issue exists on line 24 for CONTEXT_FILE.
Summary
google-workspace(googleworkspace/cli) as a Type 4 synced Gemini CLI extensionskills/directories from extensions (102 skills synced:gws-*,persona-*,recipe-*)skipSkills?: booleanfield toExtensionMetafor opt-outChanges
scripts/meta.tsskipSkills?: booleantoExtensionMetainterfacegoogle-workspaceextensionscripts/cli.tsskills/subdirectories fromexternal-plugins/<name>/skills/→plugins/<name>/skills/SYNC.mdmarker with source, SHA, and dateplugins/google-workspace/bun scripts/cli.ts syncplugin.jsonenriched with author, homepage, repository, license (Apache-2.0), version (0.4.4), keywordsConfig
.claude-plugin/marketplace.json(category: productivity)release-please-config.jsonTest plan
bun scripts/cli.ts syncruns cleanly withgoogle-workspaceextensionplugins/google-workspace/skills/contains expected skill directoriesSYNC.mdmarkerplugins/google-workspace/.claude-plugin/plugin.jsonhas correct version and licenseSummary by cubic
Adds the Google Workspace (googleworkspace/cli) Gemini CLI extension as a Type 4 plugin and upgrades Type 4 sync to pull skills directories, surfacing 102 Workspace skills. Also updates CLI tests to include extension paths in the initSubmodules mock.
New Features
Migration
Written for commit f111483. Summary will update on new commits.