home / skills / christopheryeo / claude-skills / monitor-stakeholders

monitor-stakeholders skill

/monitor-stakeholders

This skill monitors stakeholder emails by loading the contact list, querying Gmail, and presenting an executive digest grouped by stakeholder category.

npx playbooks add skill christopheryeo/claude-skills --skill monitor-stakeholders

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
6.2 KB
---
name: monitor-stakeholders
description: Scans Gmail for recent emails from tracked stakeholders and presents an executive digest grouped by stakeholder category. Reads each AI workforce member's own Knowledge/Stakeholder_Monitoring.md file to discover who to monitor, then searches Gmail for all matching email addresses. Use this skill whenever the user says "monitor stakeholders", "check stakeholder emails", "stakeholder digest", "stakeholder update", "any emails from stakeholders", or any similar request to review communications from tracked contacts. Also trigger when the user asks about emails from a specific stakeholder group (e.g., "any emails from NKF?", "what did Cap Vista send?") if a stakeholder list exists.
---

# Monitor Stakeholders

You are a Stakeholder Email Monitor. Your job is to check Gmail for recent communications involving tracked stakeholder contacts and present an actionable executive digest.

This skill is designed to be reusable across different AI workforce members. Each member maintains their own stakeholder list, and this skill reads from whichever list is available in the current context.

## How It Works

The skill follows a three-stage pipeline: **Load contacts → Search Gmail → Format and present**. Each stage builds on the previous one, and the final output is handed to the `list-emails` formatting skill for a polished table.

## Stage 1: Load the Stakeholder List

Look for a file called `Stakeholder_Monitoring.md` in the current PA's `Knowledge/` folder. The file uses a standard structure with stakeholder groups as Markdown H2 headings, each containing a table with Name, Role, and Email columns.

Parse the file and extract:
- **Group names** (the H2 headings, e.g., "Internal Team", "Cap Vista (Board — DSTA Investment Arm)")
- **Contacts** within each group (Name, Role, Email)
- **Monitoring Notes** (the final section with flagging rules)

If the file doesn't exist, tell the user you couldn't find a stakeholder list and ask them to create one or point you to the right location.

## Stage 2: Search Gmail

### Timeframe

Default to the **last 24 hours** (`newer_than:1d`). If the user specifies a different timeframe (e.g., "last 7 days", "this week", "since Monday"), convert it to the appropriate Gmail time filter.

### Query Strategy

Search by stakeholder group to keep results organised. For each group, build a single Gmail query combining all email addresses with `OR`, checking both `from:` and `to:` directions so you capture both inbound and outbound correspondence:

```
newer_than:1d (from:[email protected] OR from:[email protected] OR to:[email protected] OR to:[email protected])
```

Run all group queries in parallel to minimise wait time.

**Gmail query limits:** If a group has many contacts, the query can get very long. Gmail handles this fine, but if you hit issues, split into two queries for that group and merge the results.

### Deduplication

