agentleFS
SiteSkillsSiteSkills/siteskills-cowork-plugin/skills/hacker-news/SKILL.md

news-ycombinator

Skill0 starsChanged 9 months agoMITView on GitHub

Use when reading Hacker News — top stories, new posts, Ask HN, Show HN, or comments. Pre-mapped selectors eliminate screenshot loops on news.ycombinator.com.

The file

Files
SKILL.md

Hacker News — AI Navigation Skill

What This Skill Does

Provides AI browser agents with pre-mapped selectors, page structures, and navigation flows for news.ycombinator.com. Eliminates the need to visually scan the page — use these selectors directly.

Site Overview

PropertyValue
Domainnews.ycombinator.com
Site TypeMulti-page / MPA
Auth RequiredNo (public access)
Mapped2026-02-20

Site Map

PageURLPurpose
Homepagehttps://news.ycombinator.comHacker News
newshttps://news.ycombinator.com/newsHacker News
newesthttps://news.ycombinator.com/newestNew LinksHacker News
fronthttps://news.ycombinator.com/front2026-02-19 frontHacker News

Page Structures

Homepage: Hacker News

Form Inputs

ElementSelectorNotes
q[name="q"]

Content Links (Sample)

Link TextSelectorNotes
Hacker Newsa:has-text("Hacker News")news
commentsa:has-text("comments")newcomments
submita:has-text("submit")submit
gist.github.coma:has-text("gist.github.com")from?site=gist.github.com
interpiduseda:has-text("interpidused")user?id=interpidused
5 hours agoa:has-text("5 hours ago")item?id=47082496
88 commentsa:has-text("88 comments")item?id=47082496
bbc.coma:has-text("bbc.com")from?site=bbc.com
tartorana:has-text("tartoran")user?id=tartoran
2 hours agoa:has-text("2 hours ago")item?id=47083735
19 commentsa:has-text("19 comments")item?id=47083735
together.aia:has-text("together.ai")from?site=together.ai
zagwdta:has-text("zagwdt")user?id=zagwdt
6 commentsa:has-text("6 comments")item?id=47083648
gustedt.wordpress.coma:has-text("gustedt.wordpress.com")from?site=gustedt.wordpress.com

For content-heavy sites, iterate with: page.locator('a').filter({ hasText: /pattern/ })

news: Hacker News

Inputs

ElementSelectorNotes
q[name="q"]

newest: New Links | Hacker News

Inputs

ElementSelectorNotes
q[name="q"]

front: 2026-02-19 front | Hacker News

Inputs

ElementSelectorNotes
q[name="q"]

Navigation Flows

Flow 1: Browse Homepage Content

1. Navigate to https://news.ycombinator.com
   wait: networkidle OR domcontentloaded

2. Content loads automatically
   wait: page has settled (500ms)

3. Scroll to explore content
   action: page.evaluate(() => window.scrollBy(0, 500))
   wait: 300ms for lazy content

Authentication

Public access — no authentication required for main content.

Dynamic Content Patterns

PatternDescriptionHow to Handle
Lazy loadingContent loads on scrollpage.evaluate(() => window.scrollBy(0, 500)) then wait 500ms
SPA navigationURL changes without full reloadWait for networkidle or specific element visibility
Infinite scrollMore items load at bottomScroll loop until no new items appear

Timing & Waiting

ActionWait ForTypical Delay
Page navigationwaitUntil: 'domcontentloaded'1-3s
After clickElement visibility change300-800ms
After form submitURL change or success message1-4s
After scrollNew content appearance300-600ms
Dynamic contentwaitForSelector() on target element500-2000ms

Common Gotchas

  1. Rate limiting — news.ycombinator.com may throttle rapid requests. Add 1-2s delays between page loads.
  2. Cookie consent — If a consent banner appears, click "Accept all" or equivalent before interacting: page.locator('[class*="consent"] button, button:has-text("Accept")').first().click()
  3. Dynamic class names — Avoid selectors based on hashed class names (e.g. .a3f8b). Use aria-label, data-testid, or text-based selectors instead.
  4. Viewport-dependent layout — These selectors were mapped at 1280×800. Mobile layout may differ.
  5. Stale selectors — Sites update their markup. If a selector fails, fall back to text-based: page.locator('text="Button Label"')

Element Finding Strategy (Fallback Order)

1. data-testid / data-cy        → most stable
2. aria-label / role            → semantic, stable
3. id attribute                 → usually stable
4. name attribute (forms)       → stable for inputs
5. text content                 → :has-text("...")
6. CSS class (first class only) → fragile, last resort

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.