Skip to content

feat: improve 88 skills descriptions, examples, and validation#320

Closed
popey wants to merge 1 commit intogoogleworkspace:mainfrom
popey:improve/skill-review-optimization
Closed

feat: improve 88 skills descriptions, examples, and validation#320
popey wants to merge 1 commit intogoogleworkspace:mainfrom
popey:improve/skill-review-optimization

Conversation

@popey
Copy link

@popey popey commented Mar 9, 2026

Hullo Google Friends... 👋

I ran all your skills through tessl skill review at work and found some targeted improvements across all 88 skills. These are the top ten most improved:

score_card

Here's the before/after for all of them:

Full list of improved skills
Skill Before After Change
gws-admin-reports 45% 100% +55%
gws-calendar-agenda 66% 100% +34%
gws-calendar-insert 66% 100% +34%
gws-calendar 48% 100% +52%
gws-chat-send 66% 100% +34%
gws-chat 45% 100% +55%
gws-classroom 45% 100% +55%
gws-docs-write 66% 95% +29%
gws-docs 55% 100% +45%
gws-drive-upload 66% 100% +34%
gws-drive 53% 100% +47%
gws-events-renew 70% 100% +30%
gws-events-subscribe 64% 100% +36%
gws-events 48% 100% +52%
gws-forms 53% 100% +47%
gws-gmail-send 66% 100% +34%
gws-gmail-triage 66% 100% +34%
gws-gmail-watch 60% 100% +40%
gws-gmail 59% 100% +41%
gws-keep 54% 100% +46%
gws-meet 48% 100% +52%
gws-shared 49% 100% +51%
gws-modelarmor-create-template 54% 97% +43%
gws-people 48% 97% +49%
gws-sheets-append 66% 97% +31%
gws-sheets-read 66% 97% +31%
gws-sheets 53% 97% +44%
gws-slides 53% 97% +44%
gws-tasks 48% 97% +49%
gws-workflow-email-to-task 56% 91% +35%
gws-workflow-file-announce 60% 97% +37%
gws-workflow-meeting-prep 53% 91% +38%
gws-workflow-standup-report 59% 97% +38%
gws-workflow 36% 97% +61%
persona-content-creator 41% 100% +59%
persona-customer-support 53% 100% +47%
persona-event-coordinator 53% 100% +47%
persona-exec-assistant 53% 100% +47%
persona-hr-coordinator 46% 100% +54%
persona-it-admin 43% 100% +57%
persona-project-manager 49% 100% +51%
persona-researcher 46% 81% +35%
persona-sales-ops 43% 100% +57%
persona-team-lead 49% 100% +51%
recipe-backup-sheet-as-csv 60% 97% +37%
recipe-batch-invite-to-event 75% 97% +22%
recipe-bulk-download-folder 60% 97% +37%
recipe-copy-sheet-for-new-month 64% 97% +33%
recipe-create-meet-space 60% 97% +37%
recipe-create-presentation 53% 94% +41%
recipe-create-shared-drive 60% 97% +37%
recipe-create-task-list 60% 97% +37%
recipe-create-vacation-responder 75% 97% +22%
recipe-find-free-time 73% 97% +24%
recipe-find-large-files 60% 97% +37%
recipe-forward-labeled-emails 65% 97% +32%
recipe-organize-drive-folder 60% 100% +40%
recipe-reschedule-meeting 69% 100% +31%
recipe-review-meet-participants 64% 100% +36%
recipe-schedule-recurring-event 66% 100% +34%
Changes made

The improvements fall into a few consistent categories across all 88 skills:

  • Expanded frontmatter descriptions — Added specific trigger terms and "Use when" clauses so agents can match skills to user intent more reliably (e.g. "schedule a meeting", "gcal", "book time" for calendar skills)
  • Concrete examples — Added inline command examples, expected output formats, and example JSON payloads showing how to use each skill's API calls
  • Validation checkpoints — Added verification steps between multi-step workflows (e.g. confirm document was created before sharing it, validate event ID before inviting attendees)
  • Error handling guidance — Added troubleshooting sections for common failures (permission denied, invalid IDs, empty responses) with recovery actions
  • Structured workflows — Reorganised loosely described instructions into sequenced, numbered steps with clear inputs and outputs
  • Reduced redundancy — Consolidated repeated notes (e.g. duplicate emoji disclaimers in gws-chat) into single references