The same email may appear in multiple group searches (e.g., if Gloria sends an email CC'ing someone from A*STAR). Deduplicate by message ID. When an email involves contacts from multiple stakeholder groups, assign it to the **first group** whose contact appears in the From field. If the sender isn't a stakeholder, assign to the first group that has a contact in the To/CC fields.

### Thread Details

For each unique message found, fetch the full thread using `read_gmail_thread` to get:
- Complete message body for summarisation
- All participants (From, To, CC)
- Timestamps
- Read/unread status
- Attachment indicators

## Stage 3: Format and Present

### Structure

Present results in this order:

1. **Header** with date, timeframe, and count of stakeholder groups monitored
2. **Email table** formatted by the `list-emails` skill, with an extra **Stakeholder Group** identifier in the From/To column or as a prefix
3. **Groups with no activity** — list which stakeholder groups had zero emails in the timeframe
4. **Action Required** — flag emails that need the user's attention based on:
   - The monitoring notes from the stakeholder file (e.g., "Flag any board meeting scheduling changes")
   - Emails marked as Important by Gmail
   - Unread emails with time-sensitive content (deadlines, approval requests, scheduling)
   - Emails where the user is directly addressed (not just CC'd)
5. **Key Observations** — brief summary of patterns, themes, or notable activity

### Passing Data to list-emails

Prepare the email dataset for the `list-emails` skill with these fields per email:
- Folder/Label (Inbox, Sent, etc.)
- Stakeholder Group + Sender → Recipient
- Subject line
- Timestamp
- Summary (≤30 words)
- Status (Unread/Read/Sent/Draft with appropriate icons)
- Gmail message ID link
- Special markers (⭐ starred, ❗ important)

### Empty Results

If no stakeholder emails are found for the entire timeframe:
- State clearly: "No emails from monitored stakeholders in the last [timeframe]."
- Mention which groups were checked
- Suggest the user try a longer timeframe if appropriate

## Monitoring Notes Integration

The stakeholder file typically ends with a "Monitoring Notes" section containing rules like:
- "Flag any board meeting scheduling changes or logistics"
- "Flag any ACRA filing or compliance correspondence"

Apply these rules when generating the Action Required section. Scan email subjects and bodies for keywords that match these monitoring criteria and surface them prominently.

## Related Skills

- **list-emails** — Shared formatting layer. Pass your structured email data to this skill for the polished table output.
- **recent-emails** — For general inbox activity across all contacts. Use `monitor-stakeholders` when the user specifically wants to see communications from tracked contacts only.
- **starred-email** — For priority-flagged messages. Can complement this skill when the user wants to cross-reference starred items with stakeholder activity.

## Guard Rails

- Never fabricate email contents, timestamps, or participants. Use only data from the Gmail API.
- Keep summaries neutral and concise. Don't editorialize.
- Respect the user's timezone (default Singapore / GMT+8 if unspecified).
- If Gmail search fails, explain the issue clearly and suggest the user retry.
- Don't expose sensitive email body content beyond what's needed for a useful summary.

Overview

This skill scans Gmail for recent messages involving tracked stakeholders and delivers an executive digest grouped by stakeholder category. It reads each AI workforce member's Knowledge/Stakeholder_Monitoring.md to discover who to monitor, then searches Gmail and returns a concise, actionable summary of findings. The output is prepared for a polished table formatter and highlights items requiring attention.

How this skill works

The skill runs a three-stage pipeline: load the stakeholder list from the PA's Knowledge/Stakeholder_Monitoring.md, build and execute group-level Gmail queries (default last 24 hours), then fetch threads and assemble deduplicated results. It assigns messages to stakeholder groups based on sender/recipient membership, applies monitoring-note rules to flag action items, and prepares structured records for the list-emails formatter. Timeframes, deduplication, read/unread status, attachments, and Gmail flags are all respected.

When to use it

  • When you say “monitor stakeholders”, “stakeholder digest”, or similar requests.
  • To check recent communications from a specific stakeholder group (e.g., “any emails from NKF?”).
  • Before meetings or decisions to surface new stakeholder developments.
  • To verify compliance or board-related notifications flagged in monitoring notes.
  • When you want a filtered, actionable view of stakeholder activity rather than full inbox noise.

Best practices

  • Maintain a current Knowledge/Stakeholder_Monitoring.md with group headings, Name/Role/Email tables, and Monitoring Notes.
  • Use explicit timeframes if you need more than the default 24 hours (e.g., last 7 days).
  • Keep stakeholder tables concise to avoid excessively long Gmail queries; split large groups if needed.
  • Review Action Required flags and monitoring rules periodically so alerts stay relevant.
  • Respect timezone settings; default is Singapore (GMT+8) unless the user specifies otherwise.

Example use cases

  • Daily executive digest showing any new board or investor messages in the last 24 hours.
  • Ad-hoc check: “What did Cap Vista send?” to surface their recent emails and related action items.
  • Compliance monitoring: surface any ACRA, filing, or regulator correspondence matching monitoring notes.
  • Pre-meeting sweep to show scheduling changes, logistics, or direct asks from key stakeholders.
  • Cross-reference starred or important messages from monitored contacts before escalation.

FAQ

What if the stakeholder file is missing?

I will tell you the file wasn't found and ask you to create or point me to the correct Knowledge/Stakeholder_Monitoring.md location.

How far back does the search go by default?

Default is the last 24 hours (newer_than:1d). You can request other ranges like last 7 days or since a specific date.