Skip to content
Open
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
5 changes: 5 additions & 0 deletions .changeset/publish-skills-workflow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@googleworkspace/cli": patch
---

Add workflow to publish OpenClaw skills to ClawHub
47 changes: 47 additions & 0 deletions .github/workflows/publish-skills.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Publish OpenClaw Skills

on:
push:
branches: [main]
paths:
- "skills/**"
- ".github/workflows/publish-skills.yml"
pull_request:
branches: [main]
paths:
- "skills/**"
- ".github/workflows/publish-skills.yml"
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false

jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "20"

- name: Install ClawHub CLI
run: npm i -g clawhub@0.7.0

- name: Publish skills
env:
CLAWHUB_TOKEN: ${{ secrets.CLAWHUB_TOKEN }}
run: |
if [ -z "$CLAWHUB_TOKEN" ]; then
echo "::error::CLAWHUB_TOKEN secret is not set"
exit 1
fi
if [ "${{ github.event_name }}" = "pull_request" ]; then
clawhub sync --root skills --all --dry-run
else
clawhub sync --root skills --all
fi
37 changes: 37 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ chrono = "0.4.44"
keyring = "3.6.3"
async-trait = "0.1.89"
serde_yaml = "0.9.34"
open = "5"
percent-encoding = "2.3.2"


Expand Down
4 changes: 4 additions & 0 deletions docs/skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ Shortcut commands for common operations.
| [gws-docs-write](../skills/gws-docs-write/SKILL.md) | Google Docs: Append text to a document. |
| [gws-chat-send](../skills/gws-chat-send/SKILL.md) | Google Chat: Send a message to a space. |
| [gws-apps-script-push](../skills/gws-apps-script-push/SKILL.md) | Google Apps Script: Upload local files to an Apps Script project. |
| [gws-apps-script-pull](../skills/gws-apps-script-pull/SKILL.md) | Google Apps Script: Download project files to local directory. |
| [gws-apps-script-open](../skills/gws-apps-script-open/SKILL.md) | Google Apps Script: Open the script editor in your browser. |
| [gws-apps-script-run](../skills/gws-apps-script-run/SKILL.md) | Google Apps Script: Execute a function in the script. |
| [gws-apps-script-logs](../skills/gws-apps-script-logs/SKILL.md) | Google Apps Script: View execution logs for the script. |
| [gws-events-subscribe](../skills/gws-events-subscribe/SKILL.md) | Google Workspace Events: Subscribe to Workspace events and stream them as NDJSON. |
| [gws-events-renew](../skills/gws-events-renew/SKILL.md) | Google Workspace Events: Renew/reactivate Workspace Events subscriptions. |
| [gws-modelarmor-sanitize-prompt](../skills/gws-modelarmor-sanitize-prompt/SKILL.md) | Google Model Armor: Sanitize a user prompt through a Model Armor template. |
Expand Down
46 changes: 46 additions & 0 deletions skills/gws-apps-script-logs/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
name: gws-apps-script-logs
version: 1.0.0
description: "Google Apps Script: View execution logs for the script."
metadata:
openclaw:
category: "productivity"
requires:
bins: ["gws"]
cliHelp: "gws apps-script +logs --help"
---

# apps-script +logs

> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it.

View execution logs for the script

## Usage

```bash
gws apps-script +logs
```

## Flags

| Flag | Required | Default | Description |
|------|----------|---------|-------------|
| `--script` | — | — | Script Project ID (reads .clasp.json if omitted) |

## Examples

```bash
gws script +logs --script SCRIPT_ID
gws script +logs # uses .clasp.json
```

## Tips

- Shows recent script executions and their status.
- Use --format table for a readable summary.

## See Also

- [gws-shared](../gws-shared/SKILL.md) — Global flags and auth
- [gws-apps-script](../gws-apps-script/SKILL.md) — All manage and execute apps script projects commands
41 changes: 41 additions & 0 deletions skills/gws-apps-script-open/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
name: gws-apps-script-open
version: 1.0.0
description: "Google Apps Script: Open the script editor in your browser."
metadata:
openclaw:
category: "productivity"
requires:
bins: ["gws"]
cliHelp: "gws apps-script +open --help"
---

# apps-script +open

> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it.

Open the script editor in your browser

## Usage

```bash
gws apps-script +open
```

## Flags

| Flag | Required | Default | Description |
|------|----------|---------|-------------|
| `--script` | — | — | Script Project ID (reads .clasp.json if omitted) |

