Claude-code-plugins-plus-skills gamma-ci-integration
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/gamma-pack/skills/gamma-ci-integration" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-gamma-ci-integration && rm -rf "$T"
manifest:
plugins/saas-packs/gamma-pack/skills/gamma-ci-integration/SKILL.mdsource content
Gamma CI Integration
Overview
Set up continuous integration for Gamma-powered applications with automated testing and deployment.
Prerequisites
- GitHub repository with Actions enabled
- Gamma test API key
- npm/pnpm project configured
Instructions
Step 1: Create GitHub Actions Workflow
# .github/workflows/gamma-ci.yml name: Gamma CI on: push: branches: [main, develop] pull_request: branches: [main] env: GAMMA_API_KEY: ${{ secrets.GAMMA_API_KEY }} jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm ci - name: Run unit tests run: npm test - name: Run Gamma integration tests run: npm run test:gamma env: GAMMA_MOCK: ${{ github.event_name == 'pull_request' }} - name: Upload coverage uses: codecov/codecov-action@v4 with: files: ./coverage/lcov.info
Step 2: Create Test Scripts
// package.json { "scripts": { "test": "vitest run", "test:gamma": "vitest run --config vitest.gamma.config.ts", "test:gamma:live": "GAMMA_MOCK=false vitest run --config vitest.gamma.config.ts" } }
Step 3: Gamma Test Configuration
// vitest.gamma.config.ts import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { include: ['tests/gamma/**/*.test.ts'], testTimeout: 60000, // Gamma API can be slow # 60000: 1 minute in ms hookTimeout: 30000, # 30000: 30 seconds in ms setupFiles: ['./tests/gamma/setup.ts'], }, });
Step 4: Test Setup with Mocking
// tests/gamma/setup.ts import { beforeAll } from 'vitest'; import { createGammaClient, type GammaClient } from '../../src/client'; const useMock = process.env.GAMMA_MOCK === 'true'; export let gamma: ReturnType<typeof createGammaClient>; beforeAll(() => { if (useMock) { gamma = createMockGammaClient(); } else { gamma = createGammaClient({ apiKey: process.env.GAMMA_API_KEY!, }); } }); function createMockGammaClient() { return { generate: vi.fn().mockResolvedValue({ generationId: 'mock-gen-id' }), poll: vi.fn().mockResolvedValue({ status: 'completed', gammaUrl: 'https://gamma.app/docs/mock-test', exportUrl: 'https://export.gamma.app/mock.pdf', creditsUsed: 10, }), listThemes: vi.fn().mockResolvedValue([{ id: 'theme_1', name: 'Default' }]), listFolders: vi.fn().mockResolvedValue([]), }; }
Step 5: Integration Test Example
// tests/gamma/generation.test.ts import { describe, it, expect } from 'vitest'; import { gamma } from './setup'; describe('Gamma Generation', () => { it('should start a generation', async () => { const result = await gamma.generate({ content: 'CI Test: 1-card overview of testing', outputFormat: 'presentation', }); expect(result.generationId).toBeDefined(); }); it('should list workspace themes', async () => { const themes = await gamma.listThemes(); expect(Array.isArray(themes)).toBe(true); }); });
Step 6: Add Secrets to GitHub
# Using GitHub CLI gh secret set GAMMA_API_KEY --body "your-test-api-key" # Verify secrets gh secret list
Output
- Automated test pipeline running on push/PR
- Mock mode for PR checks (no API calls)
- Live integration tests on main branch
- Coverage reports uploaded
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Secret not found | Missing GitHub secret | Add GAMMA_API_KEY secret |
| Test timeout | Slow API response | Increase testTimeout |
| Mock mismatch | Mock out of sync | Update mock responses |
| Rate limit in CI | Too many test runs | Use mock mode for PRs |
Resources
Next Steps
Proceed to
gamma-deploy-integration for deployment workflows.