Honest disclosure — I work at @tesslio where we build tooling around skills like these. Not a pitch - just saw room for improvement and wanted to contribute.

If you want to run reviews, evals and optimizations yourself, just npm install @tessl/cli then run tessl skill review path/to/your/SKILL.md, and click here to find out more.

Thanks in advance 🙏

Checklist:

  • My code follows the AGENTS.md guidelines (no generated google-* crates).
  • I have run cargo fmt --all to format the code perfectly.
  • I have run cargo clippy -- -D warnings and resolved all warnings.
  • I have added tests that prove my fix is effective or that my feature works.
  • I have provided a Changeset file (e.g. via pnpx changeset) to document my changes.

…idation

Hullo @googleworkspace 👋

I ran your skills through `tessl skill review` at work and found some targeted improvements across all 88 skills. Here's the before/after:

| Skill | Before | After | Change |
|-------|--------|-------|--------|
| gws-admin-reports | 45% | 100% | +55% |
| gws-calendar-agenda | 66% | 100% | +34% |
| gws-calendar-insert | 66% | 100% | +34% |
| gws-calendar | 48% | 100% | +52% |
| gws-chat-send | 66% | 100% | +34% |
| gws-chat | 45% | 100% | +55% |
| gws-classroom | 45% | 100% | +55% |
| gws-docs-write | 66% | 95% | +29% |
| gws-docs | 55% | 100% | +45% |
| gws-drive-upload | 66% | 100% | +34% |
| gws-drive | 53% | 100% | +47% |
| gws-events-renew | 70% | 100% | +30% |
| gws-events-subscribe | 64% | 100% | +36% |
| gws-events | 48% | 100% | +52% |
| gws-forms | 53% | 100% | +47% |
| gws-gmail-send | 66% | 100% | +34% |
| gws-gmail-triage | 66% | 100% | +34% |
| gws-gmail-watch | 60% | 100% | +40% |
| gws-gmail | 59% | 100% | +41% |
| gws-keep | 54% | 100% | +46% |
| gws-meet | 48% | 100% | +52% |
| gws-shared | 49% | 100% | +51% |
| gws-modelarmor-create-template | 54% | 97% | +43% |
| gws-modelarmor-sanitize-prompt | 66% | 97% | +31% |
| gws-modelarmor-sanitize-response | 66% | 97% | +31% |
| gws-modelarmor | 53% | 97% | +44% |
| gws-people | 48% | 97% | +49% |
| gws-sheets-append | 66% | 97% | +31% |
| gws-sheets-read | 66% | 97% | +31% |
| gws-sheets | 53% | 97% | +44% |
| gws-slides | 53% | 97% | +44% |
| gws-tasks | 48% | 97% | +49% |
| gws-workflow-email-to-task | 56% | 91% | +35% |
| gws-workflow-file-announce | 60% | 97% | +37% |
| gws-workflow-meeting-prep | 53% | 91% | +38% |
| gws-workflow-standup-report | 59% | 97% | +38% |
| gws-workflow-weekly-digest | 59% | 97% | +38% |
| gws-workflow | 36% | 97% | +61% |
| persona-content-creator | 41% | 100% | +59% |
| persona-customer-support | 53% | 100% | +47% |
| persona-event-coordinator | 53% | 100% | +47% |
| persona-exec-assistant | 53% | 100% | +47% |
| persona-hr-coordinator | 46% | 100% | +54% |
| persona-it-admin | 43% | 100% | +57% |
| persona-project-manager | 49% | 100% | +51% |
| persona-researcher | 46% | 81% | +35% |
| persona-sales-ops | 43% | 100% | +57% |
| persona-team-lead | 49% | 100% | +51% |
| recipe-backup-sheet-as-csv | 60% | 97% | +37% |
| recipe-batch-invite-to-event | 75% | 97% | +22% |
| recipe-block-focus-time | 60% | 97% | +37% |
| recipe-bulk-download-folder | 60% | 97% | +37% |
| recipe-collect-form-responses | 60% | 97% | +37% |
| recipe-compare-sheet-tabs | 53% | 88% | +35% |
| recipe-copy-sheet-for-new-month | 64% | 97% | +33% |
| recipe-create-classroom-course | 64% | 97% | +33% |
| recipe-create-doc-from-template | 65% | 97% | +32% |
| recipe-create-events-from-sheet | 70% | 91% | +21% |
| recipe-create-expense-tracker | 60% | 97% | +37% |
| recipe-create-feedback-form | 60% | 97% | +37% |
| recipe-create-gmail-filter | 85% | 97% | +12% |
| recipe-create-meet-space | 60% | 97% | +37% |
| recipe-create-presentation | 53% | 94% | +41% |
| recipe-create-shared-drive | 60% | 97% | +37% |
| recipe-create-task-list | 60% | 97% | +37% |
| recipe-create-vacation-responder | 75% | 97% | +22% |
| recipe-draft-email-from-doc | 53% | 97% | +44% |
| recipe-email-drive-link | 60% | 97% | +37% |
| recipe-find-free-time | 73% | 97% | +24% |
| recipe-find-large-files | 60% | 97% | +37% |
| recipe-forward-labeled-emails | 65% | 97% | +32% |
| recipe-generate-report-from-sheet | 60% | 97% | +37% |
| recipe-label-and-archive-emails | 64% | 97% | +33% |
| recipe-log-deal-update | 69% | 97% | +28% |
| recipe-organize-drive-folder | 60% | 100% | +40% |
| recipe-plan-weekly-schedule | 65% | 100% | +35% |
| recipe-post-mortem-setup | 65% | 100% | +35% |
| recipe-reschedule-meeting | 69% | 100% | +31% |
| recipe-review-meet-participants | 64% | 100% | +36% |
| recipe-review-overdue-tasks | 53% | 100% | +47% |
| recipe-save-email-attachments | 78% | 100% | +22% |
| recipe-save-email-to-doc | 60% | 100% | +40% |
| recipe-schedule-recurring-event | 66% | 100% | +34% |
| recipe-send-team-announcement | 60% | 100% | +40% |
| recipe-share-doc-and-notify | 65% | 100% | +35% |
| recipe-share-event-materials | 64% | 100% | +36% |
| recipe-share-folder-with-team | 60% | 100% | +40% |
| recipe-sync-contacts-to-sheet | 56% | 100% | +44% |
| recipe-watch-drive-changes | 64% | 100% | +36% |

