{"id":6302,"plugin_id":"plugin_asdk_app_6a330a7730c081919892632d5baaec58","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T22:48:05.438Z","digest":"4df5df79d11ccc79f77e3a779c890c84205be42d7d239b59456ad18ec7d69a0c","against":null,"payload":{"description":"Discover which Devpost hackathon is open to enter before starting the guided flow. Use when the user wants to find, search, or browse hackathons, asks for a recommendation (\"recommend a hackathon\", \"which hackathon fits me/my project\"), or asks what hackathons are open or upcoming. This is the pre-stepper discovery step; setup and registration happen in $start-hackathon.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":229},{"relative_path":"references/SETUP.md","size_in_bytes":1231},{"relative_path":"references/config/hackathon.json","size_in_bytes":1897},{"relative_path":"references/content/learning/build.md","size_in_bytes":939},{"relative_path":"references/content/learning/checklist.md","size_in_bytes":618},{"relative_path":"references/content/learning/onboard.md","size_in_bytes":1333},{"relative_path":"references/content/learning/prd.md","size_in_bytes":972},{"relative_path":"references/content/learning/scope.md","size_in_bytes":403},{"relative_path":"references/content/learning/spec.md","size_in_bytes":356},{"relative_path":"references/content/steps/check.md","size_in_bytes":1150},{"relative_path":"references/content/steps/help.md","size_in_bytes":2595},{"relative_path":"references/content/steps/map.md","size_in_bytes":948},{"relative_path":"references/content/steps/prepare.md","size_in_bytes":1599},{"relative_path":"references/content/steps/resources.md","size_in_bytes":1601},{"relative_path":"references/content/steps/rules.md","size_in_bytes":840},{"relative_path":"references/content/steps/start.md","size_in_bytes":1868},{"relative_path":"references/plugin-runtime.md","size_in_bytes":11707}],"name":"find-hackathon","skill_md_contents":"---\nname: find-hackathon\ndescription: Discover which Devpost hackathon is open to enter before starting the guided flow. Use when the user wants to find, search, or browse hackathons, asks for a recommendation (\"recommend a hackathon\", \"which hackathon fits me/my project\"), or asks what hackathons are open or upcoming. This is the pre-stepper discovery step; setup and registration happen in $start-hackathon.\n---\n\n# Find Hackathon\n\n## Purpose\n\nShow the participant what is open to enter through this app, then point them to `$start-hackathon`.\n\nThis skill is discovery only. It writes no state file, performs no registration, and makes exactly one MCP call. Dates, prizes, rules, and announcements belong to later steps — do not fetch them here.\n\nThis is pre-stepper discovery. Do not call `show_hackathon_stepper` in this skill — the journey stepper starts at `$start-hackathon`.\n\nChat is the primary participant interface.\n\n## Required Data Source\n\nOfficial event data comes from the `devpost` MCP server — follow **Devpost MCP Server** in `references/plugin-runtime.md` (call only what you need, never verify or set up the server, degrade in one line on failure).\n\nThis skill uses exactly one tool: `devpost.list_open_hackathons` — the catalog of open or upcoming hackathons available through this app. Do not call `get_hackathon_overview`, `list_hackathons`, or `search_hackathons` here.\n\n## Required References\n\nRead before responding:\n\n- `references/plugin-runtime.md`\n- `references/config/hackathon.json`\n\n## Authentication\n\nEvery `devpost` tool call requires the participant to be signed in — there is no public tier. `list_open_hackathons` is this skill's auth gate: if it fails on auth, hard-stop per **On auth failure** in `references/plugin-runtime.md` (one-line notice, the sign-in recovery, and stop). Do not call `whoami` first — the required call is the gate.\n\n## Flow\n\n1. **If the user names a specific hackathon** (a Devpost slug like `my-event`, a clear event name, or a devpost.com URL), skip discovery entirely: tell them `$start-hackathon` sets it up, and per the affordance rule in `references/plugin-runtime.md`, treat any go-ahead (\"start it\", \"yes\", \"let's do it\") as that command and proceed on this turn.\n2. Otherwise call `list_open_hackathons` once.\n3. **One hackathon in the catalog (the current normal case):** show it — name, the devpost.com link, and a one-line description — and recommend `$start-hackathon`. Do not present a list of one.\n4. **More than one:** present a short numbered list (name, one-line descriptor, URL) and recommend `$start-hackathon`, naming their pick in the recommendation. Selection is resolved and recorded by `$start-hackathon`, not here.\n5. **Present the catalog honestly.** These are the hackathons live in this app right now — never claim they are the entire Devpost catalog, and never invent entries. Point anyone who wants the full picture at the Devpost browse page (`links.browse_hackathons` in `references/config/hackathon.json`). Do not use web search for discovery — ever.\n\n## Fallback\n\nIf `list_open_hackathons` fails on availability (not auth — the gate above owns auth failures), degrade in one line per `references/plugin-runtime.md` and point the participant at the Devpost browse page (`links.browse_hackathons` in `references/config/hackathon.json`). If they already know their event, `$start-hackathon` accepts a pasted name, slug, or URL.\n\n## Chat Output\n\nKeep chat output minimal:\n\n- the current hackathon (or the short list), with the devpost.com link and a one-line description\n- nothing else — no dates, prizes, or registration details; those come in later steps\n\nEnd with an enrollment callout as the final line, so the participant's advance is an acknowledged choice of hackathon — never a generic \"next\" detached from the event. The callouts below are templates: `[Event Name]` is a placeholder slot, NOT literal text. Interpolate the actual event name(s) from the `list_open_hackathons` response you just received on this turn; never output the bracketed placeholder itself, and never hardcode an event name into this skill.\n\nOne hackathon in the catalog:\n\n```text\nReady to enroll in [Event Name]? Say \"next\" and I'll get you registered — or type `$start-hackathon`.\n```\n\nMore than one:\n\n```text\nWhich one looks right? Tell me your pick — or type `$start-hackathon` and I'll set you up.\n```\n\nTreat \"next\", a named pick, \"start it\", or any clear go-ahead as `$start-hackathon` per the affordance rule.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}