a11y-auditor
Audit web pages for accessibility issues in a real browser. Checks contrast, font sizes, focus indicators, keyboard navigation, ARIA labels, and semantic HTML…
Search for apartments across multiple real estate platforms, compare listings side by side, and help submit inquiries or applications. Use when the user wants to find a place to rent — searching Zillow, Apartments.com, Craigslist, and similar sites with their real signed-in
$ npx -y skills add hanzili/hanzi-browse --skill apartment-finder --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/apartment-finderContext preview
The summary Claude sees to decide when to auto-load this skill.
Search for apartments across multiple real estate platforms, compare listings side by side, and help submit inquiries or applications. Use when the user wants to find a place to rent — searching Zillow, Apartments.com, Craigslist, and similar sites with their real signed-in
name: apartment-finder description: 'Search for apartments across multiple real estate platforms, compare listings side by side, and help submit inquiries or applications. Use when the user wants to find a place to rent — searching Zillow, Apartments.com, Craigslist, and similar sites with their real signed-in browser. Examples: "find me a 1BR in Boston under $2000", "search apartments near downtown Seattle and compare options", "help me apply to these listings".' category: life
You search for apartments across multiple platforms using the user's real signed-in browser, compare listings in a structured table, and help fill out inquiry or application forms — always confirming before submitting anything.
Call `browser_status` to verify the browser extension is reachable. If unavailable:
> **Hanzi isn't set up yet.** This skill needs the hanzi browser extension running in Chrome. > > 1. Install from the Chrome Web Store: https://chromewebstore.google.com/detail/hanzi-browse/iklpkemlmbhemkiojndpbhoakgikpmcd > 2. The extension will walk you through setup (~1 minute) > 3. Then come back and run this again
---
Before opening a browser, confirm all of the following:
1. **Location** — city, neighborhood, or zip code (the more specific, the better) 2. **Budget** — monthly rent range (min and max) 3. **Bedrooms** — studio / 1BR / 2BR / etc. 4. **Move-in date** — approximate date or "ASAP" 5. **Roommates** — solo or shared? If shared, how many people total? 6. **Commute destination** — address or neighborhood to estimate commute from (optional but useful) 7. **Must-haves** — pets, parking, laundry, furnished, utilities included, etc. 8. **Platforms to search** — defaults to Zillow + Apartments.com + Craigslist if not specified
If any required field is missing, ask before proceeding. Don't guess on budget or location.
---
Search each platform sequentially. For each platform:
1. Navigate to the site and apply filters (location, price, bedrooms, move-in date) 2. Scroll through results and collect the top listings (aim for 5–10 per platform) 3. For each listing, record:
4. Take a screenshot of each platform's results page
**Platforms and starting URLs:**
| Platform | URL | |----------|-----| | Zillow | https://www.zillow.com/homes/for_rent/ | | Apartments.com | https://www.apartments.com/ | | Craigslist | https://[city].craigslist.org/search/apa | | Redfin | https://www.redfin.com/apartments-for-rent |
Domain-specific interaction tips for Zillow, Apartments.com, and Craigslist are injected automatically into your system prompt when you navigate to those sites (they live in `server/src/agent/domain-skills.json`). Follow whatever that guidance says.
After searching all platforms, proceed to Phase 2.
---
Present all collected listings in a single comparison table:
| # | Platform | Price/mo | Bedrooms | Address/Area | Sq Ft | Available | Pets | Parking | Link | |---|----------|----------|----------|--------------|-------|-----------|------|---------|------| | 1 | Zillow | $1,850 | 1BR/1BA | South End | 680 | May 1 | Yes | Street | [url]| | 2 | Craigslist | $1,700 | 1BR | Jamaica Plain| — | Immed. | No | — | [url]| ...
If the user provided a commute destination, add a **Commute** column with estimated travel time (use Google Maps directions if possible, or note "~20 min by T" based on neighborhood knowledge).
After the table, add a short summary:
Ask: **"Which listings would you like to inquire about or apply to?"**
---
For each listing the user selects:
1. **Find the contact method** — inquiry form, email, or phone number 2. **Draft the message** before sending. Show the draft to the user:
To: [landlord/property name] Re: [unit address] Hi, I'm interested in the [1BR] unit at [address] listed at $[price]/month. I'm looking to move in around [date] and would love to schedule a viewing. [name from user]
3. **Wait for explicit approval** before submitting. Never send without confirmation. 4. After sending, take a screenshot as confirmation. 5. Log each contacted listing to `~/.hanzi-browse/apartment-contacts.txt`:
[date] | [platform] | [address] | [price] | [contact method] | [status: sent/pending]
---
**Flag these as potential scams — do not contact without warning the user:**
**Never fill in:**
**Application forms** (Zillow, Apartments.com built-in application
The context layer for browsing agents. Your browsing agent keeps failing on real sites — X uses Draft.js, LinkedIn hides the connect button, Gmail needs keyboard shortcuts.
Repo: hanzili/hanzi-browse
Audit web pages for accessibility issues in a real browser. Checks contrast, font sizes, focus indicators, keyboard navigation, ARIA labels, and semantic HTML…
Monitor competitor websites for changes. Visit a list of URLs, extract pricing, features, positioning, and key content, compare against previous snapshots…
Research SaaS and AI-tool competitors in a real browser. Visit competitor sites, pricing pages, feature pages, and review platforms to extract pricing,…
Extract structured data from websites into CSV or JSON. Use when the user wants to scrape a list, table, directory, or repeated elements from one or more pages…
Test a web app like a QA person — open it in a real browser, click through flows, and report what's broken with screenshots and code references. Works on…
Delegates a browsing task to a sub-agent running in the USER'S OWN Chrome — the browser they have open right now, already signed into everything. Give it a…