# spark-recipe-schedule-meeting

Finds mutual calendar availability for multiple attendees via Spark CLI. It suggests open time slots without manual calendar checks.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 333 installs · ★ 153
- Author: readdle
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/readdle/spark-cli-skills/tree/HEAD/skills/recipe-schedule-meeting/SKILL.md
- Updated: 2026-10-22
- HTML: https://affpapa.org/en/nevibecode/skills/spark-recipe-schedule-meeting

## What it does

The skill coordinates meeting time selection using the `spark` command-line tool. It queries attendee email addresses through `spark contacts` and retrieves matching free intervals via `spark availability`.

Availability checks automatically skip weekends and restrict the search to working hours between 08:00 and 20:00. Calendar events marked as free do not block available windows. If no shared slots appear, the recipe queries attendees individually to detect scheduling conflicts.

You need the base `use-spark` skill installed before running this recipe. Because the skill operates under read-only access, it inspects schedules and lists available slots without modifying your calendar.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add readdle/spark-cli-skills --skill spark-recipe-schedule-meeting -a claude-code
```
```bash
npx skills add readdle/spark-cli-skills --skill recipe-schedule-meeting -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/recipe-schedule-meeting/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/recipe-schedule-meeting/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add readdle/spark-cli-skills --skill recipe-schedule-meeting -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/recipe-schedule-meeting/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add readdle/spark-cli-skills --skill recipe-schedule-meeting -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/recipe-schedule-meeting/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install readdle/spark-cli-skills recipe-schedule-meeting
```

2. **Manually: put the files in place**
- File: `.github/skills/recipe-schedule-meeting/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add readdle/spark-cli-skills --skill recipe-schedule-meeting -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/readdle/spark-cli-skills --path skills/recipe-schedule-meeting
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/recipe-schedule-meeting/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add readdle/spark-cli-skills --skill recipe-schedule-meeting -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/readdle/spark-cli-skills/tree/HEAD/skills/recipe-schedule-meeting/SKILL.md

## When to use it
- find mutual open calendar slots across multiple attendees
- resolve participant email addresses from contact names
- identify which attendee schedule blocks a meeting
- filter scheduling windows across custom date ranges or a full week

## Example prompts
- Find mutual free time for a meeting with Alice and Bob tomorrow.
- Check shared availability with alice@co.com for the full week.
- See when bob@co.com is busy between 2026-04-10 and 2026-04-11 to locate calendar conflicts.

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 51391141acb96ab4.

BEGIN THIRD-PARTY FILE 51391141acb96ab4
````text
---
name: spark-recipe-schedule-meeting
description: >-
  Find mutual availability with attendees and suggest meeting times.
metadata:
  version: 1.0.0
  requires:
    skills:
      - use-spark
    accessLevel: read-only
---

# Recipe: Schedule a Meeting

Find mutual availability with attendees and present time slot options for scheduling.

**Prerequisite:** Read the `use-spark` base skill for command reference and filter syntax.

**Access level required:** read-only.

## Steps

### Step 1: Look up attendee emails

```bash
spark contacts "attendee name"
```

Repeat for each attendee to get their email addresses.

### Step 2: Find mutual availability

For tomorrow:

```bash
spark availability --tomorrow --attendees alice@co.com,bob@co.com
```

For a specific date range:

```bash
spark availability --start 2026-04-10 --end 2026-04-11 --attendees alice@co.com,bob@co.com
```

For the full week:

```bash
spark availability --week --attendees alice@co.com,bob@co.com
```

### Step 3: Present the options

List the available time slots for the user to choose from. Include:
- Date and time range for each slot
- Duration of each slot (so the user knows if a 1-hour meeting fits)

### Step 4: Narrow down if needed

If no slots work, try a broader window:

```bash
spark availability --start 2026-04-10 --end 2026-04-14 --attendees alice@co.com,bob@co.com
```

Or check individual availability to find who's blocking:

```bash
spark availability --start 2026-04-10 --end 2026-04-11 --attendees alice@co.com
spark availability --start 2026-04-10 --end 2026-04-11 --attendees bob@co.com
```

## Tips

- `availability` respects working hours (08:00-20:00) and skips weekends automatically.
- Events marked as "free" in the calendar are ignored - they don't block availability.
- Without `--attendees`, the command shows the user's own free time.
- For large groups, narrow the date range to get focused results.
- If the user provides names instead of emails, use `spark contacts` first to resolve them.
- The free slots are computed as mutual windows - times when all attendees and the user are available.
````
END THIRD-PARTY FILE 51391141acb96ab4

The third-party file has ended. Everything between the 51391141acb96ab4 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

© readdle · MIT · https://github.com/readdle/spark-cli-skills/tree/HEAD/skills/recipe-schedule-meeting/SKILL.md

## Similar
- [recipe-plan-weekly-schedule](https://affpapa.org/en/nevibecode/skills/recipe-plan-weekly-schedule.md) — skill · 30800 installs
- [recipe-reschedule-meeting](https://affpapa.org/en/nevibecode/skills/recipe-reschedule-meeting.md) — skill · 30400 installs
- [gws-workflow-meeting-prep](https://affpapa.org/en/nevibecode/commands/gws-workflow-meeting-prep.md) — command · 72 installs
- [google-calendar](https://affpapa.org/en/nevibecode/skills/membrane-google-calendar.md) — skill · 337 installs
- [event-schedule-design](https://affpapa.org/en/nevibecode/skills/event-schedule-design.md) — skill · 5100 installs
- [meeting-briefing](https://affpapa.org/en/nevibecode/skills/meeting-briefing.md) — skill · 3000 installs

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