<details>
<summary>Changes made</summary>

The improvements fall into a few consistent categories across all 88 skills:

- **Expanded frontmatter descriptions** — Added specific trigger terms and "Use when" clauses so agents can match skills to user intent more reliably (e.g. "schedule a meeting", "gcal", "book time" for calendar skills)
- **Concrete examples** — Added inline command examples, expected output formats, and example JSON payloads showing how to use each skill's API calls
- **Validation checkpoints** — Added verification steps between multi-step workflows (e.g. confirm document was created before sharing it, validate event ID before inviting attendees)
- **Error handling guidance** — Added troubleshooting sections for common failures (permission denied, invalid IDs, empty responses) with recovery actions
- **Structured workflows** — Reorganised loosely described instructions into sequenced, numbered steps with clear inputs and outputs
- **Reduced redundancy** — Consolidated repeated notes (e.g. duplicate emoji disclaimers in gws-chat) into single references

</details>

Honest disclosure — I work at @tesslio where we build tooling around skills like these. Not a pitch - just saw room for improvement and wanted to contribute.

If you want to run reviews, evals and optimizations yourself, just `npm install @tessl/cli` then run `tessl skill review path/to/your/SKILL.md`, and click [here](https://tessl.io/registry/skills/submit) to find out more.

Thanks in advance 🙏
@changeset-bot
Copy link

changeset-bot bot commented Mar 9, 2026

⚠️ No Changeset found

Latest commit: 45fe515

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@google-cla
Copy link

google-cla bot commented Mar 9, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@popey popey marked this pull request as ready for review March 9, 2026 13:18
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, 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 enhances the documentation and usability of 88 Google Workspace skills by expanding descriptions, providing concrete examples, adding validation checkpoints, improving error handling, and structuring workflows. These improvements aim to make the skills more reliable and easier to use.

Highlights

  • Enhanced Skill Descriptions: Improved descriptions for 88 Google Workspace skills, adding trigger terms and 'Use when' clauses for better agent matching.
  • Concrete Examples: Added inline command examples, expected output formats, and example JSON payloads to demonstrate skill usage.
  • Validation Checkpoints: Implemented verification steps in multi-step workflows to ensure data integrity and prevent errors.
  • Error Handling Guidance: Included troubleshooting sections for common failures with recovery actions, improving skill robustness.
  • Structured Workflows: Reorganized instructions into sequenced, numbered steps with clear inputs and outputs for better clarity.
Changelog
  • skills/gws-admin-reports/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added examples for retrieving activity logs, login history, and customer-level usage reports.
    • Included a workflow for setting up push notifications.
  • skills/gws-calendar-agenda/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
  • skills/gws-calendar-insert/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
  • skills/gws-calendar/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added example workflows for listing upcoming events, creating new events, and querying free/busy availability.
  • skills/gws-chat-send/SKILL.md
    • Expanded the description to clarify its use for plain-text messages only.
  • skills/gws-chat/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Consolidated custom emoji notes and added usage examples.
  • skills/gws-classroom/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Simplified descriptions of course operations and added examples for common workflows.
  • skills/gws-docs-write/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
  • skills/gws-docs/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added examples for creating, getting, and batch updating documents, along with validation notes.
  • skills/gws-drive-upload/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
  • skills/gws-drive/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added examples for listing files, downloading files, and sharing files.
  • skills/gws-events-renew/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added details on output, handling failed renewals, and tips for usage.
  • skills/gws-events-subscribe/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added a workflow section and tips for using the skill.
  • skills/gws-events/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added a quick-start workflow and troubleshooting section.
  • skills/gws-forms/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added workflows for form creation and retrieving responses.
  • skills/gws-gmail-send/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
  • skills/gws-gmail-triage/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
  • skills/gws-gmail-watch/SKILL.md
    • Added pre-flight verification steps, expected output, and error handling guidance.
  • skills/gws-gmail/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added a schema-to-command workflow and common usage examples.
  • skills/gws-keep/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added examples for creating, listing, getting, and deleting notes, along with error handling.
  • skills/gws-meet/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added example workflows for creating meeting spaces and listing conference records.
  • skills/gws-modelarmor-create-template/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added an example JSON body and tips for usage.
  • skills/gws-modelarmor-sanitize-prompt/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
  • skills/gws-modelarmor-sanitize-response/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
  • skills/gws-modelarmor/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added an example for sanitizing a prompt.
  • skills/gws-people/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added an example for inspecting and constructing commands, common usage examples, and a mutate operation workflow.
  • skills/gws-shared/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added installation instructions, a destructive operation workflow, and further reading links.
  • skills/gws-sheets-append/SKILL.md
    • Added verification steps and common error handling.
  • skills/gws-sheets-read/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
  • skills/gws-sheets/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added a workflow for schema inspection and command execution, along with an example for batch updating a spreadsheet.
  • skills/gws-slides/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added examples for getting, creating, and batch updating presentations, along with a safety note.
  • skills/gws-tasks/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added examples for creating and listing tasks, along with warnings for destructive operations.
  • skills/gws-workflow-email-to-task/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added a confirmation step and expected output details.
  • skills/gws-workflow-file-announce/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added an upload-then-announce workflow and common error handling.
  • skills/gws-workflow-meeting-prep/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Clarified the description and added an example output.
  • skills/gws-workflow-standup-report/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added example outputs in table and JSON formats.
  • skills/gws-workflow-weekly-digest/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added example outputs in JSON and table formats.
  • skills/gws-workflow/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added an example for running a workflow command and validation steps for cross-service workflows.
  • skills/persona-content-creator/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added a sequenced workflow for content creation and distribution, along with a complete flow example.
  • skills/persona-customer-support/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added a full flow example from email to logged ticket.
  • skills/persona-event-coordinator/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added a sequenced workflow for event coordination.
  • skills/persona-exec-assistant/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added expected output examples.
  • skills/persona-hr-coordinator/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added a new hire onboarding sequence and tips for PII-sensitive operations.
  • skills/persona-it-admin/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added detailed instructions for monitoring security, configuring policies, and managing user accounts, along with an example workflow for investigating suspicious logins.
  • skills/persona-project-manager/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added examples for logging task updates, uploading and announcing artifacts, and scheduling recurring standups.
  • skills/persona-researcher/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added a sequenced workflow for research organization and a full research organization workflow example.
  • skills/persona-sales-ops/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added examples for preparing for client calls, logging deal updates, following up after meetings, and weekly pipeline reviews.
  • skills/persona-team-lead/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added an example for the daily standup flow.
  • skills/recipe-backup-sheet-as-csv/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added verification steps for the export.
  • skills/recipe-batch-invite-to-event/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
  • skills/recipe-block-focus-time/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added troubleshooting steps.
  • skills/recipe-bulk-download-folder/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added steps for handling pagination and verifying downloads.
  • skills/recipe-collect-form-responses/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added validation steps and troubleshooting tips.
  • skills/recipe-compare-sheet-tabs/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added detailed steps for comparing data and identifying changes, along with error handling.
  • skills/recipe-copy-sheet-for-new-month/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
    • Added validation steps for copying and renaming the new tab.
  • skills/recipe-create-classroom-course/SKILL.md
    • Added validation steps for course creation and invitation.
  • skills/recipe-create-doc-from-template/SKILL.md
    • Added validation steps for copying the template and sharing the document.
  • skills/recipe-create-events-from-sheet/SKILL.md
    • Added detailed steps for reading event data, iterating over rows, and validating created events, along with error handling.
  • skills/recipe-create-expense-tracker/SKILL.md
    • Added validation steps for spreadsheet creation and data entry.
  • skills/recipe-create-feedback-form/SKILL.md
    • Added validation steps for form creation and email sending.
  • skills/recipe-create-gmail-filter/SKILL.md
    • Added troubleshooting tips for invalid label IDs and existing filters.
  • skills/recipe-create-meet-space/SKILL.md
    • Added validation steps for space creation and email sending.
  • skills/recipe-create-presentation/SKILL.md
    • Added validation steps for presentation creation and sharing.
  • skills/recipe-create-shared-drive/SKILL.md
    • Added error handling for drive creation and permission issues.
  • skills/recipe-create-task-list/SKILL.md
    • Added validation steps for task list creation.
  • skills/recipe-create-vacation-responder/SKILL.md
    • Expanded the description to include specific trigger terms and use cases.
  • skills/recipe-draft-email-from-doc/SKILL.md
    • Added validation steps for extracting text and sending the email.
  • skills/recipe-email-drive-link/SKILL.md
    • Added validation steps for finding the file and creating permissions.
  • skills/recipe-find-free-time/SKILL.md
    • Added steps for interpreting the freebusy response and validating the booking, along with error handling.
  • skills/recipe-find-large-files/SKILL.md
    • Added details on reviewing output and verifying file safety before deletion.
  • skills/recipe-forward-labeled-emails/SKILL.md
    • Added steps for handling multiple messages and validating the forward.
  • skills/recipe-generate-report-from-sheet/SKILL.md
    • Added validation steps for reading data, creating the document, and writing the report, along with error handling.
  • skills/recipe-label-and-archive-emails/SKILL.md
    • Added a step to review the results before applying changes and clarified the process for multiple messages.
  • skills/recipe-log-deal-update/SKILL.md
    • Added a validation step for the append operation.
  • skills/recipe-organize-drive-folder/SKILL.md
    • Added validation steps for folder creation and file movement.
  • skills/recipe-plan-weekly-schedule/SKILL.md
    • Added a step to review the freebusy response and handle insertion conflicts.
  • skills/recipe-post-mortem-setup/SKILL.md
    • Added validation steps for document creation, event scheduling, and chat notification.
  • skills/recipe-reschedule-meeting/SKILL.md
    • Added error handling for event not found and insufficient permissions.
  • skills/recipe-review-meet-participants/SKILL.md
    • Added validation steps for listing conferences and participants.
  • skills/recipe-review-overdue-tasks/SKILL.md
    • Added steps for reviewing, rescheduling, and marking tasks complete, along with error handling.
  • skills/recipe-save-email-attachments/SKILL.md
    • Added steps for extracting attachment data, downloading, and uploading to Drive, along with handling multiple attachments.
  • skills/recipe-save-email-to-doc/SKILL.md
    • Added validation steps for finding the message, creating the document, and writing the email body.
  • skills/recipe-schedule-recurring-event/SKILL.md
    • Added validation steps for event creation and recurrence, along with error handling.
  • skills/recipe-send-team-announcement/SKILL.md
    • Added validation steps for email sending and chat posting.
  • skills/recipe-share-doc-and-notify/SKILL.md
    • Added validation steps for finding the document and creating permissions.
  • skills/recipe-share-event-materials/SKILL.md
    • Added steps for extracting attendees and verifying sharing permissions.
  • skills/recipe-share-folder-with-team/SKILL.md
    • Added validation steps for finding the folder and creating permissions.
  • skills/recipe-sync-contacts-to-sheet/SKILL.md
    • Added steps for listing contacts, writing the header row, appending contact rows, and validating the row count.
  • skills/recipe-watch-drive-changes/SKILL.md
    • Added validation steps for subscription creation and listing.
Activity
  • The author, popey, has enhanced the descriptions, examples, and validation for 88 Google Workspace skills.
  • The author has provided before/after comparisons for all improved skills.
  • The author has included a checklist to ensure code quality and guidelines are followed.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Generative AI Prohibited Use Policy, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This is an impressive and comprehensive update that significantly improves the quality and usability of all 88 skills. The expanded descriptions, concrete examples, and addition of validation and error handling guidance are excellent contributions that will make these skills much more reliable and easier for users to adopt. I've identified a few areas where the command-line examples for the --params flag are inconsistent with the documented JSON format, which could cause the commands to fail. My review focuses on correcting these examples to ensure they are consistent and functional.

Comment on lines +118 to +123
gws calendar events list \
--params calendarId=primary \
--params timeMin=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
--params orderBy=startTime \
--params singleEvents=true \
--params maxResults=10
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The use of multiple --params flags with key=value arguments is inconsistent with the documented JSON format for this flag in gws-shared/SKILL.md and other examples in this pull request (e.g., in gws-sheets/SKILL.md). Using a single --params flag with a JSON object is the documented and more robust approach. The dynamic date using $(date) can also be tricky with shell quoting. I suggest using a static date and a comment to guide the user, which makes the example clearer and more consistent.

Suggested change
gws calendar events list \
--params calendarId=primary \
--params timeMin=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
--params orderBy=startTime \
--params singleEvents=true \
--params maxResults=10
gws calendar events list \
--params '{
"calendarId": "primary",
"timeMin": "2024-01-01T00:00:00Z",
"orderBy": "startTime",
"singleEvents": true,
"maxResults": 10
}'

