# Gws Slides Analyzer

> Search, read, create, and add diagrams to Google Slides presentations. Use when the user asks to find a presentation, read slide content, create a new Google Slides deck, or add visual diagrams to existing slides. Uses the Google Workspace CLI (gws). Requires prior authentication via `gws auth login` or a service account credential file.

- **Type:** Skill
- **Install:** `agentstack add skill-aipcc-cicd-claudio-skills-gws-slides-analyzer`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [aipcc-cicd](https://agentstack.voostack.com/s/aipcc-cicd)
- **Installs:** 0
- **Category:** [Security](https://agentstack.voostack.com/c/security)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [aipcc-cicd](https://github.com/aipcc-cicd)
- **Source:** https://github.com/aipcc-cicd/claudio-skills/tree/main/claudio-plugin/skills/gws-slides-analyzer

## Install

```sh
agentstack add skill-aipcc-cicd-claudio-skills-gws-slides-analyzer
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Google Slides Analyzer

## Overview

Search, read, create, and add visual diagrams to Google Slides presentations using the [Google Workspace CLI](https://github.com/googleworkspace/cli) (`gws`).

**Prerequisites:**
- `gws` command is available and in PATH
- User is already authenticated (`gws auth login` or service account)
- `jq` for JSON parsing
- `python3` for presentation creation and diagrams

## Authentication

| Method | How to set up |
|--------|--------------|
| Interactive OAuth | `gws auth login` — browser-based consent flow |
| Service Account | Set `GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/sa.json` |
| Pre-obtained token | Set `GOOGLE_WORKSPACE_CLI_TOKEN=` |

## Available Scripts

### `search_slides.sh`

Search for Google Slides presentations by name or content.

**Usage:**
```bash
/output/gws-slides-analyzer/scripts/search_slides.sh  [OPTIONS]
```

**Options:**

| Option | Default | Description |
|--------|---------|-------------|
| `--limit N` | `20` | Maximum results |
| `--human` | — | Human-readable table output |

**Examples:**
```bash
/output/gws-slides-analyzer/scripts/search_slides.sh "quarterly review"
/output/gws-slides-analyzer/scripts/search_slides.sh "portfolio" --limit 5 --human
```

---

### `read_slide.sh`

Read the text content of a Google Slides presentation.

**Usage:**
```bash
/output/gws-slides-analyzer/scripts/read_slide.sh  [OPTIONS]
```

**Options:**

| Option | Default | Description |
|--------|---------|-------------|
| `--human` | — | Print slide content in readable format |

**Examples:**
```bash
/output/gws-slides-analyzer/scripts/read_slide.sh 
/output/gws-slides-analyzer/scripts/read_slide.sh  --human
```

---

### `create_presentation.sh`

Create a new Google Slides presentation, or overwrite an existing one, from a JSON content file.

**Usage:**
```bash
# Create new
/output/gws-slides-analyzer/scripts/create_presentation.sh \
  --title "My Deck" --content /path/to/content.json [--human]

# Overwrite existing
/output/gws-slides-analyzer/scripts/create_presentation.sh \
  --presentation-id  --content /path/to/content.json [--human]
```

**Content JSON format:**
```json
{
  "slides": [
    {"layout": "TITLE",        "title": "Presentation Title", "subtitle": "Subtitle"},
    {"layout": "SECTION_HEADER","title": "Section Name",      "subtitle": "Optional"},
    {"layout": "TITLE_AND_BODY","title": "Slide Title",       "body": ["Bullet 1", "Bullet 2"]},
    {"layout": "TITLE_ONLY",   "title": "Title only slide"},
    {"layoutId": "", "title": "Using a branded layout by object ID"}
  ]
}
```

**Supported predefined layouts:**

| Layout | Placeholders | Best for |
|--------|-------------|----------|
| `TITLE` | title + subtitle | Cover slide |
| `SECTION_HEADER` | title + subtitle | Section dividers |
| `TITLE_AND_BODY` | title + body (bullets) | Content slides |
| `TITLE_ONLY` | title | Visual slides |
| `BLANK` | none | Custom layouts |

Use `layoutId` (object ID from the presentation's layouts) instead of `layout` when working with branded templates that have custom masters.

---

### `add_diagrams.py`

Add visual diagrams to specific slides in an existing presentation. Targets slides by their title.

**Usage:**
```bash
python3 /output/gws-slides-analyzer/scripts/add_diagrams.py \
  --presentation-id  \
  --target "Slide Title=" \
  [--target "Another Slide=" ...]
```

**Diagram types:**

| Type | Description |
|------|-------------|
| `layer` | Stacked horizontal bars — for architecture/layer diagrams |
| `table` | 3-column comparison table with styled header row |
| `two-column` | Side-by-side comparison boxes with shared footer bar |
| `three-box` | Three product/concept boxes with role tags and arrows |

**Examples:**
```bash
python3 /output/gws-slides-analyzer/scripts/add_diagrams.py \
  --presentation-id  \
  --target "Architecture Overview=layer" \
  --target "Product Comparison=table" \
  --target "A vs B=two-column" \
  --target "How It Works=three-box"
```

**Notes:**
- Old diagram shapes on the targeted slides are removed and recreated
- Body placeholder text on targeted slides is cleared to make room
- Slide canvas dimensions are hardcoded constants (13.33" × 7.5" standard widescreen)
- The `table`, `two-column`, and `three-box` diagram types contain Red Hat product content (OpenShift AI, RHEL AI, RHAIIS) and are not generic

---

## Common Workflows

### Find and Read a Presentation

```bash
# Step 1: Search
/output/gws-slides-analyzer/scripts/search_slides.sh "quarterly review"

# Step 2: Read using the ID from results
/output/gws-slides-analyzer/scripts/read_slide.sh  --human
```

### Create a Presentation from Scratch

```bash
cat > /tmp/my_slides.json  \
  --content /tmp/my_slides.json \
  --human
```

### Add Diagrams to Specific Slides

```bash
python3 /output/gws-slides-analyzer/scripts/add_diagrams.py \
  --presentation-id  \
  --target "Architecture=layer" \
  --target "Comparison=table"
```

## Error Handling

| Scenario | Behavior |
|----------|----------|
| Not authenticated | `gws` exits with auth error; run `gws auth login` |
| Presentation not found | `gws` exits with 404 error |
| No permission | `gws` exits with 403 error |
| No search results | Returns `{"total": 0, "files": []}` |
| Invalid predefined layout | Google Slides API rejects the createSlide request |
| Slide title not found | Script reports `NOT FOUND` and skips that target |

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [aipcc-cicd](https://github.com/aipcc-cicd)
- **Source:** [aipcc-cicd/claudio-skills](https://github.com/aipcc-cicd/claudio-skills)
- **License:** Apache-2.0

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-aipcc-cicd-claudio-skills-gws-slides-analyzer
- Seller: https://agentstack.voostack.com/s/aipcc-cicd
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
