Claude Code Plugins

Community-maintained marketplace

Feedback

Send beautifully formatted HTML digest emails summarizing open competitions, their status, and strategy. Supports dark mode, closing soon highlights, and multiple recipients.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name comp-scout-notify
description Send beautifully formatted HTML digest emails summarizing open competitions, their status, and strategy. Supports dark mode, closing soon highlights, and multiple recipients.

Competition Digest Notifier

Send beautifully formatted HTML email digests summarizing open competitions.

What This Skill Does

  1. Queries GitHub issues for open competitions
  2. Extracts competition details, strategy, and draft entries
  3. Formats as HTML email with dark mode support
  4. Highlights competitions closing soon
  5. Sends via SMTP to configured recipients

Prerequisites

  • gh CLI authenticated
  • Target repository with competition issues
  • SMTP credentials configured (for sending)

Configuration

Set environment variables or add to .env:

# SMTP Settings
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=your@email.com
SMTP_PASSWORD=app-specific-password

# Recipients (comma-separated)
EMAIL_TO=recipient1@email.com,recipient2@email.com
EMAIL_FROM=Competition Scout <your@email.com>

# Target repository (optional, uses config or default)
TARGET_REPO=discreteds/competition-data

Gmail Setup

For Gmail, create an App Password:

  1. Go to Google Account → Security → 2-Step Verification
  2. At bottom, click "App passwords"
  3. Generate password for "Mail"
  4. Use this as SMTP_PASSWORD

Workflow

Step 1: Build Digest

Query GitHub issues and build digest data:

python skills/comp-scout-notify/notifier.py json

This queries:

  • All open issues with competition label
  • Comments on each issue (for strategy/entries)

Step 2: Send Email

Send the digest to configured recipients:

python skills/comp-scout-notify/notifier.py send

Step 3: Preview (Optional)

Save HTML/TXT/JSON to /tmp for preview:

python skills/comp-scout-notify/notifier.py preview
# Then open /tmp/competition-digest.html in browser

Email Features

Dark Mode Support

Email automatically adapts to recipient's dark/light mode preference.

Quick Summary Table

Competition Prize Closes Status
Win $500 Gift Card $500 15 Dec Drafted
Win Trip to Bali $5,000 20 Dec Analyzed

Status shows: New → Analyzed → Drafted → Submitted

Closing Soon Section

Competitions closing within 3 days are highlighted in red with special section.

Competition Cards

Each competition shows:

  • Title with closing date badge
  • Prize summary
  • Prompt with word limit
  • Strategy (if analyzed): recommended tone, themes, angles
  • Draft entries (if composed)
  • "Enter Competition" button

Plain Text Fallback

For email clients that don't support HTML, a plain text version is included.

CLI Commands

# Send digest email
python skills/comp-scout-notify/notifier.py send

# Preview (save to /tmp)
python skills/comp-scout-notify/notifier.py preview

# Output JSON digest
python skills/comp-scout-notify/notifier.py json

Example Session

User: Send me a competition digest

Claude: I'll build and send the competition digest.

[Runs: python skills/comp-scout-notify/notifier.py send]

Building digest from discreteds/competition-data...
Found 12 competitions (3 closing soon)
Connecting to smtp.gmail.com:587...
Email sent to 2 recipient(s)

✅ Digest sent!

**Summary:**
- 12 total competitions
- 3 closing soon (highlighted)
- 8 with strategy
- 5 with draft entries

Recipients: user@email.com, other@email.com

Integration

With comp-scout-daily (End-to-End Workflow)

The notify skill is called automatically at the end of the daily workflow:

1. Scrape competitions
2. Analyze new ones
3. Compose entries
4. Send digest email ← comp-scout-notify

Standalone Usage

Can also be invoked directly:

  • "Send me a competition digest"
  • "Email me the competition summary"
  • "Send digest to user@email.com"

Data Extraction

From Issue Body

  • Title, URL, Brand
  • Prize summary
  • Closing date, Draw date
  • Winners notification
  • Prompt (from blockquote)

From Issue Comments

  • Strategy Analysis:
    • Sponsor category
    • Recommended tone
    • Themes, Words, Angles
    • Things to avoid
  • Entry Drafts:
    • Option text
    • Word count

From Issue Labels

  • entry-drafted → Has draft entries
  • entry-submitted → Already submitted
  • closing-soon → Closing within 3 days

Email Template Structure

┌─────────────────────────────────────┐
│  Competition Scout                  │
│  Monday, 9 December 2024            │
├─────────────────────────────────────┤
│  ┌────────┐ ┌────────┐              │
│  │   12   │ │   3    │              │
│  │ Total  │ │  New   │              │
│  └────────┘ └────────┘              │
├─────────────────────────────────────┤
│  Quick Summary Table                │
│  ┌───────────────────────────────┐  │
│  │ Competition │ Prize │ Closes │  │
│  ├───────────────────────────────┤  │
│  │ Win $500... │ $500  │ 15 Dec │  │
│  └───────────────────────────────┘  │
├─────────────────────────────────────┤
│  ⚡ Closing Soon (red section)      │
│  ┌───────────────────────────────┐  │
│  │ Competition Card              │  │
│  │ - Title + badges              │  │
│  │ - Prize                       │  │
│  │ - Prompt                      │  │
│  │ - Strategy                    │  │
│  │ - [Enter Competition]         │  │
│  └───────────────────────────────┘  │
├─────────────────────────────────────┤
│  All Competitions                   │
│  [Competition cards...]             │
├─────────────────────────────────────┤
│  Generated by Competition Scout     │
└─────────────────────────────────────┘

Troubleshooting

"SMTP credentials not configured"

Set SMTP_USERNAME and SMTP_PASSWORD environment variables.

"No recipients configured"

Set EMAIL_TO environment variable (comma-separated for multiple).

"Authentication failed" (Gmail)

  • Enable 2-Step Verification
  • Generate App Password (not your regular password)
  • Ensure "Less secure apps" is not the issue (use App Password instead)

Empty digest

  • Check TARGET_REPO points to correct repository
  • Verify issues have competition label
  • Run gh issue list -R REPO --label competition to verify