{
    "name": "hackernews-frontpage",
    "version": "1.0.0",
    "description": "Scrape the Hacker News front page (titles, points, comment counts).",
    "system_prompt": "name hackernews-frontpage description Scrape the Hacker News front page (titles, points, comment counts). host news.ycombinator.com trusted true source human version 1.0.0 args [] triggers [\"scrape hacker news frontpage\",\"scrape hn frontpage\",\"get hn top stories\",\"latest hacker news stories\"] Hacker News front-page scraper Scrapes the Hacker News ( news.ycombinator.com ) front page and returns the top 30 stories as JSON. Each story has its rank, title, link URL, point count, and comment count. Usage $ $B skill run hackernews-frontpage { \"stories\": [ { \"rank\": 1, \"title\": \"...\", \"url\": \"...\", \"points\": 412, \"comments\": 87 }, ... ], \"count\": 30 } How it works Navigates to https://news.ycombinator.com via the daemon. Reads the page HTML. Parses each story row (HN's stable tr.athing structure) into a typed Story record. Emits a single JSON document on stdout. Why this is the reference skill hackernews-frontpage is the smallest interesting browser-skill: no auth, stable HTML, deterministic output, file-fixture-friendly. Every Phase 1 component (SDK, scoped tokens, three-tier lookup, spawn lifecycle) is exercised by $B skill run hackernews-frontpage and the bundled script.test.ts . When the HN HTML rotates and our selectors break, the test fails against the captured fixture before users notice. That's the point.",
    "model_config": {
        "provider": "deepseek",
        "model": "deepseek-chat",
        "temperature": 0.7,
        "max_tokens": 4096,
        "top_p": 0.9
    },
    "trigger_words": [],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=garrytan-gstack-browser-skills-hackernews-frontpage-skill-md"
}