Skip to content

feat: skills expansion#18

Merged
jpoehnelt merged 2 commits intomainfrom
feat/skills-expansion
Mar 3, 2026
Merged

feat: skills expansion#18
jpoehnelt merged 2 commits intomainfrom
feat/skills-expansion

Conversation

@jpoehnelt
Copy link
Copy Markdown
Member

@jpoehnelt jpoehnelt commented Mar 3, 2026

Summary

Replace all admin/enterprise recipes with 50 consumer-focused recipes targeting Gmail, Drive, Docs, Calendar, and Sheets.

What changed

Recipes overhaul

  • Removed all admin/security/IT recipes (offboard-user, audit-user-login, reset-user-password, suspend-compromised-user, etc.)
  • Removed enterprise-only recipes (initiate-litigation-hold using Vault)
  • Removed dangerous recipes (setup-email-forwarding) → replaced with create-gmail-filter
  • Removed recipes overlapping with gws-workflow-* helpers (standup-to-chat, weekly-status-update, email-to-task-batch, create-meeting-notes, create-meeting-agenda)
  • Removed thin 2-step recipes better served as helpers (append-daily-log, create-keep-note, log-incident, etc.)
  • Added 50 curated consumer recipes — every recipe is 3+ steps, no recipe↔recipe or recipe↔helper overlaps

Recipe categories

Category Count Examples
Gmail 9 label-and-archive-emails, create-gmail-filter, batch-reply-to-emails, forward-labeled-emails
Drive 9 organize-drive-folder, bulk-download-folder, find-large-files, batch-rename-files
Calendar 6 block-focus-time, reschedule-meeting, find-free-time, batch-invite-to-event
Sheets 6 create-expense-tracker, copy-sheet-for-new-month, compare-sheet-tabs, generate-report-from-sheet
Docs 3 create-doc-from-template, draft-email-from-doc, share-doc-and-notify
Cross-service 8 save-email-attachments, create-events-from-sheet, post-mortem-setup, send-personalized-emails
Other (Tasks, Forms, etc.) 9 create-task-list, review-overdue-tasks, collect-form-responses, create-presentation

Other changes

  • README: Updated skill count to 100+, added link to docs/skills.md
  • lefthook.yml: Fixed pre-commit to run fmt and clippy sequentially (parallel causes cargo lock contention)
  • generate_skills.rs: Fixed clippy needless_borrow warnings
  • Registry restructure: Moved recipes.yaml to registry/recipes.yaml

Testing

  • cargo test — 260 tests pass
  • cargo clippy -- -D warnings — clean
  • cargo fmt -- --check — clean
  • generate-skills produces 50 recipe skills with no YAML parse warnings

@jpoehnelt jpoehnelt force-pushed the feat/skills-expansion branch from caa05cd to 2ab6bff Compare March 3, 2026 22:58
@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Mar 3, 2026

🦋 Changeset detected

Latest commit: da4891c

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@googleworkspace/cli Minor

Not sure what this means? Click here to learn what changesets are.

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

- Remove all admin/security/IT recipes (offboard-user, audit-user-login, etc.)
- Remove enterprise-only recipes (initiate-litigation-hold)
- Replace dangerous recipes (setup-email-forwarding -> create-gmail-filter)
- Remove recipes overlapping with gws-workflow-* helpers
- Remove thin 2-step recipes better served as helpers
- Add 50 curated consumer recipes for Gmail, Drive, Docs, Calendar, Sheets
- Update README: link to docs/skills.md, update skill count to 100+
- Fix clippy needless_borrow warnings in generate_skills.rs
- Fix lefthook.yml: run fmt/clippy sequentially (parallel causes races)
@jpoehnelt jpoehnelt force-pushed the feat/skills-expansion branch from 2ab6bff to da4891c Compare March 3, 2026 22:59
@jpoehnelt jpoehnelt changed the title feat/skills expansion feat: skills expansion Mar 3, 2026
@jpoehnelt jpoehnelt merged commit b0d0b95 into main Mar 3, 2026
22 checks passed
@gemini-code-assist
Copy link
Copy Markdown
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 introduces a substantial expansion of the AI Agent Skills, moving beyond administrative functions to offer a rich set of consumer-focused recipes and predefined personas. It streamlines the skill generation process and enhances discoverability through a new comprehensive skills index, significantly broadening the utility of the gws CLI for Google Workspace automation.

