AGENT SKILL

newsletter-style-email-composer

Use when the user asks to email a report, findings, or metrics to someone as a polished, newsletter-style message. Builds an Outlook-safe HTML email from figures that already exist (headline, KPI tiles, up to two bar charts drawn with HTML table cells so they render in classic Outlook, Gmail and dark mode, short findings, data notes and the non-audit disclaimer) using the shared brand tokens, attaches the PDF report, and creates a draft for the user to review. Do NOT use for a short plain-text status update, or for building the underlying analysis, charts, or report itself -- this skill only composes the email.

License 许可
MIT
最近更新
2026-11-15
Stars
★ 16
Forks
25

01 前言 Front Matter

name
newsletter-style-email-composer
description
Use when the user asks to email a report, findings, or metrics to someone as a polished, newsletter-style message. Builds an Outlook-safe HTML email from figures that already exist (headline, KPI tiles, up to two bar charts drawn with HTML table cells so they render in classic Outlook, Gmail and dark mode, short findings, data notes and the non-audit disclaimer) using the shared brand tokens, attaches the PDF report, and creates a draft for the user to review. Do NOT use for a short plain-text status update, or for building the underlying analysis, charts, or report itself -- this skill only composes the email.

03 SKILL.md 正文

Newsletter-style email composer

Composes the email only. Figures, Data notes and the PDF come from the analysis and report skills - if they don't exist yet, run those first. Never recompute a number here.

Branding - edit here. Colours, font stack, eyebrow and the footer disclaimer come from spreadsheet-data-analysis-reporting/assets/style-tokens.json, the single brand file shared with the charts and the PDF. The template in this skill contains no colour values. Logo: not shown in the email by design. Without a base64 data: image the only options are an inline (CID) attachment - which the Draft an email tool can't create - or an externally hosted image URL, which most clients block by default. The logo appears in the attached PDF; swap it via brand.logo_path.

1. Gather (ask only for what's missing)

  • Recipients and subject. Ask if not given; the email is a draft, so a sensible subject is fine.
  • Content to reuse: headline, 2-4 KPIs, the figures behind 1-2 simple charts, up to 3 bullets per finding, recommendations, the Data notes.
  • The PDF (report.pdf) in the sandbox working folder, from the report skill.

2. Build the body

Copy assets/email-content-example.json to email_content.json, fill it in, then run:

python scripts/build_email.py email_content.json email.html --pdf report.pdf
  • Charts are HTML table-cell bars (bar_charts): mode: "bars" for values (use highlight for the focus item), mode: "variance" for change (positive/negative colours plus signed labels). Max 2 charts, 8 bars.
  • No images in the body - no base64 data: images, no SVG, no external image URLs. The full charts are in the attached PDF.
  • The script fills brand tokens, sets the hidden preheader (headline by default), adds the "full report is attached as a PDF" line, the Data notes footnote and the disclaimer, and warns if the body nears Gmail's 102 KB clipping limit or the PDF is large. It also writes email.html.attachment.json (PDF name and sandbox path).

3. Create the draft

Use the Draft an email message tool: To, Subject, Body = contents of email.html, and Attachments = the PDF, named per email.html.attachment.json and referenced by its sandbox file path. The tool reads the file from that path, so don't base64-encode the PDF or paste its content into the conversation.

  • If the tool rejects the attachment, tell the user and give them the PDF as a chat attachment instead. Never upload it to SharePoint.
  • Tell the user it's a draft waiting in their mailbox for review - nothing is sent.

Done when

Headline, KPIs, bars and bullets match the analysis; Data notes and disclaimer are present; the PDF is attached; build_email.py ran without errors; the draft exists with the right recipients and subject. Rendering rules and client quirks: references/email-rendering-and-accessibility-notes.md.

04 同仓库更多 Skills

microsoft
microsoft/copilot-studio-gallery

dock-assignment-pass-pdf

Render the completed truck loading-dock assignment as a driver-facing one-page PDF.

文档处理
★ 16
microsoft
microsoft/copilot-studio-gallery

loading-dock-selector

Reason over weather, one current dock snapshot, optional ETA, and verified Drive Priority Pass to select and explain one loading dock.

★ 16
microsoft
microsoft/copilot-studio-gallery

polished-report-builder

Use when the user asks to turn analysis results, metrics, or findings into a polished, presentation-ready report, one-pager, or executive summary -- especially when existing analysis (e.g. from the spreadsheet analysis skill) needs to become a document someone will actually read. Builds a branded PDF with reportlab from a short content file (headline, KPI tiles, one chart per point, data notes and the non-audit disclaimer) using the shared brand tokens, and runs a QA pass before delivery to catch walls of text, chart clutter, low-resolution charts, missing data notes or poor contrast. Do NOT use for a quick inline chat answer, a single ad-hoc chart with no report structure around it, a raw data export with no narrative, or to compute the figures themselves.

行政与办公人员文档处理
★ 16
microsoft
microsoft/copilot-studio-gallery

spreadsheet-data-analysis-reporting

Use for any request that needs figures from the sales spreadsheets (Excel/CSV), even a single file or a single period - e.g. 'analyse Q4', 'how did sales do last month', 'compare regions', YoY/MoM/QoQ/YTD growth, top products, share of revenue, trends, outliers, currency-converted totals, or building/updating a consolidated master file. Finds and loads the relevant files, cleans and normalises them, computes metrics with standard definitions and edge-case handling, flags outliers and data issues, explains every transformation, and produces on-brand charts. Use this before the report or email skills whenever numbers must be computed. Do NOT use for questions that need no data (e.g. 'what does YoY mean') or for re-formatting results already computed in this conversation.

数据分析师电子表格分析与可视化
★ 16
microsoft
microsoft/copilot-studio-gallery

generating-podcast-script

Use this skill whenever the user asks to write, generate, or create a podcast script or podcast episode — from a topic, or from source material such as a news digest, newsletter, email review, or set of articles — and optionally convert it to audio with Azure Text-to-Speech. Handles the initial request and every follow-up refinement (source, topic, length, cast, narration) in the same task.

邮件与沟通图像与多媒体
★ 16
microsoft
microsoft/copilot-studio-gallery

internal-consistency-review

Use when the user asks for the Internal Consistency Review of a contract, or asks to check a contract for internal conflicts, inconsistencies between sections, or gaps and unfilled elements. Do NOT use for comparing the contract against external law - that is the separate Legal Compliance Review skill.

律师与法务
★ 16