/apartment-finder
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.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/apartment-finder
Context 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
SKILL.md
apartment-finder.SKILL.mdname: 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
Apartment Finder
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.
Tool Selection Rule
- **Use Hanzi for all apartment searches** — listings require real browsing: dynamic filters, map views, saved searches, and inquiry forms don't work with plain HTTP.
- **Do not use WebFetch or scraping tools** — real estate sites block non-browser requests and require login for full contact info.
- **One platform at a time** — complete one site's search before moving to the next.
Before Starting — Preflight Check
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
---
What You Need From the User
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.
---
Phase 1 — Search
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:
- **Title / unit name**
- **Price** (monthly rent)
- **Address or neighborhood**
- **Bedrooms / bathrooms**
- **Square footage** (if shown)
- **Available date**
- **Key amenities** (pets, parking, laundry, gym, etc.)
- **Listing URL**
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.
---
Phase 2 — Compare
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:
- Cheapest option
- Best value (price vs. amenities)
- Any listings that look suspicious (see Safety section)
- Recommended top 3 to contact
Ask: **"Which listings would you like to inquire about or apply to?"**
---
Phase 3 — Contact
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]
---
Safety
**Flag these as potential scams — do not contact without warning the user:**
- Price significantly below market rate for the area (>25% cheaper than comparable listings)
- Only contact method is a personal Gmail/Yahoo with no other info
- Listing says "owner is overseas" or "send deposit to hold the unit"
- No photos or generic stock photos
- Craigslist listings asking to text or WhatsApp before viewing
**Never fill in:**
- Payment information, credit card, or bank account numbers
- Social Security Number unless user explicitly confirms they are on an official, verified application platform
- Background check portals that aren't linked directly from a verified property management site
**Application forms** (Zillow, Apartments.com built-in application
Read more
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
Apartment Finder
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.
Tool Selection Rule
- **Use Hanzi for all apartment searches** — listings require real browsing: dynamic filters, map views, saved searches, and inquiry forms don't work with plain HTTP.
- **Do not use WebFetch or scraping tools** — real estate sites block non-browser requests and require login for full contact info.
- **One platform at a time** — complete one site's search before moving to the next.
Before Starting — Preflight Check
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
---
What You Need From the User
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.
---
Phase 1 — Search
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:
- **Title / unit name**
- **Price** (monthly rent)
- **Address or neighborhood**
- **Bedrooms / bathrooms**
- **Square footage** (if shown)
- **Available date**
- **Key amenities** (pets, parking, laundry, gym, etc.)
- **Listing URL**
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.
---
Phase 2 — Compare
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:
- Cheapest option
- Best value (price vs. amenities)
- Any listings that look suspicious (see Safety section)
- Recommended top 3 to contact
Ask: **"Which listings would you like to inquire about or apply to?"**
---
Phase 3 — Contact
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]
---
Safety
**Flag these as potential scams — do not contact without warning the user:**
- Price significantly below market rate for the area (>25% cheaper than comparable listings)
- Only contact method is a personal Gmail/Yahoo with no other info
- Listing says "owner is overseas" or "send deposit to hold the unit"
- No photos or generic stock photos
- Craigslist listings asking to text or WhatsApp before viewing
**Never fill in:**
- Payment information, credit card, or bank account numbers
- Social Security Number unless user explicitly confirms they are on an official, verified application platform
- Background check portals that aren't linked directly from a verified property management site
**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
Other skills on hanzi-browse.
- /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 against WCAG 2.1 AA. Reports findings with screenshots and specific remediation steps. Requires the hanzi browser
Open skill - /competitor-monitor
Monitor competitor websites for changes. Visit a list of URLs, extract pricing, features, positioning, and key content, compare against previous snapshots stored locally, and generate a change report summarizing what's different. Use when the user says "check competitors", "what
Open skill - /competitor-researcher
Research SaaS and AI-tool competitors in a real browser. Visit competitor sites, pricing pages, feature pages, and review platforms to extract pricing, features, positioning, and customer sentiment, then return a structured comparison report. Use when the user wants competitor
Open skill - /data-extractor
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 — especially pages that require login, handle CAPTCHAs, or load content dynamically. Examples: "pull all company names
Open skill - /e2e-tester
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 localhost. Use when the user wants to test their app, verify a flow works, check for visual bugs, or validate changes before
Open skill - /hanzi-browse
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 task in natural language ("check my LinkedIn DMs", "post this reply on X", "test signup on localhost:3000") and watch the
Open skill