## Examples

```bash
gws script +open --script SCRIPT_ID
gws script +open # uses .clasp.json
```

## See Also

- [gws-shared](../gws-shared/SKILL.md) — Global flags and auth
- [gws-apps-script](../gws-apps-script/SKILL.md) — All manage and execute apps script projects commands
47 changes: 47 additions & 0 deletions skills/gws-apps-script-pull/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
name: gws-apps-script-pull
version: 1.0.0
description: "Google Apps Script: Download project files to local directory."
metadata:
openclaw:
category: "productivity"
requires:
bins: ["gws"]
cliHelp: "gws apps-script +pull --help"
---

# apps-script +pull

> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it.

Download project files to local directory

## Usage

```bash
gws apps-script +pull
```

## Flags

| Flag | Required | Default | Description |
|------|----------|---------|-------------|
| `--script` | — | — | Script Project ID (reads .clasp.json if omitted) |
| `--dir` | — | — | Output directory (reads .clasp.json rootDir, or defaults to current dir) |

## Examples

```bash
gws script +pull --script SCRIPT_ID
gws script +pull --script SCRIPT_ID --dir ./src
gws script +pull # uses .clasp.json
FILES CREATED:
SERVER_JS → {name}.gs
HTML → {name}.html
JSON → appsscript.json
```

## See Also

- [gws-shared](../gws-shared/SKILL.md) — Global flags and auth
- [gws-apps-script](../gws-apps-script/SKILL.md) — All manage and execute apps script projects commands
7 changes: 4 additions & 3 deletions skills/gws-apps-script-push/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,22 @@ Upload local files to an Apps Script project
## Usage

```bash
gws apps-script +push --script <ID>
gws apps-script +push
```

## Flags

| Flag | Required | Default | Description |
|------|----------|---------|-------------|
| `--script` | | — | Script Project ID |
| `--dir` | — | — | Directory containing script files (defaults to current dir) |
| `--script` | | — | Script Project ID (reads .clasp.json if omitted) |
| `--dir` | — | — | Directory containing script files (reads .clasp.json rootDir, or defaults to current dir) |

## Examples

```bash
gws script +push --script SCRIPT_ID
gws script +push --script SCRIPT_ID --dir ./src
gws script +push # uses .clasp.json
```

## Tips
Expand Down
50 changes: 50 additions & 0 deletions skills/gws-apps-script-run/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
name: gws-apps-script-run
version: 1.0.0
description: "Google Apps Script: Execute a function in the script."
metadata:
openclaw:
category: "productivity"
requires:
bins: ["gws"]
cliHelp: "gws apps-script +run --help"
---

# apps-script +run

> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it.

Execute a function in the script

## Usage

```bash
gws apps-script +run --function <NAME>
```

## Flags

| Flag | Required | Default | Description |
|------|----------|---------|-------------|
| `--script` | — | — | Script Project ID (reads .clasp.json if omitted) |
| `--function` | ✓ | — | Function name to execute |
| `--dev-mode` | — | — | Run the script in dev mode (HEAD deployment) |

## Examples

```bash
gws script +run --script SCRIPT_ID --function main
gws script +run --function main # uses .clasp.json
gws script +run --function main --dev-mode
SETUP REQUIREMENTS:
1. Auth with cloud-platform scope: gws auth login
2. Link the script to your OAuth client's GCP project:
Open the script editor (gws apps-script +open) → Project Settings →
Change GCP project → enter your project number.
3. Add to appsscript.json: "executionApi": {"access": "MYSELF"}
```

## See Also

- [gws-shared](../gws-shared/SKILL.md) — Global flags and auth
- [gws-apps-script](../gws-apps-script/SKILL.md) — All manage and execute apps script projects commands
4 changes: 4 additions & 0 deletions skills/gws-apps-script/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ gws apps-script <resource> <method> [flags]
| Command | Description |
|---------|-------------|
| [`+push`](../gws-apps-script-push/SKILL.md) | Upload local files to an Apps Script project |
| [`+pull`](../gws-apps-script-pull/SKILL.md) | Download project files to local directory |
| [`+open`](../gws-apps-script-open/SKILL.md) | Open the script editor in your browser |
| [`+run`](../gws-apps-script-run/SKILL.md) | Execute a function in the script |
| [`+logs`](../gws-apps-script-logs/SKILL.md) | View execution logs for the script |

## API Resources

Expand Down
Loading
Loading