New to Claude Skills? Learn how to install them →

steipete on GitHub

Speaking Opportunities

Free

Streamline your speaking engagements and opportunities.

by steipete6.5k stars on steipete/agent-scripts
1 views
Updated Aug 10, 2026
Get this skill

Free · Opens the source repo

What Speaking Opportunities does

The Speaking Opportunities skill is designed for managing and organizing speaking engagements effectively. It provides a structured workflow to track various speaking opportunities such as conferences, keynotes, panels, and workshops. By utilizing this skill, users can efficiently manage invitations, calendar events, and email communications related to speaking engagements, ensuring that no opportunity is overlooked. This skill is particularly useful for speakers who want to maintain a clear overview of their commitments and potential engagements.

The skill leverages existing tools and data sources, including Gmail, Google Calendar, and Google Sheets, to gather and organize information. Users can initiate searches for speaking opportunities directly from their email and calendar, filtering for relevant events based on specific criteria. This integration allows for a seamless experience in managing speaking engagements, making it easier to identify high-value opportunities and maintain a comprehensive record of past and upcoming events.

Additionally, the skill includes a clear evaluation framework to assess the quality and fit of each speaking opportunity. Users can score events based on various heuristics, such as audience leverage, role quality, and logistical considerations. This structured approach helps prioritize engagements that align with personal or professional goals, ensuring that users focus on the most impactful opportunities.

Overall, this skill is ideal for speakers, thought leaders, and professionals who regularly engage in public speaking and wish to streamline their workflow. By centralizing the management of speaking opportunities, users can save time and enhance their effectiveness in securing and preparing for engagements.

When to use it

Use this skill when you need to track and organize various speaking engagements and related communications.

When not to use it

This skill is not suitable for managing non-speaking events, such as podcasts or informal networking dinners.

What you can build with it

Organizing Conference Invitations

Use the skill to consolidate and manage all your conference invitations in one place, ensuring you don't miss any important opportunities.

Evaluating Speaking Engagements

Quickly assess the value of each speaking engagement using the built-in evaluation framework to prioritize your commitments.

Syncing Calendar Events

Automatically sync your speaking commitments with your Google Calendar to keep track of all upcoming events.

How to install Speaking Opportunities

View source

1. Install with the skills CLI

npx skills add steipete/agent-scripts/speaking --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by steipete

Speaking

Use this for Peter's speaking-opportunity workflow.

Sources

  • Strategy (read first, always): /Users/steipete/Projects/manager/CONFERENCES.md — standing decisions (e.g. no TED, no paid talks), 2027 budget, anchor plan, triage tiers.
  • Repo: /Users/steipete/Projects/conferences
  • Sheet: Peter Steinberger Inbounds
  • Sheet URL: https://docs.google.com/spreadsheets/d/1dNt5EjgfgvPoAx5fa-igk681gniCkzL-IZ2FmjFl8fs/edit?gid=0#gid=0
  • Main tab: Invitations
  • Main brief: /Users/steipete/Projects/conferences/conference-opportunities.md
  • One note per opportunity: /Users/steipete/Projects/conferences/opportunities/NNN-slug.md

Use gog first for Google data when available:

gog gmail search 'speaker OR keynote OR panel OR fireside OR conference OR summit after:2026-01-01' --json --no-input
gog gmail read <thread-or-message-id> --json --no-input
gog calendar events primary --time-min 2026-01-01T00:00:00Z --time-max 2026-12-31T23:59:59Z --json --no-input
gog sheets get 1dNt5EjgfgvPoAx5fa-igk681gniCkzL-IZ2FmjFl8fs 'Invitations!A1:Q110' --json --no-input

Scope

Track:

  • conferences, summits, retreats, keynotes, panels, firesides, workshops, university talks, high-signal private rooms
  • calendar holds that look like speaking commitments
  • email invites where Peter expressed interest, declined, or needs to respond

Do not track in the conference list:

  • podcasts
  • press interviews
  • generic networking dinners without a speaking/event ask
  • vague intro calls with no event or audience

Talks and firesides are welcome. Do not delete them just because they are not classic conferences.

Evaluation

Score with these heuristics:

  • Audience leverage: developers, founders, AI researchers, senior enterprise buyers/advisors, policy/media only if strategic.
  • Role quality: keynote/main stage/fireside > panel > passive attendance.
  • Proof: verified email thread, named organizer, calendar invite, public event page, agenda, attendee size.
  • Fit: OpenClaw, agents, developer tools, AI-native software, open source, founder story, OpenAI-aligned narrative.
  • Logistics: date conflicts, visa, travel, time zone, prep burden, travel/hospitality coverage.
  • Risk: platform politics, employer comms approval, geopolitical/compliance concerns, weak organizer quality.

Priority language:

  • accept: committed or clearly worth doing.
  • strong consider: high value but needs missing logistics/details.
  • review: plausible, needs more info.
  • pass: declined, stale, low leverage, bad fit, or user explicitly said no.

Verification

Before changing status:

  1. Search Gmail for the event name, organizer, contact email, and likely aliases.
  2. Read the full thread, not just snippets.
  3. Check Google Calendar for matching holds/invites.
  4. Treat calendar-only holds as unverified unless email supports them.
  5. Preserve Peter corrections: OMR/ORM is not a commitment; do not mark accepted unless Peter explicitly reverses that.

Useful status meanings:

  • CALENDARED: calendar plus email evidence, or accepted invite.
  • INBOX: needs response or still open.
  • INBOX / CALENDAR HOLD: calendar hold exists, but details still need confirmation.
  • PASS: do not pursue.
  • Done: declined, stale, or already passed.

Repo Notes

Per-opportunity files should stay short and structured:

# Event Name

- Number: N
- Index: [Conference Opportunities Brief](../conference-opportunities.md)

## Brief

- Date/location:
- Host/ask:
- Format:
- Audience/scale:
- Impact:
- Fit:
- Risks:
- Status:
- Recommendation:
- Sources:

When adding an opportunity:

  1. Pick next number from opportunities/*.md.
  2. Add opportunities/NNN-slug.md.
  3. Add the link to conference-opportunities.md.
  4. Update the shortlist only if it changes prioritization.
  5. Keep podcasts and press out.

Sheet Sync

Use the sheet headers from Invitations!A1:Q1:

Invitation Name, Primary Category, Recommendation, Date, Location, Subcategory, Geography, Recommended Rep, Response Status, Status, Outlet / Event, Contact Name, Contact Email, Topic / Subject, Notes, Source File, From Raw

Sync rules:

  • Main tab should contain conference/speaking opportunities only.
  • Primary Category can remain Conference as the broad bucket, while Subcategory explains keynote/panel/fireside/talk/retreat.
  • Preserve contact names/emails from existing rows when possible.
  • Overwrite stale podcast/press rows if they are present in Invitations.
  • After writing, re-read the range and verify row count plus no podcast/press name hits.

Use gog sheets update ... --values-json for bulk updates. Avoid one-cell micro-edits.

Frequently asked questions about Speaking Opportunities

Similar skills