Gamma Core Workflow BSAFE
Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.
Overview
Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.
4f83675ca38aOBSERVED · 2026-10-08Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: gamma-core-workflow-b description: 'Generate from templates, retrieve exports, and manage sharing via Gamma API. Use when creating content from template gammas, downloading PDF/PPTX/PNG exports, or configuring sharing and folder organization. Trigger: "gamma template", "gamma export", "gamma download PDF", "gamma PPTX", "gamma sharing", "gamma from template". ' allowed-tools: Read, Write, Edit, Bash(curl:*), Bash(node:*) version: 1.13.0 license: MIT author: Jeremy Longshore <[email protected]> tags: - saas - gamma - workflow - export - templates compatibility: Designed for Claude Code --- # Gamma Core Workflow B: Templates & Export ## Output Record opaque document/template ID, approved export destination, owner, review status, and next action. Keep presentation content, viewer data, and credentials in authorized systems. ## Examples Export a fictional staging template to an approved test destination, verify an unapproved destination is denied, and ensure a rerun does not create duplicate exports. ## Overview Use Gamma's template-based generation (`POST /v1.0/generations/from-template`) and export retrieval (`GET /v1.0/generations/{id}/files`) endpoints. Template generation lets you replicate a single-page gamma template across multiple variations. Export retrieval gives you downloadable PDF, PPTX, and PNG files. ## Prerequisites - Completed `gamma-core-workflow-a` - A template gamma with exactly one page (created in the Gamma app) - Understanding of the generate-poll-retrieve pattern ## Key Concepts - **Template gamma**: A regular gamma with exactly one page, used as a repeatable template - **gammaId**: Found in the gamma URL or copied from the app - **Export URLs**: Temporary download links returned after generation — download promptly as they expire ## Instructions ### Step 1: Create from Template ```typescript import { createGammaClient, pollUntilDone } from "./lib/gamma"; const gamma = createGammaClient({ apiKey: process.env.GAMMA_API_KEY! }); // POST /v1.0/generations/from-template // The template gamma MUST have exactly one page async function generateFromTemplate( templateGammaId: string, prompt: string, options: { themeId?: string; exportAs?: "pdf" | "pptx" | "png"; imageStyle?: string; } = {} ) { const { generationId } = await gamma.generateFromTemplate({ gammaId: templateGammaId, prompt, themeId: options.themeId, exportAs: options.exportAs, imageOptions: options.imageStyle ? { style: options.imageStyle } : undefined, }); return pollUntilDone(gamma, generationId); } // Usage: generate a sales proposal from a template const result = await generateFromTemplate( "gamma_template_abc123", // Your one-page template ID "Create a sales proposal for Acme Corp. Highlight our cloud migration services, 99.9% uptime SLA, and 24/7 support.", { exportAs: "pdf", imageStyle: "corporate professional" } ); console.log(`View: ${result.gammaUrl}`); console.log(`Download: ${result.exportUrl}`); ``` ### Step 2: Batch Template Generation ```typescript // Generate multiple variations from the same template const clients = [ { name: "Acme Corp", focus: "cloud migration" }, { name: "TechStart Inc", focus: "AI implementation" }, { name: "GlobalBank", focus: "security compliance" }, ]; import pLimit from "p-limit"; const limit = pLimit(2); // Respect rate limits const proposals = await Promise.allSettled( clients.map((client) => limit(() => generateFromTemplate( "gamma_template_abc123", `Proposal for ${client.name} focusing on ${client.focus}. Include pricing tier for enterprise. Reference their industry.`, { exportAs: "pptx" } ) ) ) ); proposals.forEach((r, i) => { const status = r.status === "fulfilled" ? r.value.gammaUrl : `FAILED: ${r.reason}`; console.log(`${clients[i].name}: ${status}`); }); ``` ### Step 3: Export Format Selection ```typescript // Export is specified at generation time via `exportAs` // You cannot export an already-generated gamma via the API // Instead, generate with the desired export format // PDF export — best for sharing externally const pdfResult = await gamma.generate({ content: "Annual report for 2025", outputFormat: "document", exportAs: "pdf", }); // PPTX export — for editing in PowerPoint/Google Slides // Note: PPTX exports may have layout shifts and font differences const pptxResult = await gamma.generate({ content: "Team kickoff presentation", outputFormat: "presentation", exportAs: "pptx", }); // PNG export — for thumbnails or social sharing const pngResult = await gamma.generate({ content: "Product announcement graphic", outputFormat: "social_post", exportAs: "png", }); ``` ### Step 4: Retrieve Export Files ```typescript // After generation completes, exportUrl is in the poll response // Download files promptly — URLs expire after a period import { writeFile } from "node:fs/promises"; async function downloadExport(generationId: string, outputPath: string) { // Poll until complete const result = await pollUntilDone(gamma, generationId); if (!result.exportUrl) { throw new Error("No export URL — did you specify exportAs?"); } // Download the file const response = await fetch(result.exportUrl); if (!response.ok) throw new Error(`Download failed: ${response.status}`); const buffer = Buffer.from(await response.arrayBuffer()); await writeFile(outputPath, buffer); console.log(`Saved to ${outputPath} (${buffer.length} bytes)`); } // Usage const { generationId } = await gamma.generate({ content: "Sales deck for Q1 review", outputFormat: "presentation", exportAs: "pdf", }); await downloadExport(generationId, "./output/q1-review.pdf"); ``` ### Step 5: Sharing Configuration ```typescript // Configure who can access the generated gamma const { generationId } = await gamma.generate({ content: "Internal strategy document", outputFormat: "do
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (0)
No findings outside the package's declared scope.
Gates applied: no_behavioural_pass.
4f83675ca38afull audit observations/trust-audit/skill/jeremylongshore__gamma-core-workflow-b.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | 4f83675ca38a | SAFE | B | 89 | first audit |
Questions
What does the Gamma Core Workflow B skill do?
Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.
Is Gamma Core Workflow B safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Gamma Core Workflow B access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
Which assistants does Gamma Core Workflow B work with?
Its documentation mentions claude-code. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (4f83675ca38a), read on 2026-10-08. The repository is watched, and a new audit runs when it changes — this is the first audit.