mcpbeat Sign in

Publish Agent Skill

Publish a single demo to v0 and optionally create Typefully drafts. Use when the user says "publish", "publish to v0", or "create typefully draft" for a demo.

659 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
6
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/vercel-labs/workflow-campaign-demos --skill publish

The instruction itself

7 sections, as written by the author

Publish a Demo

Publish a single workflow demo to v0 (and optionally Typefully) with pre-flight checks.

Workflow

Step 1: Select a demo

Present the user with a list of available demos. Discover them by listing directories in the project root that contain a package.json (skip directories starting with .).

Use AskUserQuestion with the demos as options so the user can pick one.

Step 2: Pre-flight checks

Before publishing, verify:

  • Uncommitted changes — Run git status on the demo directory. If there are uncommitted changes touching the selected demo's prefix, warn the user and ask whether to continue.
  • Subtree sync — Run these git commands from the project root:
   git fetch workflow-{slug} main
   git rev-parse workflow-{slug}/main        → remote SHA
   git subtree split --prefix={slug}         → local SHA

If the SHAs differ, the subtree is out of sync. Offer to push it:

   bun .scripts/sync.ts push-one

Let the user pick the demo interactively, or run:

   git subtree push --prefix={slug} workflow-{slug} main
  • Environment — Confirm V0_API_KEY is set. If publishing to Typefully, confirm TYPEFULLY_API_KEY exists in .env.local.

Step 3: Publish to v0

Run:

bun .scripts/v0-publish-public.ts {slug} -y --skip-sync-check

Use --skip-sync-check because we already verified sync in step 2. Use -y to skip the interactive confirmation.

Report the v0 URL from the output.

Step 4: Ask about Typefully

Ask the user if they also want to create Typefully thread drafts for this demo.

If yes, check that .posts/{slug}.md exists. If it does, run:

bun .scripts/typefully-publish.ts {slug} --validate

If validation passes, ask which variant(s) to publish (A, B, C, or all), then run:

bun .scripts/typefully-publish.ts {slug} --variant {variant}

Or without --variant for all variants.

Report the Typefully draft URLs from the output.

Notes

  • The .posts/ directory contains social media thread content (renamed from posts/)
  • The v0 publish script uses the v0-sdk to create a public chat from the demo's GitHub repo (vercel-labs/workflow-{slug})
  • The typefully script orchestrates: v0 publish → ray.so image generation → Typefully API draft creation
  • If running typefully-publish standalone, it will also call v0-publish internally, so skip step 3 in that case

How to use it

Copy the folder

Take vercel-labs/publish from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.