Manages cPanel email accounts and forwarders for infrastructure automation.

Install

mkdir -p .claude/skills/cpanel && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17568" && unzip -o skill.zip -d .claude/skills/cpanel && rm skill.zip

Installs to .claude/skills/cpanel

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

How to manage cPanel email accounts, forwarders, and Instantly integration for Tesseract sending infrastructure
111 charsno explicit “when” trigger
Intermediate

Key capabilities

  • List existing cPanel email accounts
  • Create new cPanel email accounts with specified password and quota
  • List email forwarders for a given domain
  • Add new email forwarders to specified email addresses
  • Provision email accounts and add them to Instantly for warmup
  • Set up forwarders for Instantly sending accounts to a central inbox

How it works

The skill uses a CpanelConnector to interact with the cPanel UAPI. It sends requests to manage email accounts and forwarders, supporting actions like listing, creating, and adding forwarders.

Inputs & outputs

You give it
cpanel.create_email(email="sales1", password="...", domain="example.com", quota=500)
You get back
New cPanel email account created

When to use cpanel

  • Provisioning new email accounts
  • Setting up email forwarders
  • Managing email server infrastructure

About this skill

cPanel API — Reference Skill

Infrastructure scope: Bluehost/cPanel is used for email infrastructure (Instantly sending accounts, forwarders) and other websites (skampakis.com, thedatascientist.com, etc.). The tesseract.academy WordPress site is hosted on Cloudways, NOT Bluehost.

Authentication

  • cPanel API Token via CPANEL_TOKEN env var
  • Host: CPANEL_HOST env var (skampakis.com — Bluehost, cPanel user: skampaki)
  • Username: CPANEL_USERNAME env var
  • Auth header: Authorization: cpanel <username>:<token>
  • Base URL: https://<host>:2083/execute

Quick Reference: Endpoints

ActionUAPI ModuleKey Params
List email accountsEmail::list_pops
Create email accountEmail::add_popemail, password, domain, quota
List forwardersEmail::list_forwardersdomain
Add forwarderEmail::add_forwarderemail, domain, fwdopt=fwd, fwdemail

Connector Methods

from tesseract_operator.connectors.cpanel import CpanelConnector

cpanel = CpanelConnector(
    host=os.environ["CPANEL_HOST"],
    username=os.environ["CPANEL_USERNAME"],
    token=os.environ["CPANEL_TOKEN"],
    dry_run=False,
)

# List all email accounts
accounts = cpanel.list_emails()

# Create a new email account
cpanel.create_email(email="sales1", password="...", domain="example.com", quota=500)

# List forwarders for a domain
fwds = cpanel.list_forwarders(domain="example.com")

# Add a forwarder
cpanel.add_forwarder(email="sales1", domain="example.com", forward_to="[email protected]")

Scripts

Provision Emails

Create email accounts on cPanel and add them to Instantly for warmup:

python scripts/provision_emails.py \
  --domain tesseract-academy.tech \
  --prefix sales \
  --count 3 \
  --password "SuperSecret123!"

Setup Forwarders

Forward replies from all Instantly sending accounts to a central Gmail inbox:

# Dry run first
python scripts/setup_forwarders.py --forward-to [email protected] --dry-run

# Live run
python scripts/setup_forwarders.py --forward-to [email protected]

This scans all active Instantly campaigns, identifies sending accounts, and creates cPanel forwarders on each one. Skips accounts that already have forwarders.

Current Infrastructure

10 domains on Bluehost cPanel with 26 sending accounts in the active Greek CEOs campaign:

DomainAccounts
academytesseract.com1
globaltesseract.co1
tesseract-academy-ai-web3.com2
tesseract-academy-ai-web3.net2
tesseract-academy-ai-web3.org5
tesseract-academy.com2
tesseract-academy.tech1
tesseractacademy.org5
tesseractacademy.tech3
the-tes-academy.com4

All 26 accounts forward to [email protected].

Naming Conventions (MANDATORY)

  1. Personal over Generic: NEVER use generic prefixes (sales, info, outreach) for outreach accounts unless explicitly requested. Stylianos (Stelios) Kampakis's personal brand is central to the project.
  2. Preferred Patterns:
    • stelios@domain
    • stylianos@domain
    • s.kampakis@domain
    • stelios.kampakis@domain
    • stylianos.kampakis@domain
  3. Confirmation: Always confirm the specific mailbox name with the user before creation if it's not a common pattern or previously used for that domain.

Known Gotchas

  1. OPERATOR_DRY_RUN: The global OPERATOR_DRY_RUN=1 in .env affects OperatorConfig. Scripts that need live API access should use dotenv directly instead of OperatorConfig.
  2. cPanel UAPI uses query params: Even for POST endpoints, pass data as params={} not json_body={}.
  3. Forwarder param name: The destination email param is fwdemail, not forward_to.
  4. Generic Prefix Trap: Avoid generic salesN naming (M-2026-05-05-01).

When not to use it

  • For managing tesseract.academy WordPress site
  • When generic email prefixes are preferred for outreach accounts
  • When `CPANEL_TOKEN`, `CPANEL_HOST`, or `CPANEL_USERNAME` are not set

Prerequisites

CPANEL_TOKENCPANEL_HOSTCPANEL_USERNAME

Limitations

  • tesseract.academy WordPress site is hosted on Cloudways, NOT Bluehost
  • cPanel UAPI uses query params even for POST endpoints
  • Avoid generic `salesN` naming for outreach accounts

How it compares

This skill provides programmatic control over cPanel email infrastructure, enabling automated provisioning and management of email accounts and forwarders, unlike manual cPanel interface usage.

Compared to similar skills

cpanel side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
cpanel (this skill)01moReviewIntermediate
setup121moNo flagsBeginner
tmux202moReviewIntermediate
macos-cleaner161moReviewBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry