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