'Test Fathom integrations in CI/CD pipelines. Trigger with phrases like \"fathom CI\", \"fathom github actions\", \"test fathom pipeline\". '
Scanned 9/12/2026
Install to Claude Code
npx -y skills add thedixitjain/the-mega-skill-library --skill fathom-ci-integration --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Fathom Ci Integration?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/thedixitjain-fathom-ci-integration)More formats (shields.io, HTML) on the badges page.
---
name: fathom-ci-integration
description: "'Test Fathom integrations in CI/CD pipelines. Trigger with phrases like \"fathom CI\", \"fathom github actions\", \"test fathom pipeline\". '"
allowed-tools: "Read, Write, Edit, Bash(gh:*)"
category: devops-and-infra
source_repo: jeremylongshore/claude-code-plugins-plus-skills
source_path: "plugins/saas-packs/fathom-pack/skills/fathom-ci-integration/SKILL.md"
source_url: https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/HEAD/plugins/saas-packs/fathom-pack/skills/fathom-ci-integration/SKILL.md
---
# Fathom CI Integration
## Overview
Set up CI/CD for Fathom meeting intelligence integrations: run unit tests with mocked transcript and action-item responses on every PR, validate live API connectivity against the Fathom meetings endpoint on merge to main. Fathom provides AI-generated meeting summaries, transcripts, and action items, so CI pipelines focus on verifying data parsing logic and webhook handling for real-time meeting events.
## GitHub Actions Workflow
```yaml
# .github/workflows/fathom-ci.yml
name: Fathom CI
on:
pull_request:
paths: ['src/fathom/**', 'tests/**']
push:
branches: [main]
jobs:
unit-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20' }
- run: npm ci
- run: npm test -- --reporter=verbose
integration-tests:
if: github.ref == 'refs/heads/main'
needs: unit-tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20' }
- run: npm ci
- run: npm run test:integration
env:
FATHOM_API_KEY: ${{ secrets.FATHOM_API_KEY }}
```
## Mock-Based Unit Tests
```typescript
// tests/fathom-service.test.ts
import { describe, it, expect, vi } from 'vitest';
import { extractActionItems } from '../src/fathom-service';
const mockMeeting = {
id: 'mtg_abc123',
title: 'Sprint Planning',
date: '2026-04-01T10:00:00Z',
transcript: 'We need to fix the login bug by Friday...',
action_items: [
{ assignee: 'Alice', task: 'Fix login bug', due: '2026-04-05' },
{ assignee: 'Bob', task: 'Update API docs', due: '2026-04-07' },
],
};
vi.mock('../src/fathom-client', () => ({
FathomClient: vi.fn().mockImplementation(() => ({
getMeeting: vi.fn().mockResolvedValue(mockMeeting),
listMeetings: vi.fn().mockResolvedValue({ meetings: [mockMeeting], total: 1 }),
})),
}));
describe('Fathom Service', () => {
it('extracts action items from meeting transcript', async () => {
const items = await extractActionItems('mtg_abc123');
expect(items).toHaveLength(2);
expect(items[0].assignee).toBe('Alice');
});
});
```
## Integration Tests
```typescript
// tests/integration/fathom.integration.test.ts
import { describe, it, expect } from 'vitest';
const hasKey = !!process.env.FATHOM_API_KEY;
describe.skipIf(!hasKey)('Fathom Live API', () => {
it('lists recent meetings', async () => {
const res = await fetch('https://api.fathom.video/v1/meetings?limit=1', {
headers: { Authorization: `Bearer ${process.env.FATHOM_API_KEY}` },
});
expect(res.status).toBe(200);
const body = await res.json();
expect(body).toHaveProperty('meetings');
});
});
```
## Error Handling
| CI Issue | Cause | Fix |
|----------|-------|-----|
| `401 Unauthorized` | Invalid or expired API key | Regenerate key at fathom.video settings |
| Empty meetings list | No recordings in account | Create a test meeting or use sandbox account |
| Transcript parsing fails | Meeting still processing | Add retry with 30s delay for recent meetings |
| Webhook signature mismatch | Wrong signing secret in CI | Verify `FATHOM_WEBHOOK_SECRET` matches dashboard config |
| Rate limit (429) | Too many API calls in tests | Add request throttling between test cases |
## Resources
- Fathom API Documentation
- [GitHub Actions Secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets)
## Next Steps
For deployment, see `fathom-deploy-integration`.
---
**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `plugins/saas-packs/fathom-pack/skills/fathom-ci-integration/SKILL.md`
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!