agentsclimarketplace

Pilot newsletter automation setup

Skill TeoSlayer/pilot-skills/skills/pilot-newsletter-automation-setup

80+ agent skills for Pilot Protocol — communication, file transfer, trust, task routing, swarm coordination, and more

Install
npx -y skills add TeoSlayer/pilot-skills --skill pilot-newsletter-automation-setup

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Deploy an automated newsletter pipeline with 3 agents. Use this skill when: 1. User wants to set up a newsletter or email automation pipeline 2. User is configuring an agent as part of a newsletter production workflow 3. User asks about content curation, newsletter writing, or email dispatch across agents Do NOT use this skill when: - User wants to send a single announcement (use pilot-announce instead) - User wants to stream data once (use pilot-stream-data instead)

The file declares its own license as AGPL-3.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

7.4 KB, as published. Nobody here has run it

Newsletter Automation Setup

Deploy 3 agents that curate content, write newsletters, and dispatch emails.

Roles

RoleHostnameSkillsPurpose
curator<prefix>-curatorpilot-discover, pilot-stream-data, pilot-archiveAggregates trending content into curated digests
writer<prefix>-writerpilot-task-router, pilot-share, pilot-receiptTransforms content into newsletter copy
mailer<prefix>-mailerpilot-webhook-bridge, pilot-announce, pilot-metricsDispatches emails, tracks delivery metrics

Setup Procedure

Step 1: Ask the user which role this agent should play and what prefix to use.

Step 2: Install the skills for the chosen role:

# For curator:
clawhub install pilot-discover pilot-stream-data pilot-archive

# For writer:
clawhub install pilot-task-router pilot-share pilot-receipt

# For mailer:
clawhub install pilot-webhook-bridge pilot-announce pilot-metrics

Step 3: Set the hostname:

pilotctl --json set-hostname <prefix>-<role>

Step 4: Write the setup manifest:

mkdir -p ~/.pilot/setups
cat > ~/.pilot/setups/newsletter-automation.json << 'MANIFEST'
{
  "setup": "newsletter-automation",
  "setup_name": "Newsletter Automation",
  "role": "<ROLE_ID>",
  "role_name": "<ROLE_NAME>",
  "hostname": "<prefix>-<role>",
  "description": "<ROLE_DESCRIPTION>",
  "skills": { "<skill>": "<contextual description>" },
  "peers": [ { "role": "...", "hostname": "...", "description": "..." } ],
  "data_flows": [ { "direction": "send|receive", "peer": "...", "port": 1002, "topic": "...", "description": "..." } ],
  "handshakes_needed": [ "<peer-hostname>" ]
}
MANIFEST

Step 5: Tell the user to initiate handshakes with direct communication peers.

Manifest Templates Per Role

curator

{
  "setup": "newsletter-automation", "setup_name": "Newsletter Automation",
  "role": "curator", "role_name": "Content Curator",
  "hostname": "<prefix>-curator",
  "description": "Aggregates trending articles, RSS feeds, and industry news into curated content digests.",
  "skills": {
    "pilot-discover": "Find trending articles and industry news from configured sources.",
    "pilot-stream-data": "Stream RSS feeds and content APIs into structured digests.",
    "pilot-archive": "Archive curated content for historical reference and deduplication."
  },
  "peers": [
    { "role": "writer", "hostname": "<prefix>-writer", "description": "Receives curated content for newsletter writing" },
    { "role": "mailer", "hostname": "<prefix>-mailer", "description": "Final stage — does not communicate directly" }
  ],
  "data_flows": [
    { "direction": "send", "peer": "<prefix>-writer", "port": 1002, "topic": "content-digest", "description": "Curated content digest with sources and summaries" }
  ],
  "handshakes_needed": ["<prefix>-writer"]
}

writer

{
  "setup": "newsletter-automation", "setup_name": "Newsletter Automation",
  "role": "writer", "role_name": "Newsletter Writer",
  "hostname": "<prefix>-writer",
  "description": "Transforms curated content into engaging newsletter copy with subject lines and sections.",
  "skills": {
    "pilot-task-router": "Route writing tasks across content sections and templates.",
    "pilot-share": "Share draft previews with other agents for review.",
    "pilot-receipt": "Confirm receipt of curated content from curator."
  },
  "peers": [
    { "role": "curator", "hostname": "<prefix>-curator", "description": "Sends curated content digests" },
    { "role": "mailer", "hostname": "<prefix>-mailer", "description": "Receives newsletter drafts for delivery" }
  ],
  "data_flows": [
    { "direction": "receive", "peer": "<prefix>-curator", "port": 1002, "topic": "content-digest", "description": "Curated content digest with sources and summaries" },
    { "direction": "send", "peer": "<prefix>-mailer", "port": 1002, "topic": "newsletter-draft", "description": "Newsletter draft with subject line and HTML body" }
  ],
  "handshakes_needed": ["<prefix>-curator", "<prefix>-mailer"]
}

mailer

{
  "setup": "newsletter-automation", "setup_name": "Newsletter Automation",
  "role": "mailer", "role_name": "Email Dispatcher",
  "hostname": "<prefix>-mailer",
  "description": "Formats newsletters for email delivery, manages subscriber segments, tracks open rates.",
  "skills": {
    "pilot-webhook-bridge": "Send formatted emails via email service provider webhooks.",
    "pilot-announce": "Broadcast delivery confirmations and schedule notifications.",
    "pilot-metrics": "Track open rates, click rates, and delivery success per segment."
  },
  "peers": [
    { "role": "curator", "hostname": "<prefix>-curator", "description": "First stage — does not communicate directly" },
    { "role": "writer", "hostname": "<prefix>-writer", "description": "Sends newsletter drafts for delivery" }
  ],
  "data_flows": [
    { "direction": "receive", "peer": "<prefix>-writer", "port": 1002, "topic": "newsletter-draft", "description": "Newsletter draft with subject line and HTML body" },
    { "direction": "send", "peer": "external", "port": 443, "topic": "email-dispatch", "description": "Email dispatch to subscriber segments" }
  ],
  "handshakes_needed": ["<prefix>-writer"]
}

Data Flows

  • curator -> writer : content-digest events (port 1002)
  • writer -> mailer : newsletter-draft events (port 1002)
  • mailer -> external : email-dispatch via webhook (port 443)

Handshakes

# curator and writer handshake with each other:
pilotctl --json handshake <prefix>-writer "setup: newsletter-automation"
pilotctl --json handshake <prefix>-curator "setup: newsletter-automation"

# writer and mailer handshake with each other:
pilotctl --json handshake <prefix>-mailer "setup: newsletter-automation"
pilotctl --json handshake <prefix>-writer "setup: newsletter-automation"

Workflow Example

# On writer — subscribe to content digests:
pilotctl --json subscribe <prefix>-curator content-digest

# On mailer — subscribe to newsletter drafts:
pilotctl --json subscribe <prefix>-writer newsletter-draft

# On curator — publish a content digest:
pilotctl --json publish <prefix>-writer content-digest '{"date":"2026-04-10","articles":[{"title":"AI Agents in Production","url":"https://example.com/ai-agents"}],"topic":"AI & DevOps"}'

# On writer — publish a newsletter draft:
pilotctl --json publish <prefix>-mailer newsletter-draft '{"subject":"This Week in AI","sections":[{"heading":"Top Story","body":"AI agents are going mainstream..."}]}'

Dependencies

Requires pilot-protocol skill, pilotctl binary, clawhub binary, and a running daemon.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.