Highlights

  • Expanded Agent Skills: The total number of Agent Skills has been significantly increased from 40+ to over 100, now including 50 new consumer-focused recipes for Gmail, Drive, Docs, Calendar, and Sheets.
  • New Skills Index: A new auto-generated docs/skills.md file has been introduced, providing a comprehensive index of all available skills, categorized into Services, Helpers, Personas, and Recipes.
  • Introduced Personas and Recipes: New YAML-based registries (registry/personas.yaml and registry/recipes.yaml) have been added to define role-based persona skill bundles and multi-step task sequences (recipes), respectively.
  • Workflow Helpers: New cross-service workflow helper commands have been implemented, enabling high-level productivity actions such as standup reports, meeting preparation, converting emails to tasks, weekly digests, and file announcements.
  • Dependency Update: The serde_yaml crate has been added as a new dependency to support parsing the new YAML-based skill registries.
Changelog
  • .changeset/consumer-recipes.md
    • Added a new changeset file detailing the replacement of admin recipes with consumer-focused ones.
  • Cargo.lock
    • Updated dependencies to include serde_yaml and unsafe-libyaml.
  • Cargo.toml
    • Added serde_yaml as a new dependency.
  • README.md
    • Updated the count of Agent Skills from 40+ to 100+ and added a reference to the new Skills Index.
  • docs/skills.md
    • Added a new auto-generated Markdown file indexing all available skills, categorized into Services, Helpers, Personas, and Recipes.
  • lefthook.yml
    • Changed the pre-commit hook's parallel setting from true to false.
  • registry/personas.yaml
    • Added a new YAML file defining various role-based persona skill bundles, including their descriptions, services, workflows, instructions, and tips.
  • registry/recipes.yaml
    • Added a new YAML file containing 50 curated multi-step task sequences (recipes) for Google Workspace services like Gmail, Drive, Docs, Calendar, and Sheets.
  • skills/gws-admin-reports/SKILL.md
    • Updated the description to be more concise, focusing on audit logs and usage reports.
  • skills/gws-admin/SKILL.md
    • Updated the description to be more concise, focusing on managing users, groups, and devices.
  • skills/gws-alertcenter/SKILL.md
    • Updated the description to be more concise, focusing on managing Workspace security alerts.
  • skills/gws-apps-script-push/SKILL.md
    • Updated the description to be more concise, focusing on uploading local files to Apps Script projects.
  • skills/gws-apps-script/SKILL.md
    • Updated the description to be more concise, focusing on managing and executing Apps Script projects.
  • skills/gws-calendar-agenda/SKILL.md
    • Updated the description to be more concise, focusing on showing upcoming events.
  • skills/gws-calendar-insert/SKILL.md
    • Updated the description to be more concise, focusing on creating new events.
  • skills/gws-calendar/SKILL.md
    • Updated the description to be more concise, focusing on managing calendars and events.
  • skills/gws-chat-send/SKILL.md
    • Updated the description to be more concise, focusing on sending messages to Chat spaces.
  • skills/gws-chat/SKILL.md
    • Updated the description to be more concise, focusing on managing Chat spaces and messages.
  • skills/gws-classroom/SKILL.md
    • Updated the description to be more concise, focusing on managing classes, rosters, and coursework.
  • skills/gws-cloudidentity/SKILL.md
    • Updated the description to be more concise, focusing on managing identity groups and memberships.
  • skills/gws-docs-write/SKILL.md
    • Updated the description to be more concise, focusing on appending text to documents.
  • skills/gws-docs/SKILL.md
    • Updated the description to be more concise, focusing on reading and writing Google Docs.
  • skills/gws-drive-upload/SKILL.md
    • Updated the description to be more concise, focusing on uploading files with automatic metadata.
  • skills/gws-drive/SKILL.md
    • Updated the description to be more concise, focusing on managing files, folders, and shared drives.
  • skills/gws-events-renew/SKILL.md
    • Updated the description to be more concise, focusing on renewing Workspace Events subscriptions.
  • skills/gws-events-subscribe/SKILL.md
    • Updated the description to be more concise, focusing on subscribing to Workspace events.
  • skills/gws-events/SKILL.md
    • Updated the description to be more concise, focusing on subscribing to Google Workspace events.
  • skills/gws-forms/SKILL.md
    • Updated the description to be more concise, focusing on reading and writing Google Forms.
  • skills/gws-gmail-send/SKILL.md
    • Updated the description to be more concise, focusing on sending emails.
  • skills/gws-gmail-triage/SKILL.md
    • Updated the description to be more concise, focusing on showing unread inbox summaries.
  • skills/gws-gmail-watch/SKILL.md
    • Updated the description to be more concise, focusing on watching for new emails.
  • skills/gws-gmail/SKILL.md
    • Updated the description to be more concise, focusing on sending, reading, and managing email.
  • skills/gws-groupssettings/SKILL.md
    • Updated the description to be more concise, focusing on managing Google Groups settings.
  • skills/gws-keep/SKILL.md
    • Updated the description to be more concise, focusing on managing Google Keep notes.
  • skills/gws-licensing/SKILL.md
    • Updated the description to be more concise, focusing on managing product licenses.
  • skills/gws-meet/SKILL.md
    • Updated the description to be more concise, focusing on managing Google Meet conferences.
  • skills/gws-modelarmor-create-template/SKILL.md
    • Updated the description to be more concise, focusing on creating Model Armor templates.
  • skills/gws-modelarmor-sanitize-prompt/SKILL.md
    • Updated the description to be more concise, focusing on sanitizing user prompts.
  • skills/gws-modelarmor-sanitize-response/SKILL.md
    • Updated the description to be more concise, focusing on sanitizing model responses.
  • skills/gws-modelarmor/SKILL.md
    • Updated the description to be more concise, focusing on filtering user-generated content for safety.
  • skills/gws-people/SKILL.md
    • Updated the description to be more concise, focusing on managing contacts and profiles.
  • skills/gws-reseller/SKILL.md
    • Updated the description to be more concise, focusing on managing Workspace subscriptions.
  • skills/gws-shared/SKILL.md
    • Updated the description to be more concise, focusing on shared patterns, authentication, and global flags.
  • skills/gws-sheets-append/SKILL.md
    • Updated the description to be more concise, focusing on appending rows to spreadsheets.
  • skills/gws-sheets-read/SKILL.md
    • Updated the description to be more concise, focusing on reading values from spreadsheets.
  • skills/gws-sheets/SKILL.md
    • Updated the description to be more concise, focusing on reading and writing spreadsheets.
  • skills/gws-slides/SKILL.md
    • Updated the description to be more concise, focusing on reading and writing presentations.
  • skills/gws-tasks/SKILL.md
    • Updated the description to be more concise, focusing on managing task lists and tasks.
  • skills/gws-vault/SKILL.md
    • Updated the description to be more concise, focusing on managing eDiscovery holds and exports.
  • skills/gws-workflow-email-to-task/SKILL.md
    • Added a new skill for converting Gmail messages into Google Tasks entries.
  • skills/gws-workflow-file-announce/SKILL.md
    • Added a new skill for announcing Drive files in Chat spaces.
  • skills/gws-workflow-meeting-prep/SKILL.md
    • Added a new skill for preparing for meetings by showing agenda, attendees, and linked docs.
  • skills/gws-workflow-standup-report/SKILL.md
    • Added a new skill for generating daily standup summaries including meetings and open tasks.
  • skills/gws-workflow-weekly-digest/SKILL.md
    • Added a new skill for providing a weekly summary of meetings and unread emails.
  • skills/gws-workflow/SKILL.md
    • Added a new skill defining cross-service productivity workflows.
  • skills/persona-content-creator/SKILL.md
    • Added a new persona skill for content creators, outlining their relevant workflows and instructions.
  • skills/persona-customer-support/SKILL.md
    • Added a new persona skill for customer support agents, outlining their relevant workflows and instructions.
  • skills/persona-event-coordinator/SKILL.md
    • Added a new persona skill for event coordinators, outlining their relevant workflows and instructions.
  • skills/persona-exec-assistant/SKILL.md
    • Added a new persona skill for executive assistants, outlining their relevant workflows and instructions.
  • skills/persona-hr-coordinator/SKILL.md
    • Added a new persona skill for HR coordinators, outlining their relevant workflows and instructions.
  • skills/persona-it-admin/SKILL.md
    • Added a new persona skill for IT administrators, outlining their relevant workflows and instructions.
  • skills/persona-project-manager/SKILL.md
    • Added a new persona skill for project managers, outlining their relevant workflows and instructions.
  • skills/persona-researcher/SKILL.md
    • Added a new persona skill for researchers, outlining their relevant workflows and instructions.
  • skills/persona-sales-ops/SKILL.md
    • Added a new persona skill for sales operations, outlining their relevant workflows and instructions.
  • skills/persona-team-lead/SKILL.md
    • Added a new persona skill for team leads, outlining their relevant workflows and instructions.
  • skills/recipe-audit-external-sharing/SKILL.md
    • Added a new recipe skill for auditing externally shared Drive files.
  • skills/recipe-backup-sheet-as-csv/SKILL.md
    • Added a new recipe skill for exporting Google Sheets as CSV.
  • skills/recipe-batch-invite-to-event/SKILL.md
    • Added a new recipe skill for adding multiple attendees to a Calendar event.
  • skills/recipe-batch-rename-files/SKILL.md
    • Added a new recipe skill for batch renaming Google Drive files.
  • skills/recipe-batch-reply-to-emails/SKILL.md
    • Added a new recipe skill for batch replying to similar Gmail messages.
  • skills/recipe-block-focus-time/SKILL.md
    • Added a new recipe skill for creating recurring focus time blocks on Google Calendar.
  • skills/recipe-bulk-download-folder/SKILL.md
    • Added a new recipe skill for listing and downloading all files from a Google Drive folder.
  • skills/recipe-cancel-and-notify/SKILL.md
    • Added a new recipe skill for deleting a Google Calendar event and notifying attendees.
  • skills/recipe-collect-form-responses/SKILL.md
    • Added a new recipe skill for retrieving and reviewing responses from a Google Form.
  • skills/recipe-compare-sheet-tabs/SKILL.md
    • Added a new recipe skill for comparing data from two tabs in a Google Sheet.
  • skills/recipe-copy-sheet-for-new-month/SKILL.md
    • Added a new recipe skill for duplicating a Google Sheets template tab for a new month.
  • skills/recipe-create-classroom-course/SKILL.md
    • Added a new recipe skill for creating a Google Classroom course and inviting students.
  • skills/recipe-create-doc-from-template/SKILL.md
    • Added a new recipe skill for copying a Google Docs template, filling content, and sharing.
  • skills/recipe-create-events-from-sheet/SKILL.md
    • Added a new recipe skill for reading event data from a Google Sheet and creating Calendar entries.
  • skills/recipe-create-expense-tracker/SKILL.md
    • Added a new recipe skill for setting up a Google Sheets spreadsheet for tracking expenses.
  • skills/recipe-create-feedback-form/SKILL.md
    • Added a new recipe skill for creating a Google Form for feedback and sharing it via Gmail.
  • skills/recipe-create-gmail-filter/SKILL.md
    • Added a new recipe skill for creating a Gmail filter to automatically label, star, or categorize messages.
  • skills/recipe-create-meet-space/SKILL.md
    • Added a new recipe skill for creating a Google Meet meeting space and sharing the join link.
  • skills/recipe-create-presentation/SKILL.md
    • Added a new recipe skill for creating a new Google Slides presentation and adding initial slides.
  • skills/recipe-create-shared-drive/SKILL.md
    • Added a new recipe skill for creating a Google Shared Drive and adding members.
  • skills/recipe-create-task-list/SKILL.md
    • Added a new recipe skill for setting up a new Google Tasks list with initial tasks.
  • skills/recipe-create-vacation-responder/SKILL.md
    • Added a new recipe skill for enabling a Gmail out-of-office auto-reply.
  • skills/recipe-deploy-apps-script/SKILL.md
    • Added a new recipe skill for pushing local files to a Google Apps Script project.
  • skills/recipe-draft-email-from-doc/SKILL.md
    • Added a new recipe skill for reading content from a Google Doc and using it as a Gmail message body.
  • skills/recipe-email-drive-link/SKILL.md
    • Added a new recipe skill for sharing a Google Drive file and emailing the link.
  • skills/recipe-find-free-time/SKILL.md
    • Added a new recipe skill for querying Google Calendar free/busy status to find a meeting slot.
  • skills/recipe-find-large-files/SKILL.md
    • Added a new recipe skill for identifying large Google Drive files consuming storage quota.
  • skills/recipe-forward-labeled-emails/SKILL.md
    • Added a new recipe skill for finding Gmail messages with a specific label and forwarding them.
  • skills/recipe-generate-report-from-sheet/SKILL.md
    • Added a new recipe skill for reading data from a Google Sheet and creating a formatted Google Docs report.
  • skills/recipe-label-and-archive-emails/SKILL.md
    • Added a new recipe skill for applying Gmail labels to matching messages and archiving them.
  • skills/recipe-log-deal-update/SKILL.md
    • Added a new recipe skill for appending a deal status update to a Google Sheets sales tracking spreadsheet.
  • skills/recipe-organize-drive-folder/SKILL.md
    • Added a new recipe skill for creating a Google Drive folder structure and moving files.
  • skills/recipe-plan-weekly-schedule/SKILL.md
    • Added a new recipe skill for reviewing Google Calendar week, identifying gaps, and adding events.
  • skills/recipe-post-mortem-setup/SKILL.md
    • Added a new recipe skill for creating a Google Docs post-mortem, scheduling a Calendar review, and notifying via Chat.
  • skills/recipe-reschedule-meeting/SKILL.md
    • Added a new recipe skill for moving a Google Calendar event to a new time and notifying attendees.
  • skills/recipe-review-meet-participants/SKILL.md
    • Added a new recipe skill for reviewing who attended a Google Meet conference and for how long.
  • skills/recipe-review-overdue-tasks/SKILL.md
    • Added a new recipe skill for finding Google Tasks that are past due.
  • skills/recipe-save-email-attachments/SKILL.md
    • Added a new recipe skill for finding Gmail messages with attachments and saving them to a Drive folder.
  • skills/recipe-save-email-to-doc/SKILL.md
    • Added a new recipe skill for saving a Gmail message body into a Google Doc.
  • skills/recipe-schedule-recurring-event/SKILL.md
    • Added a new recipe skill for creating a recurring Google Calendar event with attendees.
  • skills/recipe-search-and-export-emails/SKILL.md
    • Added a new recipe skill for finding Gmail messages matching a query and exporting them.
  • skills/recipe-send-personalized-emails/SKILL.md
    • Added a new recipe skill for reading recipient data from Google Sheets and sending personalized Gmail messages.
  • skills/recipe-send-team-announcement/SKILL.md
    • Added a new recipe skill for sending a team announcement via both Gmail and a Google Chat space.
  • skills/recipe-share-doc-and-notify/SKILL.md
    • Added a new recipe skill for sharing a Google Docs document with edit access and emailing collaborators.
  • skills/recipe-share-event-materials/SKILL.md
    • Added a new recipe skill for sharing Google Drive files with all attendees of a Google Calendar event.
  • skills/recipe-share-folder-with-team/SKILL.md
    • Added a new recipe skill for sharing a Google Drive folder and its contents with collaborators.
  • skills/recipe-sync-contacts-to-sheet/SKILL.md
    • Added a new recipe skill for exporting Google Contacts directory to a Google Sheets spreadsheet.
  • skills/recipe-transfer-file-ownership/SKILL.md
    • Added a new recipe skill for transferring ownership of Google Drive files.
  • skills/recipe-triage-security-alerts/SKILL.md
    • Added a new recipe skill for listing and reviewing Google Workspace security alerts from Alert Center.
  • skills/recipe-watch-drive-changes/SKILL.md
    • Added a new recipe skill for subscribing to change notifications on a Google Drive file or folder.
  • src/generate_skills.rs
    • Updated the skill generation logic to include personas and recipes from YAML files, and to create a comprehensive skills index.
  • src/helpers/mod.rs
    • Updated the module to include the new workflows helper.
  • src/helpers/workflows.rs
    • Added a new file implementing several cross-service workflow helper commands, such as standup reports, meeting prep, email-to-task, weekly digests, and file announcements.
  • src/main.rs
    • Modified the main application logic to correctly handle the new 'workflow' synthetic service.
  • src/services.rs
    • Added a new ServiceEntry for the 'workflow' service.
  • src/setup.rs
    • Updated the test for workspace API IDs to correctly account for the new 'workflow' service.
