Agent skill
comms
Write the update that tells the people affected by a project what changed, as one Project Update memo.
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
Install it
View source on GitHub ↗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.
The skill
Source on GitHub ↗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;commswrites 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, viamemos:new. - Does not change the project's status.
newandshipown 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.
- comms-ops by shalintripathi · 13
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.