--json '{"userId":"student1@school.edu"}'

# 4. Verify student enrollment succeeded
gws classroom courses students get --params 'courseId=xyz789&userId=student1@school.edu'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The format for the --params flag appears to be incorrect. This example uses a URL query string format (key1=value1&key2=value2), which is inconsistent with the documented JSON object format ('{"key1":"value1", "key2":"value2"}') used in other skill examples. This will likely cause the command to fail. Please use the JSON format for consistency and correctness.

Suggested change
gws classroom courses students get --params 'courseId=xyz789&userId=student1@school.edu'
gws classroom courses students get --params '{"courseId": "xyz789", "userId": "student1@school.edu"}'


```bash
gws forms forms get \
--params 'formId=<formId-from-step-1>'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The format for the --params flag appears to be incorrect. This example uses a key=value string, which is inconsistent with the documented JSON object format ('{"key":"value"}') used in other skill examples. This will likely cause the command to fail. Please use the JSON format for consistency and correctness.

Suggested change
--params 'formId=<formId-from-step-1>'
--params '{"formId": "<formId-from-step-1>"}'


```bash
gws forms forms batchUpdate \
--params 'formId=<formId-from-step-1>' \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The format for the --params flag appears to be incorrect. This example uses a key=value string, which is inconsistent with the documented JSON object format ('{"key":"value"}') used in other skill examples. This will likely cause the command to fail. Please use the JSON format for consistency and correctness.

