Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,18 @@
},
"category": "Development"
},
{
"name": "playwright-cli",
"source": {
"source": "local",
"path": "./plugins/playwright-cli"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Development"
},
{
"name": "mastra",
"source": {
Expand Down
5 changes: 1 addition & 4 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -275,10 +275,7 @@
"category": "development",
"keywords": ["playwright", "browser", "automation", "testing"],
"tags": ["tooling", "testing"],
"source": {
"source": "github",
"repo": "pleaseai/playwright-cli"
}
"source": "./plugins/playwright-cli"
},
{
"name": "mastra",
Expand Down
18 changes: 0 additions & 18 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -22,21 +22,3 @@
[submodule "external-plugins/grafana"]
path = external-plugins/grafana
url = git@github.com:amondnet/mcp-grafana.git
[submodule "external-plugins/chrome-devtools-mcp"]
path = external-plugins/chrome-devtools-mcp
url = git@github.com:pleaseai/chrome-devtools-mcp.git
[submodule "external-plugins/open-aware"]
path = external-plugins/open-aware
url = git@github.com:amondnet/open-aware.git
[submodule "external-plugins/playwright-cli"]
path = external-plugins/playwright-cli
url = git@github.com:pleaseai/playwright-cli.git
[submodule "vendor/web-design-guidelines"]
path = vendor/web-design-guidelines
url = https://github.com/vercel-labs/agent-skills
[submodule "external-plugins/google-workspace"]
path = external-plugins/google-workspace
url = https://github.com/googleworkspace/cli
[submodule "external-plugins/revenuecat"]
path = external-plugins/revenuecat
url = https://github.com/RevenueCat/rc-claude-code-plugin.git
5 changes: 3 additions & 2 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ Development standards and reference documentation for **human contributors**. No

Read-only git submodules containing **Type 4** plugins: external projects that are either Gemini CLI extensions or standalone Claude Code plugins. These are the canonical upstream sources. The sync pipeline reads from here and generates artifacts into `plugins/`.

Current external plugins: chrome-devtools-mcp, code-review, firebase, flutter, google-workspace, grafana, nanobanana, open-aware, playwright-cli, postgres, security, spec-kit.
Current external plugins: code-review, firebase, flutter, grafana, nanobanana, postgres, security, spec-kit.

### `hooks/`

Expand Down Expand Up @@ -128,7 +128,8 @@ Only `.claude-plugin/plugin.json` and the shared asset directories are hand-auth
- **Type 1 (Generated)**: `vue`, `nuxt`, `vitest`, `vite`, etc. — skills generated from official documentation submodules via `/generate-skill`
- **Type 2 (Vendor-synced)**: `slidev`, `vueuse`, `prisma`, `better-auth`, etc. — skills synced from upstream vendor skill repositories
- **Type 3 (Manual copy)**: `antfu` — hand-written skills copied from `vendor/antfu-skills/`
- **Type 4 (Extension-synced)**: `google-workspace` — auto-converted from Gemini CLI extensions in `external-plugins/`
- **Type 4 (Extension-synced)**: Gemini CLI extensions registered in the `extensions` map of `scripts/meta.ts` and auto-converted into `plugins/<name>/` (the `extensions` registry is currently empty — distinct from the standalone external-plugin submodules listed above, which are not Gemini-extension-synced)
- **skills.sh-installed**: `playwright-cli`, `google-workspace` — skills installed via `bunx skills add` into `plugins/*/.agents/skills/`, tracked by `skills-lock.json`

Files with a `SYNC.md` marker are auto-generated and will be overwritten on the next `bun run skills:sync`. Do not edit them manually.

Expand Down
2 changes: 0 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ claude-code-plugins/
│ ├── firebase/ # Firebase integration
│ ├── postgres/ # PostgreSQL MCP server
│ ├── grafana/ # Grafana integration
│ ├── chrome-devtools-mcp/ # Chrome DevTools automation
│ └── context7/ # Up-to-date library documentation
├── plugins/ # Built-in plugins (manually maintained) AND auto-generated Type 4 output
│ ├── gatekeeper/ # Auto-approve safe commands (manually maintained)
Expand Down Expand Up @@ -162,7 +161,6 @@ All plugins are maintained in separate repositories and included as git submodul
- `external-plugins/firebase/` → https://github.com/pleaseai/firebase-plugin
- `external-plugins/postgres/` → https://github.com/pleaseai/postgres-plugin
- `external-plugins/grafana/` → https://github.com/amondnet/mcp-grafana
- `external-plugins/chrome-devtools-mcp/` → https://github.com/pleaseai/chrome-devtools-mcp
- `external-plugins/context7/` → https://github.com/pleaseai/context7

## Claude Code Plugin Development Guide
Expand Down
1 change: 0 additions & 1 deletion external-plugins/chrome-devtools-mcp
Submodule chrome-devtools-mcp deleted from 293169
1 change: 0 additions & 1 deletion external-plugins/google-workspace
Submodule google-workspace deleted from f6d74b
1 change: 0 additions & 1 deletion external-plugins/open-aware
Submodule open-aware deleted from 1dc931
1 change: 0 additions & 1 deletion external-plugins/playwright-cli
Submodule playwright-cli deleted from dee63a
1 change: 0 additions & 1 deletion external-plugins/revenuecat
Submodule revenuecat deleted from af7cb7
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-admin-reports
version: 1.0.0
description: "Google Workspace Admin SDK: Audit logs and usage reports."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws admin-reports --help"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-calendar-agenda
version: 1.0.0
description: "Google Calendar: Show upcoming events across all calendars."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws calendar +agenda --help"
---

Expand All @@ -31,6 +32,7 @@ gws calendar +agenda
| `--week` | — | — | Show this week's events |
| `--days` | — | — | Number of days ahead to show |
| `--calendar` | — | — | Filter to specific calendar name or ID |
| `--timezone` | — | — | IANA timezone override (e.g. America/Denver). Defaults to Google account timezone. |

## Examples

Expand All @@ -39,12 +41,14 @@ gws calendar +agenda
gws calendar +agenda --today
gws calendar +agenda --week --format table
gws calendar +agenda --days 3 --calendar 'Work'
gws calendar +agenda --today --timezone America/New_York
```

## Tips

- Read-only — never modifies events.
- Queries all calendars by default; use --calendar to filter.
- Uses your Google account timezone by default; override with --timezone.

## See Also

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-calendar-insert
version: 1.0.0
description: "Google Calendar: Create a new event."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws calendar +insert --help"
---

Expand All @@ -33,18 +34,20 @@ gws calendar +insert --summary <TEXT> --start <TIME> --end <TIME>
| `--location` | — | — | Event location |
| `--description` | — | — | Event description/body |
| `--attendee` | — | — | Attendee email (can be used multiple times) |
| `--meet` | — | — | Add a Google Meet video conference link |

## Examples

```bash
gws calendar +insert --summary 'Standup' --start '2026-06-17T09:00:00-07:00' --end '2026-06-17T09:30:00-07:00'
gws calendar +insert --summary 'Review' --start ... --end ... --attendee alice@example.com
gws calendar +insert --summary 'Meet' --start ... --end ... --meet
```

## Tips

- Use RFC3339 format for times (e.g. 2026-06-17T09:00:00-07:00).
- For recurring events or conference links, use the raw API instead.
- The --meet flag automatically adds a Google Meet link to the event.

> [!CAUTION]
> This is a **write** command — confirm with the user before executing.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-calendar
version: 1.0.0
description: "Google Calendar: Manage calendars and events."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws calendar --help"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-chat-send
version: 1.0.0
description: "Google Chat: Send a message to a space."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws chat +send --help"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-chat
version: 1.0.0
description: "Google Chat: Manage Chat spaces and messages."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws chat --help"
---

Expand Down Expand Up @@ -55,6 +56,7 @@ gws chat <resource> <method> [flags]

### users

- `sections` — Operations on the 'sections' resource
- `spaces` — Operations on the 'spaces' resource

## Discovering Commands
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-classroom
version: 1.0.0
description: "Google Classroom: Manage classes, rosters, and coursework."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws classroom --help"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-docs-write
version: 1.0.0
description: "Google Docs: Append text to a document."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws docs +write --help"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-docs
version: 1.0.0
description: "Read and write Google Docs."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws docs --help"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-drive-upload
version: 1.0.0
description: "Google Drive: Upload a file with automatic metadata."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws drive +upload --help"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-drive
version: 1.0.0
description: "Google Drive: Manage files, folders, and shared drives."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws drive --help"
---

Expand Down Expand Up @@ -67,24 +68,21 @@ gws drive <resource> <method> [flags]
### drives

- `create` — Creates a shared drive. For more information, see [Manage shared drives](https://developers.google.com/workspace/drive/api/guides/manage-shareddrives).
- `delete` — Permanently deletes a shared drive for which the user is an `organizer`. The shared drive cannot contain any untrashed items. For more information, see [Manage shared drives](https://developers.google.com/workspace/drive/api/guides/manage-shareddrives).
- `get` — Gets a shared drive's metadata by ID. For more information, see [Manage shared drives](https://developers.google.com/workspace/drive/api/guides/manage-shareddrives).
- `hide` — Hides a shared drive from the default view. For more information, see [Manage shared drives](https://developers.google.com/workspace/drive/api/guides/manage-shareddrives).
- `list` — Lists the user's shared drives. This method accepts the `q` parameter, which is a search query combining one or more search terms. For more information, see the [Search for shared drives](/workspace/drive/api/guides/search-shareddrives) guide.
- `list` — Lists the user's shared drives. This method accepts the `q` parameter, which is a search query combining one or more search terms. For more information, see the [Search for shared drives](https://developers.google.com/workspace/drive/api/guides/search-shareddrives) guide.
- `unhide` — Restores a shared drive to the default view. For more information, see [Manage shared drives](https://developers.google.com/workspace/drive/api/guides/manage-shareddrives).
- `update` — Updates the metadata for a shared drive. For more information, see [Manage shared drives](https://developers.google.com/workspace/drive/api/guides/manage-shareddrives).

### files

- `copy` — Creates a copy of a file and applies any requested updates with patch semantics. For more information, see [Create and manage files](https://developers.google.com/workspace/drive/api/guides/create-file).
- `create` — Creates a file. For more information, see [Create and manage files](/workspace/drive/api/guides/create-file). This method supports an */upload* URI and accepts uploaded media with the following characteristics: - *Maximum file size:* 5,120 GB - *Accepted Media MIME types:* `*/*` (Specify a valid MIME type, rather than the literal `*/*` value. The literal `*/*` is only used to indicate that any valid MIME type can be uploaded.
- `delete` — Permanently deletes a file owned by the user without moving it to the trash. For more information, see [Trash or delete files and folders](https://developers.google.com/workspace/drive/api/guides/delete). If the file belongs to a shared drive, the user must be an `organizer` on the parent folder. If the target is a folder, all descendants owned by the user are also deleted.
- `create` — Creates a file. For more information, see [Create and manage files](https://developers.google.com/workspace/drive/api/guides/create-file). This method supports an */upload* URI and accepts uploaded media with the following characteristics: - *Maximum file size:* 5,120 GB - *Accepted Media MIME types:* `*/*` (Specify a valid MIME type, rather than the literal `*/*` value. The literal `*/*` is only used to indicate that any valid MIME type can be uploaded.
- `download` — Downloads the content of a file. For more information, see [Download and export files](https://developers.google.com/workspace/drive/api/guides/manage-downloads). Operations are valid for 24 hours from the time of creation.
- `emptyTrash` — Permanently deletes all of the user's trashed files. For more information, see [Trash or delete files and folders](https://developers.google.com/workspace/drive/api/guides/delete).
- `export` — Exports a Google Workspace document to the requested MIME type and returns exported byte content. For more information, see [Download and export files](https://developers.google.com/workspace/drive/api/guides/manage-downloads). Note that the exported content is limited to 10 MB.
- `generateIds` — Generates a set of file IDs which can be provided in create or copy requests. For more information, see [Create and manage files](https://developers.google.com/workspace/drive/api/guides/create-file).
- `get` — Gets a file's metadata or content by ID. For more information, see [Search for files and folders](/workspace/drive/api/guides/search-files). If you provide the URL parameter `alt=media`, then the response includes the file contents in the response body. Downloading content with `alt=media` only works if the file is stored in Drive. To download Google Docs, Sheets, and Slides use [`files.export`](/workspace/drive/api/reference/rest/v3/files/export) instead.
- `list` — Lists the user's files. For more information, see [Search for files and folders](/workspace/drive/api/guides/search-files). This method accepts the `q` parameter, which is a search query combining one or more search terms. This method returns *all* files by default, including trashed files. If you don't want trashed files to appear in the list, use the `trashed=false` query parameter to remove trashed files from the results.
- `get` — Gets a file's metadata or content by ID. For more information, see [Search for files and folders](https://developers.google.com/workspace/drive/api/guides/search-files). If you provide the URL parameter `alt=media`, then the response includes the file contents in the response body. Downloading content with `alt=media` only works if the file is stored in Drive.
- `list` — Lists the user's files. For more information, see [Search for files and folders](https://developers.google.com/workspace/drive/api/guides/search-files). This method accepts the `q` parameter, which is a search query combining one or more search terms. This method returns *all* files by default, including trashed files. If you don't want trashed files to appear in the list, use the `trashed=false` query parameter to remove trashed files from the results.
- `listLabels` — Lists the labels on a file. For more information, see [List labels on a file](https://developers.google.com/workspace/drive/api/guides/list-labels).
- `modifyLabels` — Modifies the set of labels applied to a file. For more information, see [Set a label field on a file](https://developers.google.com/workspace/drive/api/guides/set-label). Returns a list of the labels that were added or modified.
- `update` — Updates a file's metadata, content, or both. When calling this method, only populate fields in the request that you want to modify. When updating fields, some fields might be changed automatically, such as `modifiedDate`. This method supports patch semantics. This method supports an */upload* URI and accepts uploaded media with the following characteristics: - *Maximum file size:* 5,120 GB - *Accepted Media MIME types:* `*/*` (Specify a valid MIME type, rather than the literal `*/*` value.
Expand Down Expand Up @@ -120,7 +118,6 @@ gws drive <resource> <method> [flags]
### teamdrives

- `create` — Deprecated: Use `drives.create` instead.
- `delete` — Deprecated: Use `drives.delete` instead.
- `get` — Deprecated: Use `drives.get` instead.
- `list` — Deprecated: Use `drives.list` instead.
- `update` — Deprecated: Use `drives.update` instead.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-events-renew
version: 1.0.0
description: "Google Workspace Events: Renew/reactivate Workspace Events subscriptions."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws events +renew --help"
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
name: gws-events-subscribe
version: 1.0.0
description: "Google Workspace Events: Subscribe to Workspace events and stream them as NDJSON."
metadata:
version: 0.22.5
openclaw:
category: "productivity"
requires:
bins: ["gws"]
bins:
- gws
cliHelp: "gws events +subscribe --help"
---

Expand Down
Loading
Loading