End-to-end automated daily competition workflow. Orchestrates scrape, analyze, compose, and notify skills - all unattended for cron execution.
Automates the complete daily competition workflow end-to-end. Orchestrates scraping, deduplication, analysis, entry composition, and email notifications for cron execution without any user prompts.
/plugin marketplace add discreteds/competition-scout/plugin install competition-scout@competition-scoutThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Automated end-to-end workflow for cron/scheduled execution. Orchestrates other skills rather than duplicating their logic.
This skill MUST run completely unattended with NO user prompts.
When this skill is invoked:
If you find yourself about to ask a question, STOP and use the default behavior instead.
Each competition should only be stored ONCE, even if it appears on multiple sites.
Before creating any issue, you MUST:
gh issue list -R $TARGET_REPO --label competition --state all --json number,title,body --limit 500Word limit clarification: "25WOL" is a category name. Competitions with 25, 50, or 100 word limits are all valid - persist them (if new).
Auto-tagging (for-kids, cruise) is for LABELING, not skipping:
This skill is a workflow orchestrator that invokes other skills in sequence:
┌─────────────────┐
│ comp-scout-daily│
└────────┬────────┘
│
▼
┌─────────────────┐ Scrapes listings, fetches details,
│ comp-scout-scrape│────▶ checks duplicates, persists issues
└────────┬────────┘
│
▼ (for each new, non-filtered issue)
┌─────────────────┐
│comp-scout-analyze│────▶ Generates strategy (--unattended)
└────────┬────────┘
│
▼
┌─────────────────┐
│comp-scout-compose│────▶ Drafts entries (--unattended)
└────────┬────────┘
│
▼
┌─────────────────┐
│comp-scout-notify │────▶ Sends email digest
└─────────────────┘
Runs completely unattended - no user prompts during execution.
gh CLI authenticatedpip install playwright && playwright install chromium"Perform daily competition scout"
"Run the daily comp scout workflow"
"Do the morning competition scrape and analysis"
# Daily at 7am
0 7 * * * claude -p "Perform daily competition scout" >> /var/log/comp-scout.log 2>&1
Determine target repository and load user preferences:
TARGET_REPO="${TARGET_REPO:-discreteds/competition-scout-25WOL}"
# Fetch user preferences from data repo
gh api repos/$TARGET_REPO/contents/CLAUDE.md -H "Accept: application/vnd.github.raw" 2>/dev/null
Parse from CLAUDE.md:
Execute the scrape workflow directly - no questions asked.
YOU MUST:
Key point: Most scraped competitions will already be tracked. Only create issues for truly new ones.
Output: List of new issue numbers created (usually 0-3 per day)
For each new, non-filtered issue: analyze strategy immediately.
YOU MUST:
DO NOT ask "Would you like me to analyze?" - JUST DO IT.
For each new, non-filtered issue: compose entries immediately.
YOU MUST:
DO NOT ask "Would you like me to compose entries?" - JUST DO IT.
Query for competitions closing within 3 days:
gh issue list -R "$TARGET_REPO" \
--label "competition" \
--state open \
--json number,title,body,labels
Parse closing dates and flag urgent items.
Delegate to the notify skill for email digest.
Invoke: comp-scout-notify send
Output: Email sent to configured recipients
## Daily Competition Scout Report - 2025-12-09
### Summary
- **New competitions:** 5
- **Auto-filtered:** 2 (1 for-kids, 1 cruise)
- **Analyzed and drafted:** 3
- **Duplicates added:** 1
### New Competitions (Ready for Entry)
| Issue | Competition | Closes | Story Used | Recommended |
|-------|-------------|--------|------------|-------------|
| #15 | Win $500 Coles Gift Card | Dec 31 | Generic | Option 2 |
| #16 | Win a Spa Day | Jan 5 | Margot Deserves Pampering | Option 1 |
| #17 | Win Kitchen Appliance | Dec 20 | Generic | Option 3 |
### Auto-Filtered (Created + Closed)
| Issue | Competition | Reason |
|-------|-------------|--------|
| #18 | Win Lego Set | for-kids (keyword: Lego) |
| #19 | Win P&O Cruise | cruise (keyword: P&O) |
### Closing Soon - Action Needed
| Issue | Competition | Days Left | Status |
|-------|-------------|-----------|--------|
| #12 | Woolworths Gift Cards | 1 | entry-drafted |
| #14 | TVSN Prize Pack | 2 | entry-drafted |
### Recommendations
1. **Priority:** #12 closes tomorrow - entry drafted, recommend Option 2
2. **High value:** #16 Spa Day ($500) - entry uses saved story, strong fit
3. **Review:** #17 Kitchen Appliance - closes in 11 days, time to refine
The skill makes NO interactive prompts during execution:
| Decision | Automatic Behavior |
|---|---|
| Story selection | Use best keyword-matching saved story, or generic approach |
| Entry generation | All entries drafted with star ratings; recommendation noted |
| Filter decisions | Based on keywords in CLAUDE.md preferences |
| Duplicates | Add comment to existing issue automatically |
| Tone selection | Based on sponsor category (see comp-scout-analyze) |
All choices are logged in the report for user review.
| Error | Behavior |
|---|---|
| Scrape fails for one site | Log error, continue with other site |
| Issue creation fails | Log error, skip to next competition |
| Analyze fails for one issue | Log error, skip compose for that issue |
| Compose fails for one issue | Log error, continue to next issue |
| Notify fails | Log error, report still generated |
| No new competitions | Report "No new competitions found" |
Errors are included in the final report.
TARGET_REPO=discreteds/competition-scout-25WOL
Must contain:
This skill orchestrates - it does not duplicate logic:
| Skill | Invoked By Daily | Mode |
|---|---|---|
| comp-scout-scrape | Yes | Automatic (handles own persistence) |
| comp-scout-analyze | Yes | --unattended flag |
| comp-scout-compose | Yes | --unattended flag |
| comp-scout-notify | Yes | Automatic |
| comp-scout-persist | No | Logic merged into scrape |
Individual skills remain available for interactive use when you want manual control.
$ claude -p "Perform daily competition scout"
Starting daily competition scout...
Phase 1: Loading configuration
Target repo: discreteds/competition-scout-25WOL
Filter rules: for-kids (9 keywords), cruise (6 keywords)
Saved stories: 2 available
Phase 2: Invoking comp-scout-scrape
competitions.com.au: 8 competitions
netrewards.com.au: 5 competitions
New issues created: #43, #44, #45
Filtered issues (closed): #46, #47
Duplicate comments: #38
Phase 3: Invoking comp-scout-analyze (--unattended)
#43: Strategy added (Food/beverage → Relatable, sensory)
#44: Strategy added (Travel → Discovery, bucket-list)
#45: Strategy added (Tech → Knowledgeable, self-aware humor)
Phase 4: Invoking comp-scout-compose (--unattended)
#43: 3 entries drafted (using saved story: Sunday BBQ)
#44: 4 entries drafted (generic approach)
#45: 3 entries drafted (generic approach)
Phase 5: Checking closing soon
3 competitions closing within 3 days
Phase 6: Invoking comp-scout-notify
Email sent to 2 recipients
## Daily Competition Scout Report - 2025-12-09
[Full report as shown above]
DRY (Don't Repeat Yourself): This skill invokes other skills rather than reimplementing their logic. This means:
If you need to change how analysis works, change comp-scout-analyze - the daily workflow will automatically use the updated logic.