business-email-template – Marketing & SEO skill for AI agents
Business email template register: trigger, sender and recipient type, subject pattern, body structure, personalisation tokens and send checks. Use for repeatable outbound email.
Install the business-email-template skill with one command
Pick the tool you use, copy the command and paste it in your terminal. The skill lands in that tool's skills folder and is ready in your next session.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/business-email-template-28a33.tgz | tar xz -C ~/.claude/skills
Call it in Claude Code: /business-email-template – then describe the task you want done.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/business-email-template-28a33.tgz | tar xz -C ~/.codex/skills
Call it in Codex: $business-email-template – then describe the task you want done.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/business-email-template-28a33.tgz | tar xz -C ~/.hermes/skills
Call it in Hermes Agent: /business-email-template – then describe the task you want done.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/business-email-template-28a33.tgz | tar xz -C ~/.deepcode/skills
Call it in DeepSeek: /business-email-template – then describe the task you want done.
SKILL.md content
Business Email Templates
What it is: the repeatable emails a business actually sends - enquiry reply, quote, invoice, payment reminder, onboarding, complaint, review request, newsletter - with the sendable copy, the authentication records and the accessibility and spam checks each one needs.
Overview
Works out the smallest useful template set for the business in front of it, then builds it
only when asked. The default output is a short recommendation, not a set of email files.
The template register - CSV, SQL DDL, JSON Schema, Notion mapping - is produced on request,
from one field list so the four cannot drift apart.
Layer: Layer 6: Engage. Fits: Starter stage. Table code: n/a.
The rule this table exists to enforce: a template is not the HTML. A template is the
envelope - who it is from, who it is to, what triggers it, what subject pattern it uses, and
whether the domain is allowed to send it - plus the body. Sender Role and Trigger
exist because most "our email looks unprofessional" complaints are a missing trigger and a
missing signature, not a missing design. And every template needs a plain-text version,
which is a separate field here rather than an afterthought inside the HTML.
When to Use This Skill
- email templates, email signatures blocks for body copy, cold outreach
- enquiry reply, quotation, invoice email, payment reminder
- welcome email, onboarding, delivery notification
- complaint response, review request, newsletter, offer
- "our emails go to spam", SPF, DKIM, DMARC, deliverability
- email tone and structure standards
- "make our emails look professional"
Do not use it for: the printed signature block on letterhead and cards
(brand-kit-print-collateral), the mailbox and account register
(company-email-accounts in the operational pack), or marketing campaign automation.
How It Works
Follow the shared execution contract. The module-specific rules below define only domain fields, decisions, calculations, and safety constraints.
Step 1 - Identify intent
Read the request and pick the intent before asking anything.
- "set up" / "build" / "we need" -> artifacts wanted; go to Step 2.
- "ours look bad" / "fix" -> something exists; capture what is sent today, then Step 2.
- "they go to spam" / "review" / "audit" -> a deliverability check, not a build.
- "how do I write ..." -> advice question; answer directly, offer the build only if it helps.
Ask only if this is the highest-value missing fact; otherwise proceed without an opener:
> Q: What is the business called, and what does one line of it actually do?
Step 2 - Ask only what is missing
Treat ambiguous replies as unanswered and ask which explicit option the user means. Record unknown values as Unknown; Unknown is not zero. A record must not be Done when a required check fails.
Skip anything already answered. Ask the rest one at a time, and stop as soon as the
remaining answers would not change the template list.
- Volume - How many emails a day, and who reads them - one person or a team? / Are
they sent from a Gmail/Outlook account, a proper domain mailbox, or a platform?
- Categories - Which of enquiry, quote, invoice, reminder, welcome, complaint, review
request, newsletter actually happen? / Which are sent today, in any form?
- Authentication - Does the business send from its own domain? / Have SPF, DKIM and
DMARC been set up? / Is anything sent through a third-party tool?
- Constraints - Any legal or regulatory wording that must appear - unsubscribe,
sender identity, VAT or GST particulars, a claims address? / Any language the business
must not use?
- Tone - Formal or plain-spoken? / Who signs, by title or by name? / Any sector that
has a required service standard?
Never invent an answer. Domain names, SPF records, DKIM selectors, unsubscribe periods,
legal wording, senders, volumes and metrics the user has not supplied are Unknown.
Step 3 - Hold the internal context
module: business-email-template
intent: null # set up | fix | review | report | import
scale: null # Starter | Growth | Scale, only if the answer changes it
areas:
"Volume": null
"Categories": null
"Authentication": null
"Constraints": null
"Tone": null
requested_outputs: []
confirmed_facts: []
open_questions: []Step 4 - Recommend the smallest workflow
Build an already requested artifact without asking again. For advice-only requests, give a short recommendation and offer the relevant artifact.
Recommended approach: Start with the four that are sent every week and carry the most
risk - enquiry reply, quote, invoice with payment terms, and payment reminder - plus one
plain-text alternative for each. Put the signature block in a single place so it is edited
once. Confirm SPF, DKIM and DMARC before anything is sent from the domain, because no
template quality survives an unauthenticated domain.
Why this one: Those four are where money and reputation move. The enquiry reply wins
the customer, the quote and the invoice set the commercial terms, and the reminder is the
one that recovers cash. A newsletter is a marketing decision that needs consent and a list,
so it is not in the first set.
Workflow: Categories confirmed from what is actually sent → Shared structure agreed
(subject, greeting, body, action, signature) → Four templates drafted → Plain-text
alternative written for each → SPF, DKIM and DMARC confirmed → Tested in a real client →
Spam score checked → Accessibility pass on contrast and text size → Register approved and
versioned
Step 5 - Build only on request
Once the user asks for it, derive the fields from the confirmed context and emit the
requested artifacts. For machine-readable text, keep prose outside the data; for files,
provide a usable link. Report material validation failures or limitations separately.
**A selected Notion output is rendered by notion-manual-import, so route the
Notion step there.** When the user selects Notion, hand that step to
@notion-manual-import: it holds the CSV, the property
mapping, the import steps and the verification checklist, and it renders the Field
Reference below instead of defining a table of its own. Do not restate the mapping
here and do not improvise the import steps. Manual CSV and mapping outputs need no
connection. For requested workspace changes, follow the shared contract: verify actual
tool access and the target before writing. A user saying "connected" is not tool evidence.
Never ask for a Notion password or token.
Template ID,Template Name,Template Type,Trigger,Sender Role,Recipient Type,Subject Line Pattern,Preview Text,Body Structure,Tone,Call To Action,Required Fields,Personalisation Tokens,Signature Block,Unsubscribe Required,Spam Risk Notes,Test Status,Mobile Checked,Accessibility Checked,Version,Status,Notes
,Example Retail enquiry reply,Transactional,Website enquiry received,Sales,Prospective Customer,{Service} enquiry - {Business Name},Enquiry received,Thanks - next step - action - signature,Plain and direct,Reply with availability,"First Name; Service; Business Name","{First Name}; {Service}; {Business Name}",Yes - signature block only,false,Review actual provider feedback,Not tested,false,false,1.0,Draft,Synthetic example - replace before use.-- Engine assumption: PostgreSQL. For another engine use the engine's auto-increment
-- equivalent and keep the rest portable.
CREATE TABLE email_template (
template_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
template_name VARCHAR(255) NOT NULL,
template_type VARCHAR(100) NOT NULL,
trigger TEXT NOT NULL,
sender_role VARCHAR(100) NOT NULL,
recipient_type VARCHAR(100) NOT NULL,
subject_line_pattern VARCHAR(255) NOT NULL,
preview_text VARCHAR(255),
body_structure TEXT,
tone VARCHAR(100) NOT NULL,
call_to_action TEXT,
required_fields TEXT,
personalisation_tokens TEXT,
signature_block VARCHAR(100) NOT NULL,
unsubscribe_required BOOLEAN NOT NULL,
spam_risk_notes TEXT,
test_status VARCHAR(100) NOT NULL,
mobile_checked BOOLEAN NOT NULL,
accessibility_checked BOOLEAN NOT NULL,
version VARCHAR(50) NOT NULL,
status VARCHAR(50) NOT NULL,
notes TEXT,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
CONSTRAINT email_template_type CHECK (template_type IN ('Transactional','Marketing','Notification','Personal','System')),
CONSTRAINT email_template_test_status CHECK (test_status IN ('Not tested','Tested - internal','Tested - real client','Tested - seed list','Failed - see Notes'))
);
CREATE INDEX idx_email_template_status ON email_template (status);
CREATE INDEX idx_email_template_type ON email_template (template_type);{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Business Email Templates",
"type": "object",
"additionalProperties": false,
"properties": {
"Template ID": { "t… (full content is in the download package)
Related skills
- business-website-setup – Website page register: URL, title, meta description, search intent, NAP block, schema…
- inbox-setup – One-time setup skill that builds a personalized inbox triage knowledge base via…
- internal-comms – Use when a Head of People Ops, BizOps lead, or Internal Communications owner needs to…
- password-spray-methodology – End-to-end password spray playbook. User enumeration, lockout detection, password…
- co-marketing – When the user wants to find co-marketing partners, plan joint campaigns, or brainstorm…
- cold-email – Write B2B cold emails and follow-up sequences that earn replies. Use when creating…
- landing – Generates a premium single-page HTML landing page with 3D CSS animations, GSAP scroll…
- landing-page-generator – Generates high-converting landing pages as complete Next.js/React (TSX) components with…