Claude-skill-registry gamma-ci-integration
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/gamma-ci-integration" ~/.claude/skills/majiayu000-claude-skill-registry-gamma-ci-integration && rm -rf "$T"
manifest:
skills/data/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 hookTimeout: 30000, setupFiles: ['./tests/gamma/setup.ts'], }, });
Step 4: Test Setup with Mocking
// tests/gamma/setup.ts import { beforeAll, afterAll } from 'vitest'; import { GammaClient } from '@gamma/sdk'; const useMock = process.env.GAMMA_MOCK === 'true'; export let gamma: GammaClient; beforeAll(() => { if (useMock) { gamma = createMockGammaClient(); } else { gamma = new GammaClient({ apiKey: process.env.GAMMA_API_KEY, }); } }); function createMockGammaClient() { return { presentations: { create: vi.fn().mockResolvedValue({ id: 'mock-id', url: 'https://gamma.app/mock/test', title: 'Mock Presentation', }), list: vi.fn().mockResolvedValue([]), get: vi.fn().mockResolvedValue({ id: 'mock-id' }), }, ping: vi.fn().mockResolvedValue({ ok: true }), } as unknown as GammaClient; }
Step 5: Integration Test Example
// tests/gamma/presentation.test.ts import { describe, it, expect } from 'vitest'; import { gamma } from './setup'; describe('Gamma Presentations', () => { it('should create a presentation', async () => { const result = await gamma.presentations.create({ title: 'CI Test Presentation', prompt: 'Test slide for CI', slideCount: 1, }); expect(result.id).toBeDefined(); expect(result.url).toContain('gamma.app'); }); it('should list presentations', async () => { const presentations = await gamma.presentations.list({ limit: 5 }); expect(Array.isArray(presentations)).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.