ワンクリックで
customer-comms
Draft a customer-facing roundup email for a product area, covering announcement-worthy Released cards
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Draft a customer-facing roundup email for a product area, covering announcement-worthy Released cards
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Refresh priority signals, manage active epics, and refresh Near Term pool
Multi-session deliverable play for projects spanning 3+ sessions with concrete outputs (proposals, strategies, wireframes). Provides project-level structure, evidence provenance, and cross-session handoff.
Investigation-driven card grooming — investigate across data sources, synthesize findings into card content, present for approval
Use when acting as a reviewer in an AgenTerminal review conversation. Handles both code reviews (REVIEW_APPROVED) and plan reviews (PLAN_APPROVED).
Match Slack
Weekly release impact review — pull PostHog data for Released cards and tracked PRs, classify, draft observations, post to Slack
| name | customer-comms |
| description | Draft a customer-facing roundup email for a product area, covering announcement-worthy Released cards |
| disable-model-invocation | true |
Draft a customer-facing roundup email for a product area, covering all announcement-worthy Released cards. One email per product area. The email goes through iterative drafting with human review before sending.
The goal is an approved draft, not a sent email. Every version goes through
approve_content. The user reads, edits, and copies from the modal. Iteration
is typical (2-4 rounds). Don't rush to "final."
$ARGUMENTS is optional:
{product-area}: Skip Phase 1 — go directly to Phase 2 for the named
product area.Before starting, read these references:
reference/customer-comms.md (workflow, voice patterns,
accumulated style flags)reference/email-examples.md (3 example emails showing
the actual voice)box/comms-tracker.md (what's been communicated already)reference/customer-comms.md Remaining section lists known
backlog groupings and notes (thin areas, second waves, audience considerations)Read the style examples every time. Don't draft from remembered patterns. The examples are short and the voice is specific enough that skipping them produces noticeably different output.
agenterminal.execute_approved or present the
command for the user to run. Note: the Shortcut search endpoint is POST, which
triggers the gate. Use shortcut-cards.py for card listing, or the GET
endpoint for individual story fetches.approve_content.
The user reviews exact text. Summary descriptions of changes are not
substitutes for showing the full draft.reference/tooling-logistics.md for
tested recipes. Don't re-derive payload shapes or endpoint paths.product_focused_nav) are not:
new users never knew it was missing, existing users can't see it.Skip this step if $ARGUMENTS names a product area.
python3 box/shortcut-cards.py --state Released --summary
box/comms-tracker.md to find cards not yet
communicated.shortcut-cards.py
script returns description_length, not description text. Use the API
directly:
SHORTCUT_API_TOKEN=$(grep '^SHORTCUT_API_TOKEN=' .env | cut -d= -f2-)
curl -s -H "Shortcut-Token: $SHORTCUT_API_TOKEN" \
"https://api.app.shortcut.com/api/v3/stories/{id}"
git show origin/main:path/to/file).Multi-email splits: When a product area has 2+ headline-worthy features, split into separate emails, each anchored by one headline. Distribute supporting and bullet cards between them by narrative theme. Proved 2026-04-27: Pin Scheduler carousel + product tagging were each headline-worthy, split into two emails with distinct hooks.
The proxy chain from card description to customer copy loses information at every layer. 3 of 8 features had descriptions that diverged from shipped code in one session. This step makes verification structural: the draft references verified scope, not card descriptions.
For each headline feature (the 3-5 cards from the prominence split):
Delegate a subagent per card (or 2-3 clustered by area) with:
model: "claude-sonnet-4-6". Include the card ID and title so
output is identifiable after collection.Collect results. For any card where the subagent flags a divergence,
read the relevant file yourself via git show origin/main:path/to/file.
Subagent output is a pointer, not a finding — your own read confirms
whether the divergence is real and what the shipped behavior actually is.
When a delegate reports "not implemented," check the PR commit history
(git log --oneline --grep or git show on linked PRs) before accepting.
Delegates search the current codebase but can miss functionality added in
specific commits — especially post-publish handlers, SQS workers, or async
flows that don't live alongside the main feature code. Proved 2026-04-27:
delegate reported product tagging never reaches Pinterest; PR commit history
revealed an SQS handler that applies tags post-publish.
Produce a verification record per headline card:
SC-NNN: Card scope: [what card describes]
Shipped scope: [what code actually does]
Email will say: [accurate description for the draft]
Write the verification records to
/tmp/ff-$AGENTERMINAL_SESSION_ID/comms-verification.md. This file is
the input to Step 4 drafting — reference it, not card descriptions, when
writing feature copy.
Checkpoint: present the verification records to the user. Flag any cards where shipped scope differs materially from card description. The user confirms the "Email will say" framing before drafting begins.
Supporting-bullet cards (not headlines) get lighter treatment: card description is usually sufficient for a one-line bullet. If a supporting card has a title that feels ambiguous, spot-check the PR, but full verification is not required.
Check box/posthog-events.md for known events in this product area. Query
PostHog for a compelling number that anchors the intro.
Good stats speak to user value (engagements received, time saved, adoption count), not internal metrics.
If no good stat exists, use a narrative/scenario hook instead. Both approaches work. See style examples for both patterns. Don't force a stat.
Re-read reference/email-examples.md immediately before writing —
not at session start, not between emails, but right before the draft call.
Write the draft following the voice and style notes in
reference/customer-comms.md. Key patterns:
Present the full draft via approve_content with
content_type: "email-draft", filename: "comms-{product-area}". The user
can read, edit, and copy from the modal. The saved file is compaction
insurance for multi-round iteration.
Iterate based on feedback. Each iteration goes through approve_content
again (same filename — the saved file gets overwritten with the latest
approved version).
Before presenting the final version:
comms-verification.md), not the card description. Re-read the
verification record if unsure.These are specific corrections from past drafting rounds. They apply every time.
After the user confirms the final version:
box/comms-tracker.md with each card, release date,
prominence (headline/bullet), and a short description.— for
the card column.reference/customer-comms.md to move the product area from
Remaining to Completed.