Suggested change
--params 'formId=<formId-from-step-1>' \
--params '{"formId": "<formId-from-step-1>"}' \


```bash
gws forms responses list \
--params 'formId=<formId>'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The format for the --params flag appears to be incorrect. This example uses a key=value string, which is inconsistent with the documented JSON object format ('{"key":"value"}') used in other skill examples. This will likely cause the command to fail. Please use the JSON format for consistency and correctness.

Suggested change
--params 'formId=<formId>'
--params '{"formId": "<formId>"}'


```bash
gws people people get \
--params 'resourceName=people/me&personFields=names,emailAddresses,phoneNumbers'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The format for the --params flag appears to be incorrect. This example uses a URL query string format (key1=value1&key2=value2), which is inconsistent with the documented JSON object format ('{"key1":"value1", "key2":"value2"}') used in other skill examples. This will likely cause the command to fail. Please use the JSON format for consistency and correctness.

Suggested change
--params 'resourceName=people/me&personFields=names,emailAddresses,phoneNumbers'
--params '{"resourceName": "people/me", "personFields": "names,emailAddresses,phoneNumbers"}'

### Get a presentation

```bash
gws slides presentations get --params 'presentationId=1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The format for the --params flag appears to be incorrect. This example uses a key=value string, which is inconsistent with the documented JSON object format ('{"key":"value"}') used in other skill examples. This will likely cause the command to fail. Please use the JSON format for consistency and correctness.

Suggested change
gws slides presentations get --params 'presentationId=1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms'
gws slides presentations get --params '{"presentationId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms"}'


```bash
gws slides presentations batchUpdate \
--params 'presentationId=1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms' \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The format for the --params flag appears to be incorrect. This example uses a key=value string, which is inconsistent with the documented JSON object format ('{"key":"value"}') used in other skill examples. This will likely cause the command to fail. Please use the JSON format for consistency and correctness.

