Install
$ agentstack add skill-aipcc-cicd-claudio-skills-gws-slides-analyzer ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Google Slides Analyzer
Overview
Search, read, create, and add visual diagrams to Google Slides presentations using the Google Workspace CLI (gws).
Prerequisites:
gwscommand is available and in PATH- User is already authenticated (
gws auth loginor service account) jqfor JSON parsingpython3for 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:
/output/gws-slides-analyzer/scripts/search_slides.sh [OPTIONS]
Options:
| Option | Default | Description | |--------|---------|-------------| | --limit N | 20 | Maximum results | | --human | — | Human-readable table output |
Examples:
/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:
/output/gws-slides-analyzer/scripts/read_slide.sh [OPTIONS]
Options:
| Option | Default | Description | |--------|---------|-------------| | --human | — | Print slide content in readable format |
Examples:
/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:
# 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:
{
"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:
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:
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, andthree-boxdiagram types contain Red Hat product content (OpenShift AI, RHEL AI, RHAIIS) and are not generic
Common Workflows
Find and Read a Presentation
# 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
cat > /tmp/my_slides.json \
--content /tmp/my_slides.json \
--human
Add Diagrams to Specific Slides
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
- Source: aipcc-cicd/claudio-skills
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.