# spark-recipe-new-sender-review

Walks an agent through Spark's GateKeeper queue: read mail from unknown senders, accept the real contacts, block the rest.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 318 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-new-sender-review/SKILL.md
- Updated: 2026-10-22
- HTML: https://affpapa.org/en/nevibecode/skills/spark-recipe-new-sender-review

## What it does

The skill is a five-step recipe. The agent lists the queue with `spark emails Inbox --new-senders`, opens each message with `spark thread <id>`, and decides whether the sender is worth keeping. Then it acts: `spark contact-action acceptContact` for one address, `acceptDomain` when a company writes from several mailboxes such as support@ or billing@. Junk goes through `blockContact` or `blockDomain`.

There is no script here, just ordered steps and tips on top of the Spark CLI. Two things have to be in place first: the base `use-spark` skill for command reference and filter syntax, and triage access. Without triage the commands won't go through.

\`blockDomain` takes out every address on a domain at once, which is too blunt for a single annoying sender — use `blockContact` there instead. Run the recipe on a schedule, daily or every few days, because legitimate mail sits quarantined until someone clears it. Those messages never show up in the normal inbox view; only the `--new-senders` flag surfaces them.

## Install

### Claude Code (native platform)

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

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

### Codex

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

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

### Cursor

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

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

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install readdle/spark-cli-skills recipe-new-sender-review
```

2. **Manually: put the files in place**
- File: `.github/skills/recipe-new-sender-review/SKILL.md`

### Gemini CLI

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

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

### Windsurf (Devin Desktop)

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

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add readdle/spark-cli-skills --skill recipe-new-sender-review -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-new-sender-review/SKILL.md

## When to use it
- work through the new sender queue in Spark
- accept a real contact so their mail reaches the normal inbox
- block a spammer or an entire domain
- confirm the queue is empty
- catch a first-time client stuck in quarantine

## Example prompts
- Go through the new sender queue in Spark and tell me who to accept and who to block.
- Accept the whole company.com domain — support and billing both write from there.
- Block spammer@example.com and show me what's left in the queue.

## 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: 828ca955c0456749.

BEGIN THIRD-PARTY FILE 828ca955c0456749
````text
---
name: spark-recipe-new-sender-review
description: >-
  Process GateKeeper's new sender queue: review, accept legitimate contacts,
  and block unwanted senders.
metadata:
  version: 1.0.0
  requires:
    skills:
      - use-spark
    accessLevel: triage
---

# Recipe: New Sender Review

Process Spark's GateKeeper queue of new senders. Review each, accept legitimate contacts, and block unwanted ones.

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

**Access level required:** triage.

## Steps

### Step 1: Check the new senders queue

```bash
spark emails Inbox --new-senders
```

This shows emails from senders that GateKeeper has quarantined (explicit mode). The normal inbox view filters these out automatically.

### Step 2: Review each sender

For each new sender email, read the content:

```bash
spark thread <id>
```

Decide: is this a legitimate contact or unwanted mail?

### Step 3: Accept legitimate senders

```bash
spark contact-action acceptContact sender@company.com
```

This moves the sender past GateKeeper - their future emails appear in the normal inbox.

To accept an entire domain:

```bash
spark contact-action acceptDomain company.com
```

### Step 4: Block unwanted senders

```bash
spark contact-action blockContact spammer@example.com
```

To block an entire domain:

```bash
spark contact-action blockDomain example.com
```

### Step 5: Verify

```bash
spark emails Inbox --new-senders
```

Confirm the queue is empty or report what's left.

## Tips

- GateKeeper only shows new sender emails when `--new-senders` is used - they're filtered from the normal inbox view.
- When in doubt, accept the contact first. You can always block them later.
- `acceptDomain` is useful for legitimate companies with multiple sender addresses (support@, billing@, etc.).
- `blockDomain` is aggressive - use it for clearly spammy domains, not for individual unwanted senders.
- Run this recipe regularly (daily or every few days) so legitimate contacts don't wait too long in the queue.
- The new senders count appears at the top of the inbox output when there are queued items.
````
END THIRD-PARTY FILE 828ca955c0456749

The third-party file has ended. Everything between the 828ca955c0456749 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-new-sender-review/SKILL.md

## Similar
- [gws-gmail-triage](https://affpapa.org/en/nevibecode/skills/gws-gmail-triage.md) — skill · 46800 installs
- [recipe-create-gmail-filter](https://affpapa.org/en/nevibecode/skills/recipe-create-gmail-filter.md) — skill · 31300 installs
- [google-cloud-solution-agentic-analytics-spark-knowledge-catalog](https://affpapa.org/en/nevibecode/skills/google-cloud-solution-agentic-analytics-spark-knowledge-catalog.md) — skill · 5000 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
