Sign in

CI/CD Integration

Automatically update your Yapture Studio listing whenever you push changes to your repo.

The yapture-studio.json Convention

Maintain a yapture-studio.json file in your repo root. This is the source of truth for your listing data.

{
  "headline": "Design. Build. Ship.",
  "description": "Full-stack design and development agency.",
  "specialties": ["DEVELOPMENT", "DESIGN", "DEVOPS"],
  "websiteUrl": "https://foobar.studio"
}

GitHub Actions (Recommended)

Add this workflow to .github/workflows/sync-listing.yml:

name: Sync Yapture Studio Listing

on:
  push:
    branches: [main]
    paths:
      - 'yapture-studio.json'

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Sync listing
        run: |
          curl -sf -X PATCH \
            "https://studio-registry.example.invalid/provider/studio/listing" \
            -H "Authorization: Bearer ${{ secrets.YAPTURE_STUDIO_API_KEY }}" \
            -H "Content-Type: application/json" \
            -d @yapture-studio.json \
          && echo "Listing synced" \
          || { echo "Sync failed"; exit 1; }
Setup: Add YAPTURE_STUDIO_API_KEY to your repo's Settings → Secrets → Actions.

SDK-based Sync Script

For more complex sync logic (conditional fields, README extraction, etc.):

#!/usr/bin/env bun
// scripts/sync-listing.ts
import { StudioClient } from '@yapture/studio-sdk';
import { readFileSync } from 'fs';

const client = new StudioClient({
  apiKey: process.env.YAPTURE_STUDIO_API_KEY!,
});

const listing = JSON.parse(readFileSync('yapture-studio.json', 'utf-8'));

// Optionally enrich from other sources
const readme = readFileSync('README.md', 'utf-8');
const descMatch = readme.match(/^## About\n\n(.+?)\n\n/ms);
if (descMatch) listing.description = descMatch[1];

await client.providers.update('your-slug', listing);
console.log('Listing synced');

Other CI Systems

The sync is a single cURL command — it works anywhere:

GitLab CI

sync-listing:
  stage: deploy
  rules:
    - changes: [yapture-studio.json]
  script:
    - curl -sf -X PATCH "$ADMIN_URL/provider/studio/listing"
        -H "Authorization: Bearer $YAPTURE_STUDIO_API_KEY"
        -H "Content-Type: application/json"
        -d @yapture-studio.json

Local / Manual

YAPTURE_STUDIO_API_KEY=ysk_prov_... bun scripts/sync-listing.ts