pp-customer-io
Every Customer.io action a marketer or ops engineer takes — campaigns, broadcasts, segments, deliveries, exports, suppressions, Reverse-ETL — wrapped in named verbs, backed by a local SQLite cache, and served through a bundled MCP server. Trigger phrases: `use customer-io`, `run customer-io`, `trigger a customer.io broadcast`, `send a customer.io transactional message`, `export a customer.io segment`, `check customer.io delivery health`, `audit customer.io suppressions`, `what fraction of segment X opened journey Y in customer.io`.
What this skill does
<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/marketing/customer-io/SKILL.md,
regenerated post-merge by tools/generate-skills/. Hand-edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->
# Customer.io — Printing Press CLI
## Prerequisites: Install the CLI
This skill drives the `customer-io-pp-cli` binary. **You must verify the CLI is installed before invoking any command from this skill.** If it is missing, install it first:
1. Install via the Printing Press installer. It defaults binaries to `$HOME/.local/bin` on macOS/Linux and `%LOCALAPPDATA%\Programs\PrintingPress\bin` on Windows:
```bash
npx -y @mvanhorn/printing-press-library install customer-io --cli-only
```
2. Verify: `customer-io-pp-cli --version`
3. Ensure the reported install directory is on `$PATH` for the agent/runtime that will invoke this skill.
If the `npx` install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.3 or newer):
```bash
go install github.com/mvanhorn/printing-press-library/library/marketing/customer-io/cmd/customer-io-pp-cli@latest
```
If `--version` reports "command not found" after install, the runtime cannot see the binary directory on `$PATH`. Do not proceed with skill commands until verification succeeds.
## When to Use This CLI
Reach for this CLI when you need to do anything in Customer.io that's tedious in the web UI: bulk suppressions with an audit trail, journey funnels cross-cut by segment, customer-360 timelines for incident triage, broadcast pre-flight before a high-stakes send, or Reverse-ETL health checks. It is also the right tool when an agent needs to drive Customer.io — the bundled MCP server exposes the same verbs over stdio and HTTP transports. For raw event ingestion (the Track API) or per-source CDP write keys, prefer one of the official server-side SDKs.
## Unique Capabilities
These capabilities aren't available in any other tool for this API.
### Local state that compounds
- **`campaigns funnel`** — Render a step-by-step journey funnel (sent → delivered → opened → clicked → converted) for one campaign, optionally cross-cut by segment.
_Reach for this when an agent is asked 'what fraction of segment X completed journey Y' — the answer is one query against synced data, not two exports and a spreadsheet._
```bash
customer-io campaigns funnel cmp_482 --segment seg_19 --since 30d --json
```
- **`segments overlap`** — Compute pairwise and multi-way Venn diagrams of segment memberships from the local store.
_Use when validating audience design — 'are my churned-risk and high-value segments overlapping?' — without exporting twice._
```bash
customer-io segments overlap seg_19 seg_42 seg_88 --json
```
- **`customers timeline`** — Chronological per-customer event stream merging identifies, deliveries, suppressions, and segment-membership events from the local store.
_Reach for this on incident triage or 'did the welcome SMS go out to this user?' — one command instead of a UI scroll-fest._
```bash
customer-io customers timeline [email protected] --since 30d --json
```
### Send-time safety
- **`broadcasts preflight`** — Before triggering a broadcast, check target segment size, suppression overlap, and last-sent recency from the local deliveries cache; emit a green/yellow/red verdict with structured reasons.
_Use before any broadcast to avoid double-sending, accidental over-mailing, or 429 storms._
```bash
customer-io broadcasts preflight 123457 bcr_77 --segment seg_19 --json
```
- **`suppressions audit`** — Attribute every suppression in a window to the triggering bounce or complaint delivery (or 'manual' if no preceding event).
_Use when an ops engineer needs to explain why a customer is suppressed, or when auditing complaint-driven churn._
```bash
customer-io suppressions audit --since 30d --reason bounce --json
```
- **`cdp-reverse-etl health`** — Named verb over Reverse-ETL run history with status, row counts, error reasons, and an optional --watch poll mode.
_Use as the daily standup question 'are warehouse syncs healthy?' — replaces three separate api calls + jq filters._
```bash
customer-io cdp-reverse-etl health --since 24h --watch
```
### Audit and provenance
- **`suppressions bulk add`** — Read a CSV or JSONL of email/customer-id, fan out real suppress calls with adaptive throttle, append every call to a local JSONL audit log keyed by date.
_Use for compliance-driven bulk actions where you need to defend later 'who got suppressed when, by whom, with what status code'._
```bash
customer-io suppressions bulk add --from-csv complaints.csv --reason complaint --dry-run
```
- **`deliveries triage`** — Filter live + local deliveries by template + status + window, write a self-contained bundle (summary.md with SQL group-by error reasons, deliveries.jsonl, recipients.txt) ready to paste into an incident doc.
_Pipe the bundle into Claude or a Notion doc for one-shot incident handoff; replaces 30+ minutes of UI scrolling._
```bash
customer-io deliveries triage --template tx_91 --status bounced --since 1h --bundle ./incident-2026-05-07
```
## Command Reference
**broadcasts** — List, inspect, and trigger one-off broadcasts (1 req / 10 s rate-limited)
- `customer-io-pp-cli broadcasts get` — Get one broadcast
- `customer-io-pp-cli broadcasts list` — List broadcasts in an environment
- `customer-io-pp-cli broadcasts metrics` — Read metrics for one broadcast
- `customer-io-pp-cli broadcasts trigger` — Trigger a broadcast (rate-limited to 1 req / 10 s)
**campaigns** — List campaigns and read campaign + journey metrics
- `customer-io-pp-cli campaigns get` — Get one campaign
- `customer-io-pp-cli campaigns journey_metrics` — Read step-by-step journey funnel metrics
- `customer-io-pp-cli campaigns list` — List campaigns in an environment
- `customer-io-pp-cli campaigns metrics` — Read aggregate metrics for a campaign
**cdp_destinations** — List CDP destinations (Premium feature)
- `customer-io-pp-cli cdp_destinations` — List CDP destinations
**cdp_reverse_etl** — List Reverse-ETL syncs (Premium feature)
- `customer-io-pp-cli cdp_reverse_etl` — List Reverse-ETL syncs
**cdp_sources** — List CDP data sources (Premium feature)
- `customer-io-pp-cli cdp_sources` — List CDP sources
**customers** — Manage Customer.io customer profiles within an environment (workspace)
- `customer-io-pp-cli customers get` — Get a customer's attributes
- `customer-io-pp-cli customers list_activities` — List activity events for a customer
- `customer-io-pp-cli customers list_messages` — List messages sent to a customer
- `customer-io-pp-cli customers list_segments` — List the segments a customer belongs to
**deliveries** — Inspect delivery events (sends, opens, clicks, bounces, complaints)
- `customer-io-pp-cli deliveries get` — Get one delivery
- `customer-io-pp-cli deliveries list` — List recent deliveries
**exports** — Start, monitor, and download data exports (segment members, deliveries, customers, etc.)
- `customer-io-pp-cli exports download` — Get the signed download URL for a finished export
- `customer-io-pp-cli exports get` — Get the status of an export
- `customer-io-pp-cli exports list` — List recent exports
**segments** — List segments and inspect segment membership
- `customer-io-pp-cli segments customer_count` — Get the customer count for a segment
- `customer-io-pp-cli segments get` — Get one segment
- `customer-io-pp-cli segments list` — List segments in an environment
- `customer-io-pp-cli segments members` — List customer IDs in a segment
**suppressions** — Suppress and unsuppress customers; the official audit surface for compliance actions
- `customer-io-pp-cli suppressions add` — Suppress a customer
- `customer-io-pp-cli suppressions count` Related in AI Agents
skill-development
IncludedComprehensive meta-skill for creating, managing, validating, auditing, and distributing Claude Code skills and slash commands (unified in v2.1.3+). Provides skill templates, creation workflows, validation patterns, audit checklists, naming conventions, YAML frontmatter guidance, progressive disclosure examples, and best practices lookup. Use when creating new skills, validating existing skills, auditing skill quality, understanding skill architecture, needing skill templates, learning about YAML frontmatter requirements, progressive disclosure patterns, tool restrictions (allowed-tools), skill composition, skill naming conventions, troubleshooting skill activation issues, creating custom slash commands, configuring command frontmatter, using command arguments ($ARGUMENTS, $1, $2), bash execution in commands, file references in commands, command namespacing, plugin commands, MCP slash commands, Skill tool configuration, or deciding between skills vs slash commands. Delegates to docs-management skill for official documentation.
reprompter
IncludedTransform messy prompts into well-structured, effective prompts — single or multi-agent. Use when: "reprompt", "reprompt this", "clean up this prompt", "structure my prompt", rough text needing XML tags and best practices, "reprompter teams", "repromptception", "run with quality", "smart run", "smart agents", multi-agent tasks, audits, parallel work, anything going to agent teams. Don't use when: simple Q&A, pure chat, immediate execution-only tasks. See "Don't Use When" section for details. Outputs: Structured XML/Markdown prompt, quality score (before/after), optional team brief + per-agent sub-prompts, agent team output files. Success criteria: Single mode quality score ≥ 7/10; Repromptception per-agent prompt quality score 8+/10; all required sections present, actionable and specific.
adaptive-compaction
IncludedAdaptive add-on policy and recovery layer that decides WHEN to compact, prune, snapshot, or fork -- replacing fixed-percent auto-compaction across Claude Code, Codex, and MCP-capable hosts. Trigger on auto-compact timing or damage: "when should I compact", "is it safe to compact now or start a fresh session", "auto-compact fires too early/mid-task", "switching to an unrelated task but the window still has space", "context rot", "answers get worse the longer the session runs", "the agent forgot the plan or my decisions after it summarized", "add a layer on top that manages context without changing the agent", raising autoCompactWindow to give the policy room, or installing/tuning a cross-tool compaction policy or PreCompact hook -- even when "compaction" is never said but the problem is context-window pressure or post-summarization memory loss. Do NOT use to summarize a conversation, build RAG, write a summarization prompt (decides WHEN not HOW), or answer max-context-length trivia.
agent-skill-creator
IncludedCreate cross-platform agent skills from workflow descriptions. Activates when users ask to create an agent, automate a repetitive workflow, create a custom skill, or need advanced agent creation. Triggers on phrases like create agent for, automate workflow, create skill for, every day I have to, daily I need to, turn process into agent, need to automate, create a cross-platform skill, validate this skill, export this skill, migrate this skill. Supports single skills, multi-agent suites, transcript processing, template-based creation, interactive configuration, cross-platform export, and spec validation.
llm-wiki
IncludedUse when building or maintaining a persistent personal knowledge base (second brain) in Obsidian where an LLM incrementally ingests sources, updates entity/concept pages, maintains cross-references, and keeps a synthesis current. Triggers include "second brain", "Obsidian wiki", "personal knowledge management", "ingest this paper/article/book", "build a research wiki", "compound knowledge", "Memex", or whenever the user wants knowledge to accumulate across sessions instead of being re-derived by RAG on every query.
skill-master
IncludedAgent Skills authoring, evaluation, and optimization. Create, edit, validate, benchmark, and improve skills following the agentskills.io specification. Use when designing SKILL.md files, structuring skill folders (references, scripts, assets), ingesting external documentation into skills, running trigger evals, benchmarking skill quality, optimizing descriptions, or performing blind A/B comparisons. Keywords: agentskills.io, SKILL.md, skill authoring, eval, benchmark, trigger optimization.