Agent skill
plusvibe-campaign
Create the PlusVibe campaign from sequence.json, connect every active Google inbox, set daily limit = inboxes x 15 with a 50/50 new vs follow-up split, plain text and no tracking, and upload leads with every column as a custom variable.
Filed under Outbound email.
From sccsadmin11/outbound-gtm-sc · 11 skill entries · 0 · pushed 2026-10-22
What it does when it runs
Create the PlusVibe campaign from sequence.json, connect every active Google inbox, set daily limit = inboxes x 15 with a 50/50 new vs follow-up split, plain text and no tracking, and upload leads with every column as a custom variable. Never launches.
Automated analysis of the skill and the 2 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- PLUSVIBE_API_KEY
- Hosts it reaches
- api.plusvibe.ai
- app.plusvibe.ai
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- shell
Ask about plusvibe-campaign
Opens your assistant with this page's recorded context. Check the linked sources before relying on it.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/sccsadmin11/outbound-gtm-sc.git /tmp/outbound-gtm-sc git -C /tmp/outbound-gtm-sc sparse-checkout set "09-plusvibe-campaign" mkdir -p ~/.claude/skills/plusvibe-campaign cp -R "/tmp/outbound-gtm-sc/09-plusvibe-campaign/." ~/.claude/skills/plusvibe-campaign/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
Before you install: this skill will not complete its job on a bare agent. It needs PLUSVIBE_API_KEY, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from sccsadmin11/outbound-gtm-sc/blob/fc996416957ff6232cc00c3b5c94d601b68e1d61/09-plusvibe-campaign/SKILL.md, which is licensed MIT (repository). 417 words, 9 headings.
09 PlusVibe campaign
Purpose
Turn the checked copy and verified leads into a ready-to-launch PlusVibe campaign with the same settings every time.
Inputs
sequence.json(skill 07) and a passingspam_report.json(skill 08). The script refuses to run without a passing report.verified_leads.csv(skill 06).- Optional
inboxes_connected.csv(skill 01) to limit the campaign to the inboxes you just set up. Without it, every ACTIVE Google inbox in the workspace is used.
Outputs
- A PlusVibe campaign (not launched).
campaign_state.json: campaign id, inbox emails and ids, daily limit, lead counts. Skill 11 reads this.
Env vars
| Var | Where to get it |
|---|---|
PLUSVIBE_API_KEY | https://app.plusvibe.ai/v2/settings/api-access |
PLUSVIBE_WORKSPACE_ID | Same page (workspace id) |
Settings it applies
| Setting | Value | API field |
|---|---|---|
| Daily limit | ACTIVE Google inboxes x 15 | schedules.daily_limit |
| New vs follow-up | 50/50 | send_priority: 0.5, daily_limit_new_lead = half the limit |
| Format | Plain text | send_as_txt: "yes" |
| Tracking | Off | is_emailopened_tracking: "no" |
| Unsubscribe link | Off (the opt-out line is in the copy) | is_unsubscribed_link: "no" |
| Stop on reply | On | stop_on_lead_replied: "yes" |
| Schedule | Mon-Fri 09:00-17:00 America/New_York | schedules.days/timing/timezone |
| Inboxes | Every connected ACTIVE Google inbox | email_accounts |
| Sequence | Step 1 = Email 1 A/B/C, step 2 = Email 2 A/B | sequences |
| Leads | All CSV columns as custom variables | /lead/add custom_variables |
Calls: POST /campaign/add/campaign, PATCH /campaign/update/campaign, POST /lead/add, and read-only GET /account/list. Base https://api.plusvibe.ai/api/v1, header x-api-key.
Steps (agent run instructions)
- Dry run. This prints every payload. With no keys set, it uses the inboxes CSV:
python 09-plusvibe-campaign/scripts/create_campaign.py --name "Acme Q3 fleets" \ --sequence sequence.json --leads verified_leads.csv --spam-report spam_report.json \ --inboxes inboxes_connected.csv --dry-run - Check the inbox count, the daily limit (= inboxes x 15) and the first lead's custom variables.
- Run it for real (same command without
--dry-run). This creates the campaign but does not launch it. - To re-apply settings to an existing campaign, add
--campaign-id <id>.
Open TODOs
schedules: the API schema says object, the official example sends a list. The default islist. If the API rejects it, use--schedule-format object.- No documented max leads per
/lead/addcall; the script sends batches of 100.
Handoff
campaign_state.json -> 10-speed-to-lead (webhook on the campaign) and 11-qa (checks, then launch).
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- campaign-naming-convention-builder by irinabuht12-oss · 6,620
- campaign-copywriting by growthenginenowoslawski · 797
- campaign-strategy by growthenginenowoslawski · 797
- smartlead-campaign-upload-public by growthenginenowoslawski · 797
- campaign-postmortem by zapier · 354
- mega-campaign-generator by zapier · 354
- abm-campaign by explorium-ai · 348
- campaign-dashboard by Othmane-Khadri · 323
Need help setting it up?
This page tells you what plusvibe-campaign does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.