Activity
  • The pull request is currently a Work In Progress (WIP).
  • The author, jpoehnelt, has indicated the feature replaces admin recipes with 50 consumer-focused recipes for Gmail, Drive, Docs, Calendar, and Sheets.
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 Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@jpoehnelt jpoehnelt deleted the feat/skills-expansion branch March 3, 2026 23:02
Copy link
Copy Markdown
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 pull request is a major and impressive overhaul of the skills system, replacing admin-focused recipes with a large set of 50 consumer-focused ones. The introduction of personas and a structured recipe registry is a great improvement. The code changes are extensive, including updates to the skill generation logic in Rust, new YAML definitions, and a large number of new and updated skill markdown files.

My review focuses on a few areas for improvement in the Rust code:

  • Updating a deprecated dependency.
  • Removing some redundant code in the skill generator.
  • Improving the robustness of error handling and URL encoding in the new workflow helpers.

Overall, this is a fantastic contribution that significantly expands the capabilities and user-friendliness of the CLI. The changes are well-structured and the addition of tests for the new registry is much appreciated.

Note: Security Review did not run due to the size of the PR.

Comment on lines +632 to +638
fn urlencoded(s: &str) -> String {
s.replace('%', "%25")
.replace(' ', "%20")
.replace('@', "%40")
.replace('+', "%2B")
.replace(':', "%3A")
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

high

This manual implementation of URL encoding is incomplete and might not handle all necessary characters (e.g., &, =, ?), which could lead to malformed URLs and bugs. It's better to use a dedicated library for this. The percent-encoding crate is already available as a transitive dependency and provides a robust solution.

Suggested change
fn urlencoded(s: &str) -> String {
s.replace('%', "%25")
.replace(' ', "%20")
.replace('@', "%40")
.replace('+', "%2B")
.replace(':', "%3A")
}
fn urlencoded(s: &str) -> String {
use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
utf8_percent_encode(s, NON_ALPHANUMERIC).to_string()
}

chrono = "0.4.44"
keyring = "3.6.3"
async-trait = "0.1.89"
serde_yaml = "0.9.34"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The serde_yaml crate is deprecated and its documentation recommends using serde-yaml (with a hyphen) instead. Please update the dependency to use the recommended crate and avoid potential issues with the deprecated one.

Suggested change
serde_yaml = "0.9.34"
serde-yaml = "0.9.34"

Comment on lines +167 to +171
let about_raw = helper
.get_about()
.map(|s| s.to_string())
.unwrap_or_default();
let about_clean = about_raw.strip_prefix("[Helper] ").unwrap_or(&about_raw);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

This block of code calculates about_clean, which is then unused. The same logic is duplicated inside render_helper_skill. This redundant code should be removed to improve maintainability.

Comment on lines +287 to +289
let events_json = get_json(&client, &events_url, &token)
.await
.unwrap_or(json!({}));
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Using unwrap_or here suppresses potential errors from get_json. If the API call fails (e.g., due to network issues or invalid auth), it will be silently ignored, and the function will proceed with empty data. This can make debugging difficult. It would be more robust to propagate the error using the ? operator. The same issue exists for fetching tasks on line 309.

Suggested change
let events_json = get_json(&client, &events_url, &token)
.await
.unwrap_or(json!({}));
let events_json = get_json(&client, &events_url, &token).await?;


fn epoch_to_rfc3339(epoch: u64) -> String {
use chrono::{TimeZone, Utc};
Utc.timestamp_opt(epoch as i64, 0).unwrap().to_rfc3339()
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The use of .unwrap() on the result of timestamp_opt could cause a panic if the epoch value is out of range for i64. While unlikely with typical u64 inputs, using .expect() with a descriptive message would make any potential panic easier to debug.

    Utc.timestamp_opt(epoch as i64, 0).expect("epoch timestamp should be valid").to_rfc3339()

shigechika pushed a commit to shigechika/gws-cli that referenced this pull request Mar 20, 2026
* wip

* feat: replace admin recipes with 50 consumer-focused recipes

- Remove all admin/security/IT recipes (offboard-user, audit-user-login, etc.)
- Remove enterprise-only recipes (initiate-litigation-hold)
- Replace dangerous recipes (setup-email-forwarding -> create-gmail-filter)
- Remove recipes overlapping with gws-workflow-* helpers
- Remove thin 2-step recipes better served as helpers
- Add 50 curated consumer recipes for Gmail, Drive, Docs, Calendar, Sheets
- Update README: link to docs/skills.md, update skill count to 100+
- Fix clippy needless_borrow warnings in generate_skills.rs
- Fix lefthook.yml: run fmt/clippy sequentially (parallel causes races)

---------

Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants