Systems Lab

Agent skill

comms

Write the update that tells the people affected by a project what changed, as one Project Update memo.

activeNeeds a keyDeclared tools462 words

From sarahcallmesmadds/gtm-operator · 27 skills · 0 · pushed 2026-09-02

What it does when it runs

Write the update that tells the people affected by a project what changed, as one Project Update memo. Use when the user says "write the project update", "announce this change", "tell people about this", "who needs to know", or whenever a project changes something other people depend on. Not on a schedule. Writes one page and its body, sends nothing anywhere, and never edits anything.

Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
  • mcp__*__notion-create-pages
  • mcp__*__notion-fetch
  • mcp__*__notion-query-data-sources
  • mcp__*__notion-update-page
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
  • Write
  • Bash(node:*)
  • mcp__*__notion-fetch
  • mcp__*__notion-query-data-sources
  • mcp__*__notion-create-pages
  • mcp__*__notion-update-page
Actions present in the files
shellwrites files

Ask about comms

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/sarahcallmesmadds/gtm-operator.git /tmp/gtm-operator
git -C /tmp/gtm-operator sparse-checkout set "plugins/projects/skills/comms"
mkdir -p ~/.claude/skills/comms
cp -R "/tmp/gtm-operator/plugins/projects/skills/comms/." ~/.claude/skills/comms/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

Or take the whole library

This repo ships a .claude-plugin manifest, so Claude Code can install all 27 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.

/plugin marketplace add sarahcallmesmadds/gtm-operator
/plugin

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Before you install: this skill will not complete its job on a bare agent. It needs mcp__*__notion-create-pages, mcp__*__notion-fetch, mcp__*__notion-query-data-sources, mcp__*__notion-update-page, which you have to obtain separately.

Reproduced in full from sarahcallmesmadds/gtm-operator/blob/a93c6e98a742d183823691197b8d9be9edd114c6/plugins/projects/skills/comms/SKILL.md, which is licensed MIT (repository). 462 words, 5 headings.

comms

The update that tells the people affected what changed.

The line this skill holds: name the reader. The failure mode of every project update ever written is that someone finishes it without knowing whether it touches them, so Who Is Affected And When must name teams and a date, and What You Need To Do must give an action per group. "Nothing" is a real and useful answer there, and it gets written rather than left out.

How this skill works

node "${CLAUDE_PLUGIN_ROOT}/scripts/projects.js" memo-check <proposed.json>
node "${CLAUDE_PLUGIN_ROOT}/scripts/projects.js" memo-create <memo.json>
node "${CLAUDE_PLUGIN_ROOT}/scripts/projects.js" memo-prove <memo.json> <readback.json> <created-url>

The memo shapes are the same vendored builder the memos plugin runs. If config is absent the script refuses and names setup. Never invent a select value; fetch the live options first.


Step 1. Read the project, and write for its readers

Fetch the project and read its scope document. The memo's project field carries the project's url, and the script requires it: a Project Update about no project in particular is a plain Memo, which memos:new writes.

Type is Project Update. The sections, in order: What Changed, Why, Who Is Affected And When, What You Need To Do, Sources conditional and last.

  • What Changed: the change itself, in the reader's terms, not the ticket's.
  • Why: two or three sentences.
  • Who Is Affected And When: teams and a date. "Everyone, soon" is not an answer.
  • What You Need To Do: the action, per affected group, and "Nothing" is written when it is the answer.

Domain is inherited from the project when there is one, otherwise asked. Audience, Segment, L2C Lifecycle and Tags are offered in the preview, never invented, and left empty rather than guessed.


Step 2. Check, preview, write on a yes, prove

memo-check, fix the refusals, preview the whole body inline, create only on an explicit yes, then memo-create, create the page, read it back, and memo-prove with the created url. Never report success with a section missing.

The Projects relation is not written, and the output says so: name the memo and the project so a person can link them in Notion, and report the memo as unlinked rather than filed.


What this skill does not do

  • Does not send anything anywhere. Slack and Gmail are read-only context for problem-scan; comms writes the memo and gives you the link.
  • Does not edit a previous update. Append-only: a correction is a new memo relating to the old one through Corrects, via memos:new.
  • Does not change the project's status. new and ship own the two moves a skill may make.
  • Does not run on a schedule. It runs when a project changes something other people depend on.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what comms does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.