From investor-update
Generates a concise monthly investor update for a startup. Compiles the month from the founder's own tools (GitHub PRs, Slack activity, or custom adapters), distills it to a headline-only brief, and uses Kopi to turn that brief into an on-brand HTML email template you can send from any email platform (Klaviyo, Mailchimp, etc.). Use when the user says "investor update", "monthly update", "draft the investor update", or names a month to recap.
How this skill is triggered — by the user, by Claude, or both
Slash command
/investor-update:generating-investor-updatesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Compile widely → crystallize to a tiny diamond → draft via Kopi. Opinionated about **what a good
Compile widely → crystallize to a tiny diamond → draft via Kopi. Opinionated about what a good
update is (reference/good-update.md) and that you draft it with Kopi; unopinionated about
where the data lives (any adapter under adapters/).
Read reference/good-update.md before distilling. To add or debug a data source, read
reference/adapters.md. Paths below use ${CLAUDE_PLUGIN_ROOT}; the skill dir is
${CLAUDE_PLUGIN_ROOT}/skills/generating-investor-updates.
Run the doctor — it reports deps + which sources are live and never hard-fails:
python3 "${CLAUDE_PLUGIN_ROOT}/skills/generating-investor-updates/scripts/preflight.py"
What Kopi does (the payoff): it turns the brief into an on-brand HTML email
template you can send from any email platform (Klaviyo, Mailchimp, etc.). It's the one hard
requirement — drafting needs a one-time Kopi sign-in. Everything up to the brief works without it;
if the Kopi: tools aren't available, tell the user to connect Kopi once (see INSTALL.md).
$ARGUMENTS (e.g. 2026-05); else default to the previous calendar month.[confirm] into the draft.python3 "${CLAUDE_PLUGIN_ROOT}/skills/generating-investor-updates/scripts/compile.py" <MONTH>
Runs every configured adapter; missing-credential sources are skipped and reported, not failed.
Output is { sources: {github,slack,...}, skipped: [...] } — signal = counts/deltas,
narrative = raw lines. (Enable sources via env — see INSTALL.md.)
Kopi:set_active_brand — resolve the founder's brand by name or URL.Kopi:get_context → recent emails; Kopi:view_email the most recent investor update →
read its numbers (for month-over-month deltas) and keep its URL as the design reference.
Everything goes through the MCP — no database access.Per reference/good-update.md, write a concise headline-only founder-note brief:
a fixed metric row with MoM deltas, 2–3 highlights crystallized from the digest (e.g. GitHub
themes + a Slack signal count), an honest lowlight, this-month focus, and 1–3 specific asks.
Compute Default Alive/Dead from burn vs revenue — never assume it. 30-second read.
For each angle the founder wants (a few is plenty), call Kopi:create_email with the brief and
referenceEmailUrl = the prior update (keeps the investor-update layout instead of a marketing
one). Generation is async (~5–10 min). Return the draft URLs + the inbox URL.
Open each draft; verify every number traces to input, and that no offer/metric was invented. The auto-subject may drift to a marketing line — reset it to a clean investor subject. Export to the investor list only, never customer/campaign lists.
[confirm].reference/good-update.md).Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub robertnowell/investor-update --plugin investor-update