From competition-scout
Generate authentic, memorable competition entries (25 words or less) and auto-persist to GitHub issue. Creates multiple variations with different arcs and tones.
How this skill is triggered — by the user, by Claude, or both
Slash command
/competition-scout:skills/comp-scout-composeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate authentic, memorable "25 words or less" competition entries and **automatically save to GitHub issue**.
Generate authentic, memorable "25 words or less" competition entries and automatically save to GitHub issue.
| Mode | Behavior |
|---|---|
| Interactive (default) | Ask for user context, stories, tone preferences |
| Unattended | Use saved stories or generic approach, no prompts |
The comp-scout-daily workflow always invokes this skill in unattended mode.
When run interactively, this skill asks:
When invoked with --unattended or by comp-scout-daily:
entry-drafted label to the issueNo manual "please save entries" step required.
comp-scout-analyze (recommended)Optional flags:
--unattended - Skip all interactive prompts, use saved stories or generic approachBefore asking for new context, check if saved stories from the data repo match this competition.
gh api repos/$TARGET_REPO/contents/CLAUDE.md -H "Accept: application/vnd.github.raw" 2>/dev/null
Parse the Saved Stories section for story entries
For each story, calculate relevance by matching story keywords against:
If matching stories found, present them:
I found saved stories that might work for this competition:
1. **Opa's German Christmas** (3 keyword matches: christmas, chocolate, family)
Theme: Nostalgia, heritage, German traditions
2. **Teaching Daughter to Cook** (1 keyword match: kitchen)
Theme: Family moments, passing on traditions
Would you like to use one of these, or provide new context?
If user selects a story, use its details for entry composition (skip Step 1)
If user provides new context AND it's rich enough to reuse, offer to save:
That's great context! Would you like me to save this as a story for future competitions?
Suggested name: "Sunday BBQ Traditions"
Themes: barbecue, summer, Australian lifestyle
Keywords: bbq, summer, meat, outdoor, gathering
To save a new story, update the data repo's CLAUDE.md with the new story entry.
Before drafting, ask clarifying questions:
Essential:
Helpful:
If user has no connection:
Generic entries lose. The goal is specificity that makes judges smile in recognition.
Transformation examples:
| Generic | Specific |
|---|---|
| "I love cooking" | "Sunday arvo freezer audit before the weekly shop" |
| "I want to relax" | "Like my shoulders have dropped from my ears" |
| "I like Japan" | "Horseback archery champs, bonsai masters, noodle competitions" |
| "I need ice" | "The person who forgot to refill the ice tray mid-barbecue" |
| "I love coffee" | "The only five minutes that's mine before school run chaos" |
| "I want to travel" | "We've done Japan at full speed. Time to walk it slowly." |
Questions to surface hooks:
Choose the arc that best fits the tone and content:
Sincere Arc (wellness, luxury, emotional prizes)
Structure:
Example (wellness retreat):
"My partner nurtures everyone else first. Always. Her mind, body, and soul have been running on empty. She's earned this."
Comedic Arc (setup → pivot → callback)
Structure:
Example (solar panels):
"Befriend a neighbour with a pool. Run the laundry while the sun shines. I can watch my panels work, while I float!"
Self-Deprecating Arc (relatable failure → redemption)
Structure:
Example (ice maker):
"Every summer barbecue I realise I'm the person who forgot to refill the ice tray, and I can't do a servo run mid-barbecue. Finally, I become the host who is prepared for everything—except an empty gas bottle."
List → Pivot Arc (travel, experience prizes)
Structure:
Example (Japan walking tour):
"Horseback archery world champs. World's best bonsai. Noodle-making competitions. We've done Japan at full speed. Time to finally walk it slowly."
Sensory Arc (food, beverage, experiential)
Structure:
Example (early holiday memory):
"Ulladulla at four. Dad handed me my first oyster. Too slimy to chew. Swallowed it whole like a little pelican."
Generate 3-5 entries with different approaches:
For each entry, provide:
After user selects a direction:
Tighten word economy:
Strengthen the landing:
Check rhythm:
Verify compliance:
Before delivering final entry:
Add entries as comment and add label:
# Add entry drafts as comment
gh issue comment $ISSUE_NUMBER -R "$TARGET_REPO" --body "$(cat <<'EOF'
## Entry Drafts
### Option 1 ({word_count} words) ⭐⭐⭐⭐⭐
> {entry_text}
Arc: {arc_type}
Notes: {notes}
### Option 2 ({word_count} words) ⭐⭐⭐⭐
> {entry_text}
Arc: {arc_type}
Notes: {notes}
### Option 3 ({word_count} words) ⭐⭐⭐
> {entry_text}
Arc: {arc_type}
Notes: {notes}
**Recommendation:** Option {n} - {reason}
---
*Generated: {date}*
EOF
)"
# Add label to indicate entries are drafted
gh issue edit $ISSUE_NUMBER -R "$TARGET_REPO" --add-label "entry-drafted"
✅ Entries saved to issue #42!
**3 entry options drafted:**
- Option 1 (24 words) ⭐⭐⭐⭐⭐ - Self-deprecating list
- Option 2 (25 words) ⭐⭐⭐⭐ - Confession
- Option 3 (23 words) ⭐⭐⭐ - Practical humour
**Recommendation:** Option 1
**Label added:** `entry-drafted`
(In interactive mode: "Which option do you want to submit?")
Tone:
Content:
Structure:
entries:
- text: "The actual entry text goes here, exactly as it should be submitted."
word_count: 24
arc_type: "self_deprecating"
approach: "Confession → resolution with self-aware undercut"
landing_strength: 4
notes: "Relatable summer hosting struggle, personality in the undercut"
- text: "Second variation with different approach..."
word_count: 23
arc_type: "sincere"
approach: "Problem → vivid consequence → hopeful resolution"
landing_strength: 5
notes: "Strongest landing, 'dignity melts' is memorable"
- text: "Third variation..."
word_count: 25
arc_type: "comedic_list"
approach: "Establish credentials → pivot to weakness"
landing_strength: 3
notes: "Solid structure but landing could be stronger"
recommendation: 1 # 0-indexed
recommendation_reason: "Best balance of specificity, personality, and strong landing"
issue_number: 42
persisted: true
User: Write entries for issue #42
Claude: I'll write entries for this competition.
[Reads issue #42]
Competition: Win a $500 Coles Gift Card
Prompt: "Tell us in 25 words or less what you'd buy"
First, a few questions to find your authentic angle:
1. What do you typically buy at Coles?
2. Any specific situation where $500 would help?
3. Tone preference: practical/sincere or humorous?
User: We do our weekly shop there. Always buying for the kids. Would love to
just buy nice things for once instead of bulk snacks and school lunch stuff.
Claude: That's a great angle - the "finally treating yourself" vs endless kid supplies.
## Entry Drafts
### Option 1: Self-Deprecating List (24 words) ⭐⭐⭐⭐⭐
> "Tiny teddies. Zooper doopers. Le Snaks. Cheese stringers. For once, I'd
> fill a trolley with things that aren't in a lunchbox."
Arc: List of kid stuff → pivot to self
Landing: 5/5 - "aren't in a lunchbox" is specific and relatable
### Option 2: Confession (25 words) ⭐⭐⭐⭐
> "I know every lunchbox snack by heart but forgot what cheese I actually
> like. Five hundred dollars of rediscovering my own taste buds."
Arc: Confession → resolution
Landing: 4/5 - "own taste buds" works but slightly abstract
### Option 3: Practical Humour (23 words) ⭐⭐⭐
> "School lunches sorted for a term. Then with whatever's left—maybe
> $4.50—something from the fancy cheese section. Just for me."
Arc: Practical → undercut → treat
Landing: 3/5 - Good but "$4.50" joke might not land for everyone
**Recommendation:** Option 1 - The specific snack names are immediately
recognisable to any parent, and the landing is both relatable and punchy.
[Runs: gh issue comment 42 --body "..."]
[Runs: gh issue edit 42 --add-label "entry-drafted"]
✅ Entries saved to issue #42!
- Added 3 entry options as comment
- Added `entry-drafted` label
Note: When run in unattended mode (via comp-scout-daily), do NOT ask "Which option do you want to submit?" - the workflow will report all results at the end.
When running in unattended mode (e.g., via comp-scout-daily), the skill:
The skill reads saved stories from the target repo's CLAUDE.md and matches by:
If no story matches (score = 0), use generic approach based on:
| Arc Type | Pattern | Example |
|---|---|---|
| Sincere | Honest need → aspiration | "My kitchen sees more takeaway containers than..." |
| Self-deprecating | Confession → resolution | "I've tried every [X], but this is the one..." |
| Sensory | Scene → vivid detail | "The moment when [specific sensory detail]..." |
| List-pivot | Credentials → gap | "I've done X, Y, Z. But never [this prize]." |
| Comedic | Setup → pivot | "My partner says I [quirk]. [Prize] would..." |
The daily workflow invokes this skill as:
For each new competition issue (after analyze):
1. Read issue details + strategy comment
2. Load saved stories from CLAUDE.md
3. Run comp-scout-compose with --unattended
4. Entries are auto-persisted as comment
5. entry-drafted label added
This skill:
comp-scout-analyze (optional but recommended)entry-drafted label for trackingentry-submitted label)comp-scout-daily in unattended modenpx claudepluginhub discreteds/competition-scout --plugin competition-scoutWrites award submissions and grant applications mapping achievements to criteria using evidence tables and STAR narratives.
Writes compelling award/competition submissions framing a media project's significance, craft, and impact for judging panels, structured to score well.
Generates organic content scripts (Reels, TikTok, carousels, static posts) and repurposes sales videos into short clips. For new script creation or excerpting, not competitor research or paid ads.