
follow-up-after-call
Use after a completed customer, prospect, partner, or important internal sales call, discovery session, demo, or conversation, including when the user supplies or uploads a transcript, notes, recording summary, or other grounded evidence. Advise on, assess, qualify, recap, and produce seller-ready follow-up actions and drafts.
- Installs
- 45
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/openai/role-specific-plugins --skill follow-up-after-call- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads follow-up-after-call automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Follow Up After Call
Context-Gathering Intake
Whenever this skill asks for context, strongly prefer using the answers-ask-user-input skill and the ask_user_input tool over other tools such as request_user_input; otherwise ask directly in the conversation.
Turn grounded call evidence into a seller-ready follow-up package that preserves what was actually said, makes ownership visible, and gives the seller copy they can use immediately. This skill owns the post-call synthesis and drafts; it does not send, post, create email drafts, or update CRM.
Common Skill Instructions
MANDATORY: If not already in context, read and adhere closely to plugins/sales/skills/index/SKILL.md## Cross-Skill Best Practices.
Key Dependency Categories
These categories are particularly important for this workflow; use other sources only when they materially improve the package.
- [Blocking] ~~Meeting Transcripts for the primary transcript, grounded notes, participant language, decisions, commitments, objections, and source links. It blocks the default live-source follow-up path; explicit grounded call evidence already in context satisfies the need.
- ~~Calendar for recent-call identification, attendees, timing, and upcoming related meetings
- ~~CRM for account, opportunity, contact, owner, and CRM-ready next-step context
- ~~Email for customer-facing thread context when the call evidence or promised follow-up lives there
- ~~Internal Messaging for internal account context and a safe suggested destination for the team recap
- ~~Knowledge & Files for exported transcripts, call notes, account notes, and follow-up assets
Grounded call evidence is required. CRM, calendar, files, and messages can enrich the package but cannot substitute for a transcript, grounded notes, or a customer-facing thread that records the call. If evidence is missing, stale, or conflicting, state the limitation rather than reconstructing the call.
Reference Loading
SKILL.md owns the normal evidence-first workflow, chat-first draft behavior, and output package. Load references only when their extra detail changes the decision:
- Use references/request-schema.yaml when normalizing structured input, relative call dates, meeting-recording identifiers, or fallback evidence paths.
- Use references/opportunity-and-channel-selection.md when opportunity ranking or internal destination safety is ambiguous.
Workflow Guidance
1. Resolve the call and evidence
- If the user supplies a transcript, notes, link, or clearly identified call, start there.
- If the call-resolution path isn't clear, ask the user via
ask_user_input(). For a bare invocation such as “Follow up after my call,” do not assume a meeting; offer:Use my most appropriate recent grounded callUse a call, account, attendee, or date I specifyUse transcript or notes I provide
- For “my latest call,” “today’s call,” “earlier today,” “yesterday,” “last week,” “my most appropriate recent meeting,” or a named account without a source, treat the wording as a retrievable anchor: search the narrowest recent window in ~~Calendar and ~~Meeting Transcripts, then offer up to five concrete candidates via
ask_user_input(). Do not retrieve deeper context or draft a package until the user selects one. - When the call or account anchor is ambiguous, make at most three source reads to produce concrete candidates; do not gather broad enrichment before the user chooses.
- Treat ambiguous company-like names, partner names, and account shorthands as possible account anchors. When ~~CRM is available and account identity affects which call to retrieve, use a bounded ~~CRM lookup to disambiguate the account before relying on weaker account context; it never substitutes for grounded call evidence.
- If exactly one plausible grounded candidate remains, ask the user to confirm it via
ask_user_input()before drafting. If no grounded evidence can be found, ask for the transcript, notes, or specific call rather than producing a recap from surrounding account context. - Treat pasted notes, uploads, and user-linked material as valid working evidence; label them as user-provided when they cannot be verified.
2. Gather only useful enrichment
- Prefer grounded evidence in this order: ~~Meeting Transcripts transcript; retrievable meeting-recording transcript; other exported transcript; pasted transcript or grounded notes; ~~Knowledge & Files meeting notes; then an ~~Email thread or message as a recovery lane.
- Fetch a user-provided call or transcript handle directly. Otherwise search with the account plus date or timeframe and at most two meeting-topic terms, then fetch the best match.
- Preserve supplemental source-of-truth, call-notes, or transcript links alongside the primary evidence rather than replacing it.
- For an external account call, use ~~CRM when available to resolve the relevant account or opportunity and sharpen names, commercial context, and the one-sentence CRM next step.
- Check ~~Calendar for a related upcoming meeting when timing changes the next step. Use ~~Email, ~~Internal Messaging, and ~~Knowledge & Files only when they add promised actions, blockers, owners, links, or destination context.
- If the transcript explicitly names a meeting or file that could affect the follow-up, do one targeted lookup in ~~Calendar or ~~Knowledge & Files using the exact title and date when available. Include the link if found; otherwise say it was not found in that checked source/window rather than claiming no such meeting or file exists.
- Stop once the package is grounded and the highest-value account/timing context is covered; name missing enrichment instead of continuing broad searches.
3. Classify the call and extract commitments
- Decide whether the call is external customer/partner-facing or internal. External email copy and CRM text apply only to external calls.
- Extract decisions, commitments, asks, objections, blockers, owners, and dates. Use
UnknownorTBDwhen the evidence does not establish them. - If multiple CRM opportunities are plausible, choose the one matching the call topic, attendees, product, timing, and recent activity. If none is credible, keep the CRM sentence generic and append
(paste into the relevant opp). - When opportunity intent, candidate ranking, or the safest internal channel is not obvious, use references/opportunity-and-channel-selection.md.
4. Draft in chat
- Return the package in chat by default, even when an email or internal channel is available.
- Do not create an email draft, send outreach, post an internal message, or write CRM in this workflow.
- Keep verbatim email and internal-message copy in Markdown block quotes so the seller can review and copy it.
Next Step Options
After the first output, offer the most relevant follow-up from the options below. Offer one clear transition, not a menu. Suggest ONLY these unless you are very confident another option is more useful:
- Refine the external email, internal recap, CRM sentence, or action list using the user's guidance.
- Create the reviewed email draft or post the reviewed internal recap when the user explicitly requests it.
- Add the reviewed recap and action items to an existing meeting note or create a new follow-up note.
- Prepare CRM-ready updates for review.
- Check for a matching automation and offer to create one unless a matching automation already exists; if one exists, offer to review or adjust it.
Next steps to avoid:
- Sending, posting, or updating CRM before the user reviews and explicitly requests the action.
Automation Offer Guard
Always offer a follow-up automation as the end-of-output next step unless a matching automation already exists. If the output identifies a natural timing anchor such as a next meeting, follow-up date, customer decision date, or agreed check-in, use that timing in the offer; otherwise offer to help choose the trigger or cadence. Frame the automation as a scheduled rerun of this skill, not a custom digest: it should use the same call/account anchor where possible and return the standard follow-up package with recap, action items, external copy, CRM-ready text, and internal recap.
Before ending with an automation offer, check whether a matching local automation already exists under $CODEX_HOME/automations/*/automation.toml, or ~/.codex/automations/*/automation.toml when CODEX_HOME is unset. Match by prompt, skill name, account, meeting title, attendee, opportunity, trigger time, or other stable scope details. Treat active and paused matches as already installed.
- If a matching automation exists, offer to review or adjust it rather than creating another one.
- If no matching automation exists, end with one clear offer to create the automation, describing the output as a seller-ready follow-up package produced after the next call or at the agreed follow-up time. Do not create or update the automation until the user explicitly agrees.
- If the automation surface is unavailable, avoid tool details and simply offer to help set up a recurring or scheduled follow-up check when automations are available.
Modes
1. Full Follow-Up Package
Default when the user asks to follow up after a call. Return every section below in order.
2. Focused Draft
Use when the user asks only for an email, internal recap, CRM note, or next-step extraction. Still ground it in call evidence; return the requested section plus a compact Call Summary, material gaps, and the status line.
Output Format
Use bold section labels, not top-level headings, for the normal package.
**Call Summary**
- **Primary evidence:** [Clickable transcript/notes link or source label]
- **TL;DR:** [2-4 grounded bullets]
- **Context / Goal:** [Why the call happened]
- **Key Points:** [Important customer/internal signals]
- **Decisions / Commitments:** [What was agreed]
- **Risks / Blockers:** [What could slow follow-through]
**Next Steps**
**Customer**
- [ ] [Action] — [Owner or Unknown] — [Due date or TBD] — [Notes]
**Seller**
- [ ] [Action] — [Owner or Unknown] — [Due date or TBD] — [Notes]
**External Comms**
Subject options (recommended first):
1. [Subject]
2. [Subject]
3. [Subject]
Recommended subject: [Subject]
> Hi <FirstName>,
>
> [150-220 word grounded follow-up email]
>
> Best,
> [Seller]
Draft link: Not created; copy drafted in chat only.
**CRM Next Steps**
[Exactly one sentence with call date, seller action, customer action, and outcome/success criterion.]
**Internal Follow-Up**
Suggested destination: [Safe internal channel/link, or “No verified internal channel found”]
> **[Meeting title]**
>
> [One concise summary paragraph]
>
> **Attendees:** [Names or Unknown]
>
> **Key Notes**
> - [Grounded note]
>
> **Decisions**
> - [Decision or None confirmed]
>
> **Action Items**
> - [Action] — [Owner or TBD] — [Due date or TBD]
>
> **Open Questions / Risks**
> - [Question or risk]
>
> **Source**
> - [Clickable call-notes/transcript link, or no useful link available]
No email draft, Slack post, or CRM update was created.
---
{Follow the instructions and output format/conditions in [Limitations and Improvements](../index/SKILL.md#limitations-and-improvements)}
{Follow the instructions and output format/conditions in [Next Steps](../index/SKILL.md#4-next-steps)}
Output Rules
- Bias toward decisions, risks, next steps, buying process, procurement, technical blockers, and stakeholder movement.
- For an internal call, write exactly
Not applicable: this was an internal call.under bothExternal CommsandCRM Next Steps; do not draft external copy. - Keep the external email concise, customer-safe, and free of sensitive internal language. Never invent recipients, commitments, pricing, dates, or draft links.
- Keep the CRM text to exactly one sentence. For an unresolved opportunity, append
(paste into the relevant opp). - Suggest an internal destination only when it appears internal and relevant. If channel safety is unclear, say to verify before posting; never fabricate a channel URL.
- Before saying no verified internal destination exists, search ~~Internal Messaging once for the account, meeting title, or workstream when that source is available.
- Use useful clickable source links when available, and name source gaps that materially lower confidence.
- Default to one consolidated internal recap; split it into a top-level message plus thread only when the user asks or a verified channel norm requires it.
- Use native mentions for attendees and owners when the selected app supports them; otherwise use readable names.
- Keep the internal draft free of
##headings. Its opening summary should name the launch path, business impact, decision point, or main follow-through theme without repeating the TL;DR. - Keep the internal recap compact, de-duplicated, and team-facing; include owners or
TBDrather than implying ownership. - Always include the plain status line above after
Internal Follow-Upunless the user explicitly asks for a different status format.
Failure Handling
If the call cannot be grounded, state the blocker in one line, say what evidence is needed, and return only safe partial material such as candidate calls or a blank fill-in structure. If optional enrichment is unavailable, still produce the grounded package and label the missing lane.
FAQ
What does the follow-up-after-call skill do?
Use after a completed customer, prospect, partner, or important internal sales call, discovery session, demo, or conversation, including when the user supplies or uploads a transcript, notes, recording summary, or other grounded evidence. Advise on, assess, qualify, recap, and produce seller-ready follow-up actions and drafts.
How do I install follow-up-after-call?
Run npx skills add https://github.com/openai/role-specific-plugins --skill follow-up-after-call in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/follow-up-after-call/ (personal) or .claude/skills/follow-up-after-call/ (project).
Which AI agents can use follow-up-after-call?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is follow-up-after-call safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains follow-up-after-call?
It is published by openai in openai/role-specific-plugins. It has 45 recorded installs.
More from openai/role-specific-plugins
image-to-code
openai/role-specific-plugins
Implement a selected image, screenshot, mockup, or Image Gen reference as a faithful, responsive frontend.
analyze-data-quality
openai/role-specific-plugins
Open the skill to read its SKILL.md instructions.
visualize-data
openai/role-specific-plugins
Design, build, revise, or QA quantitative charts and figures. Use when an analytical answer needs visual judgment, whether for an inline answer, report, dashboard, notebook, or artifact.
validate-data
openai/role-specific-plugins
Validate whether an analysis is accurate, well-supported, and ready to share or use for a decision. Use when reviewing methodology, calculations, comparisons, visuals, caveats, or conclusions.
build-dashboard
openai/role-specific-plugins
Build source-backed dashboards for monitoring performance, exploring drivers, or acting on product and business metrics. Use when the task needs a dashboard, scorecard, or monitoring view with clear metrics, filters, source definitions, and QA.
product-business-analysis
openai/role-specific-plugins
Analyze product or business data to support a decision or recommendation. Use when a decision depends on metric-backed evidence, such as choosing a direction, prioritizing an opportunity, evaluating a change, segmenting users, sizing tradeoffs, or deciding what to do next.
Popular ai & agents skills
google-agents-cli-publish
google/agents-cli
This skill should be used when the user wants to "publish an agent", "publish my ADK agent", "register an agent with Gemini", "publish to Gemini" (formerly Gemini Enterprise), or needs guidance on the agents-cli publish gemini command. Also use when the user wants to "manage agents in Agent Registry", "list/update/delete registered agents", or "register an MCP server". Covers ADK vs A2A registration modes, programmatic and interactive usage, flag reference, auto-detection from deployment metadata, Agent Registry fleet management, and troubleshooting. Part of the agents-cli skills suite. Do NOT use for deployment (use google-agents-cli-deploy).
google-agents-cli-eval
google/agents-cli
This skill should be used when the user wants to "run an evaluation", "evaluate my agent", "evaluate my ADK agent", "write an eval dataset", "analyze eval failures", "compare eval results", "optimize agent", or needs guidance on the Gemini platform eval methodology and the Quality Flywheel. Covers eval metrics, dataset schema, LLM-as-judge scoring, and common failure causes. Applies to any agents-cli project, whatever framework the agent is written in. Do NOT use for agent API code patterns (ADK: use google-agents-cli-adk-code), deployment (use google-agents-cli-deploy), or project scaffolding (use google-agents-cli-scaffold).
skill-creator
anthropics/skills
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
codex-pet
prime-skills/runcomfy-agent-skills
Codex Pet generator on RunComfy. Build a Codex-compatible Codex Pet spritesheet.webp + pet.json from a single reference image, drop it into ${CODEXHOME:-$HOME/.codex}/pets/ / and Codex picks it up as a custom Codex Pet next to the 8 built-ins. This skill produces the exact Codex Pet atlas Codex expects (1536x1872 PNG/WebP, 8 cols x 9 rows, 192x208 cells, 9 animation states — idle, running-right, running-left, waving, jumping, failed, waiting, running, review). Calls OpenAI GPT Image 2 edit ONCE via the local RunComfy CLI as runcomfy run openai/gpt-image-2/edit to produce a canonical Codex Pet pose, then assembles all 9 animation rows programmatically with ImageMagick micro-transforms — no Codex Pro, no $imagegen, no OPENAIAPIKEY required, only RUNCOMFYTOKEN. Triggers on "codex pet", "create codex pet", "make codex pet", "hatch codex pet", "/hatch image", "desktop pet codex", "codex pets", "spritesheet.webp", or any explicit ask to build a custom pet for OpenAI Codex.
full-output-enforcement
leonxlnx/taste-skill
Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.
executing-plans
obra/superpowers
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available