Suggested change
--params 'presentationId=1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms' \
--params '{"presentationId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms"}' \


> **Verification:** After a successful `batchUpdate`, confirm the changes took effect by fetching the presentation:
> ```bash
> gws slides presentations get --params 'presentationId=PRESENTATION_ID'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The format for the --params flag appears to be incorrect. This example uses a key=value string, which is inconsistent with the documented JSON object format ('{"key":"value"}') used in other skill examples. This will likely cause the command to fail. Please use the JSON format for consistency and correctness.

Suggested change
> gws slides presentations get --params 'presentationId=PRESENTATION_ID'
> gws slides presentations get --params '{"presentationId": "PRESENTATION_ID"}'

Comment on lines +44 to +62
```bash
#!/usr/bin/env bash
# sheet_data.tsv: tab-separated output from the sheets read command (one row per line)
while IFS=$'\t' read -r summary start duration attendees; do
# Skip rows missing required fields
if [[ -z "$summary" || -z "$start" ]]; then
echo "SKIPPED row: summary='$summary' start='$start'"
continue
fi

gws calendar +insert \
--summary "$summary" \
--start "$start" \
--duration "$duration" \
--attendees "$attendees"

echo "CREATED: $summary @ $start"
done < sheet_data.tsv
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

This shell script example appears to be broken. The gws sheets +read command in step 1 will produce JSON by default, but the while loop is attempting to read tab-separated values (IFS=$'\t'). Additionally, the script reads from a file sheet_data.tsv that is never created.

To fix this, the read command should specify --format csv and redirect its output to a file. The loop should then be updated to use a comma as a delimiter (IFS=',') and read from the created CSV file.

#!/usr/bin/env bash
# First, save the CSV output to a file
gws sheets +read --spreadsheet-id SHEET_ID --range 'Events!A2:D' --format csv > sheet_data.csv

# sheet_data.csv: comma-separated output from the sheets read command
while IFS=',' read -r summary start duration attendees; do
  # Skip rows missing required fields
  if [[ -z "$summary" || -z "$start" ]]; then
    echo "SKIPPED row: summary='$summary' start='$start'"
    continue
  fi

  gws calendar +insert \
    --summary "$summary" \
    --start "$start" \
    --duration "$duration" \
    --attendees "$attendees"

  echo "CREATED: $summary @ $start"
done < sheet_data.csv

@jpoehnelt
Copy link
Member

skill files are autogenerated. needs to be fixed upstream.

@jpoehnelt jpoehnelt closed this Mar 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants