fathom-ci-integration

v2026.09.24

Test Fathom integrations in CI/CD pipelines. Trigger with phrases like "fathom CI", "fathom github actions", "test fathom pipeline".

GitHub
安装命令
npx skhub add jeremylongshore/fathom-ci-integration
Markdown
SKILL.md

Fathom CI Integration

Prerequisites

  • A protected repository, mocked fixtures, required checks, and a separate scoped development credential for optional integration tests.

Instructions

  1. Run deterministic schema/mapping/template/unit checks on pull requests without credentials.
  2. Run live synthetic integration checks only from trusted protected workflows.
  3. Bound retries and resources, retain redacted evidence, and keep production deployment approval separate.

Output

  • A credential-free PR validation lane and a trusted development integration lane with redacted receipts.

Examples

Run mocked meeting/CRM mapping tests on every pull request, then execute one synthetic protected-branch check using a development secret. If it fails, record opaque IDs/status and back off; never expose Fathom/CRM credentials or real meeting data to forked code.

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

# .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

// 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

// 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 IssueCauseFix
401 UnauthorizedInvalid or expired API keyRegenerate key at fathom.video settings
Empty meetings listNo recordings in accountCreate a test meeting or use sandbox account
Transcript parsing failsMeeting still processingAdd retry with 30s delay for recent meetings
Webhook signature mismatchWrong signing secret in CIVerify FATHOM_WEBHOOK_SECRET matches dashboard config
Rate limit (429)Too many API calls in testsAdd request throttling between test cases

Resources

Next Steps

For deployment, see fathom-deploy-integration.

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

skills/.curated/fathom-ci-integration

默认分支

main

最新提交

e5a6c3b

Tree SHA

c2dc8e8