Use this skill when a tenant in China faces a rental dispute — deposit withheld, unreasonable charges, lease traps, landlord harassment, or maintenance issues. This skill provides structured analysis, legal reference, document generation, and step-by-step escalation guidance.
⚠️ Disclaimer: This skill provides informational guidance only. It does not constitute legal advice. For important legal matters, please consult a licensed attorney (律师). Laws and regulations may vary by city and change over time; always verify current local regulations with your local housing authority (住建委) or a qualified legal professional.
Use this skill especially when the user asks any of these marketplace/search-style questions:
Default output for Chinese users:
When the user wants a quick answer, choose one mode instead of producing a full legal memo:
ModeUse WhenOutputquick_deposit_check押金不退/房东扣押金事实缺口、初步胜算、可主张金额、下一步evidence_pack用户准备投诉或起诉证据优先级、缺口、截图/录音/照片整理方式demand_letter需要发给房东/中介可直接复制的催告函,含金额、期限、法律依据complaint_package要走 12315/住建委/街道调解投诉对象、投诉材料、投诉文本、时间线negotiation_script还想先协商温和版和强硬版话术
For deposit-focused cases, use references/deposit-dispute-playbook.md as the quick evidence and escalation checklist.
User describes the dispute in natural language. Identify the dispute type:
Guide the user to provide key information. Use rental-dispute.sh collect to validate the structured input:
Based on dispute type, map applicable Chinese laws using rental-dispute.sh analyze:
Using rental-dispute.sh analyze, assess rights and responsibilities of each party:
Run rental-dispute.sh calculate to compute:
Generate legal documents using rental-dispute.sh letter:
Generate prioritized evidence collection list with rental-dispute.sh evidence:
Generate step-by-step negotiation dialogue scripts using rental-dispute.sh negotiate:
Map out the escalation route with rental-dispute.sh escalate:
Create a tracking timeline with key dates:
CommandDescriptionrental-dispute.sh collectValidate and structure dispute input datarental-dispute.sh analyzeAnalyze dispute, match laws, assess responsibilityrental-dispute.sh calculateCalculate compensation amountsrental-dispute.sh letterGenerate demand letter / complaint / civil complaintrental-dispute.sh evidenceGenerate prioritized evidence checklistrental-dispute.sh negotiateGenerate negotiation dialogue scriptsrental-dispute.sh escalateGenerate escalation path with timeline and cost estimates
text
I moved out of my apartment on June 1, 2026. The landlord is withholding my 5,000 RMB deposit,
claiming I damaged the air conditioner. The AC was already malfunctioning when I moved in —
it would occasionally stop cooling. I have chat records from March where I informed the landlord
about this issue. The lease was for 1 year at 4,500 RMB/month. Help me get my deposit back.
Expected Output: Dispute type identified as deposit_withheld → responsibility assessment showing landlord has maintenance duty under Civil Code §712 → pre-existing defect defense → compensation calculation: 5,000 RMB deposit + potential penalty → demand letter generated → escalation path with timeline.
text
我在北京通过链家租房,中介收了我一个月房租(6500元)作为中介费。后来听说北京规定
中介费不能超过一个月房租,但有些朋友说已经取消了上限。帮我分析一下这费用合理吗?
Expected Output: Dispute type illegal_fees → analysis of Beijing rental brokerage regulations → Real Estate Brokerage Management Measures citation → assessment of fee reasonableness → recommendation to negotiate or file complaint → complaint letter template if needed.
text
我的租房合同2026年12月到期,月租金3000元。房东今天发微信说下个月起要涨到4000元,
理由是周边房价都涨了。合同里写着"租金随市场行情调整",没有具体数字。这合法吗?
Expected Output: Dispute type rent_increase → analysis of "rent adjustment" clause validity under Civil Code → ambiguous clause interpretation favoring tenant → legal basis: rent cannot be unilaterally increased during lease term without specific formula → negotiation script for pushing back → escalation options if landlord persists.
text
我家热水器坏了半个月,房东一直说"找人修"但从来没来过。大冬天洗不了热水澡,
我能自己找人修然后从房租里扣吗?或者能因为这个提前退租吗?
Expected Output: Dispute type maintenance_failure → Civil Code §712-713 analysis → tenant's right to repair and deduct from rent → procedure: written notice → 7-day deadline → self-repair → deduction → also: option to terminate lease if essential living conditions cannot be met → demand letter template.
text
I need a complete package for my rental dispute: the landlord kept my 8,000 RMB deposit,
charged me for "professional cleaning" that was never done, and is now ignoring my messages.
I have the signed lease, deposit transfer record, and move-out photos showing the apartment
was clean. Generate everything I need.
Expected Output: Full case package: (1) responsibility assessment, (2) compensation calculation (8,000 + cleaning fee + potential penalty), (3) demand letter with 7-day deadline, (4) evidence checklist with priorities, (5) escalation path with 12315 and small claims court templates, (6) negotiation script for final attempt to contact landlord.
Scenario: Xiao Wang rented an apartment in Shanghai for 1 year (5,000 RMB/month, 10,000 RMB deposit). Upon move-out, the landlord claims "wall scuffs" and "worn-out sofa" and wants to deduct 6,000 RMB. Xiao Wang has move-in photos showing the sofa was already worn, and no wall scuffs are visible in move-out photos.
Input (saved as wang-case.json):
json
{
"dispute_type": "deposit_withheld",
"tenant": { "name": "Xiao Wang", "city": "Shanghai", "role": "Employee" },
"landlord": { "name": "Mr. Li", "contact": "WeChat: Li-Landlord-Shanghai" },
"lease": {
"monthly_rent": 5000,
"deposit_amount": 10000,
"start_date": "2025-06-01",
"end_date": "2026-06-01",
"clauses": { "deposit_return": "Deposit shall be returned within 15 days of move-out if no damage beyond normal wear and tear" }
},
"incident": {
"description": "Landlord claims wall scuffs and worn-out sofa, wants to deduct 6000 RMB from deposit",
"date": "2026-06-03",
"timeline": [
{ "date": "2025-05-28", "event": "Viewed apartment, sofa visibly worn. Photos taken." },
{ "date": "2025-06-01", "event": "Signed lease, paid deposit + first month rent" },
{ "date": "2026-06-01", "event": "Moved out. Took comprehensive photos showing apartment condition." },
{ "date": "2026-06-03", "event": "Landlord emailed claiming damages, wants to deduct 6000 RMB" },
{ "date": "2026-06-05", "event": "Xiao Wang asked for itemized list and photos of damage. No response." }
]
},
"evidence": [
{ "type": "photo", "description": "Move-in photos showing pre-existing sofa wear" },
{ "type": "photo", "description": "Move-out photos showing clean walls and apartment condition" },
{ "type": "contract", "description": "Signed lease agreement" },
{ "type": "receipt", "description": "Bank transfer record for deposit (10,000 RMB)" }
],
"amount_disputed": 6000
}
Steps Executed:
bash
# Step 1: Validate input
rental-dispute.sh collect --input wang-case.json
# → Validated. Dispute type: deposit_withheld. Evidence score: 85/100.
# Step 2: Legal analysis
rental-dispute.sh analyze --input wang-case.json
# → Civil Code §710: Tenant not liable for normal wear and tear.
# → Deposit return clause applies: only damage BEYOND normal wear triggers deduction.
# → Landlord has burden of proof (Civil Code §712).
# → Assessment: TENANT_FAVORABLE (80-90% chance of full recovery)
# Step 3: Calculate compensation
rental-dispute.sh calculate --input wang-case.json
# → Deposit refund: 10,000 RMB
# → Disputed deduction: 6,000 RMB
# → Potential penalty for wrongful withholding: up to 3,000 RMB (30% of deposit)
# Step 4: Generate demand letter
rental-dispute.sh letter --type demand --input wang-case.json
# → Output: demand-letter.md (formal催告函 citing Civil Code §§710, 712)
# Step 5: Generate escalation path
rental-dispute.sh escalate --input wang-case.json
# → Output: escalation-path.md with 5-step path + timeline + cost estimates
Output: Complete package with demand letter citing Civil Code, evidence checklist prioritizing move-in/move-out photos, negotiation script challenging landlord to provide proof, and escalation path through Shanghai housing authority → small claims court. Xiao Wang sends demand letter, landlord returns 9,000 RMB after negotiation (1,000 RMB deducted for minor cleaning agreed by both parties).
Scenario: Zhang Wei found an apartment in Beijing through an agency (58.com listing). The agency charged him one full month's rent (6,500 RMB) as agency fee. After research, he found that Beijing has regulated brokerage fees for rental properties — typically 50% of one month's rent is standard. He also paid a separate "viewing fee" of 200 RMB.
Input (saved as zhangwei-case.json):
json
{
"dispute_type": "illegal_fees",
"tenant": { "name": "Zhang Wei", "city": "Beijing" },
"agency": { "name": "XX Real Estate Agency", "license": "Unknown" },
"lease": {
"monthly_rent": 6500,
"deposit_amount": 6500,
"start_date": "2026-03-01",
"end_date": "2027-03-01"
},
"incident": {
"description": "Agency charged one full month rent (6500 RMB) as brokerage fee plus 200 RMB viewing fee",
"date": "2026-02-25",
"timeline": [
{ "date": "2026-02-20", "event": "Contacted agency through 58.com listing" },
{ "date": "2026-02-22", "event": "Viewed apartment, paid 200 RMB viewing fee" },
{ "date": "2026-02-25", "event": "Signed lease, paid 6500 RMB agency fee — no receipt provided" }
]
},
"evidence": [
{ "type": "receipt", "description": "Bank transfer showing 6500 RMB to agency account" },
{ "type": "chat", "description": "WeChat messages showing fee discussion" }
],
"fees_disputed": [
{ "type": "agency_fee", "amount": 6500, "description": "One month rent as brokerage fee" },
{ "type": "viewing_fee", "amount": 200, "description": "Viewing/看房费" }
]
}
Steps Executed:
bash
rental-dispute.sh collect --input zhangwei-case.json
rental-dispute.sh analyze --input zhangwei-case.json
# → Real Estate Brokerage Management Measures (房地产经纪管理办法):
# - Viewing fees are explicitly prohibited (§18)
# - Agency fees must be disclosed with itemized receipt (§19)
# - Beijing industry practice: 50% of monthly rent, shared by both parties
# → Assessment: Possible illegal overcharging + failure to provide receipt
rental-dispute.sh calculate --input zhangwei-case.json
# → Potential refund: 200 RMB viewing fee (100% recoverable) + 3250 RMB excess agency fee
rental-dispute.sh letter --type complaint --input zhangwei-case.json
# → Generated: 12315 complaint letter + Housing Authority complaint
Output: Complaint letter generated for 12315 and Beijing Housing Authority (北京市住建委) citing Real Estate Brokerage Management Measures §§18-19. Agency refunded 200 RMB viewing fee and provided receipt after receiving complaint notification. Zhang Wei negotiated agency fee down to 3,500 RMB.
Scenario: Li Na's apartment water heater broke in mid-December. The landlord promised repairs for 3 weeks but never sent anyone. The apartment has no heating, and she has been unable to shower properly for 20+ days in winter. She wants to break the lease and move out. Her lease has 6 months remaining.
Input (saved as lina-case.json):
json
{
"dispute_type": "maintenance_failure",
"tenant": { "name": "Li Na", "city": "Hangzhou" },
"landlord": { "name": "Mrs. Chen", "contact": "Phone: 139****5678" },
"lease": {
"monthly_rent": 3200,
"deposit_amount": 3200,
"start_date": "2026-07-01",
"end_date": "2027-06-30"
},
"incident": {
"description": "Water heater broke, no hot water for 20+ days in winter. Landlord repeatedly promised repairs but never followed through.",
"date": "2026-12-15",
"timeline": [
{ "date": "2026-12-15", "event": "Water heater stopped working. Notified landlord via WeChat." },
{ "date": "2026-12-16", "event": "Landlord replied 'will send someone this week'." },
{ "date": "2026-12-22", "event": "Followed up. Landlord: 'repair person is busy, will come next week'." },
{ "date": "2026-12-29", "event": "Followed up again. No response from landlord." },
{ "date": "2027-01-05", "event": "Still no repair. Sent formal written notice demanding repair within 7 days." }
]
},
"evidence": [
{ "type": "chat", "description": "Full WeChat conversation history showing multiple repair requests and landlord promises" },
{ "type": "photo", "description": "Photo of broken water heater display" }
]
}
Steps Executed:
bash
rental-dispute.sh collect --input lina-case.json
rental-dispute.sh analyze --input lina-case.json
# → Civil Code §712: Landlord has statutory duty to maintain rental property
# → Civil Code §713: If landlord fails to repair after reasonable notice, tenant may repair and deduct
# → Civil Code §731: If rental property endangers safety or health, tenant may terminate lease at any time
# → Assessment: Landlord in breach. Tenant has right to terminate.
rental-dispute.sh calculate --input lina-case.json
# → Deposit refund: 3,200 RMB
# → Landlord breach penalty: up to 960 RMB (30% of deposit)
# → Prepaid rent refund for unused period
rental-dispute.sh letter --type demand --input lina-case.json
# → Demand letter with 7-day ultimatum + lease termination notice
rental-dispute.sh negotiate --style firm --input lina-case.json
# → Firm negotiation script citing Civil Code §§712-713, 731
Output: Demand letter with lease termination notice citing Civil Code §731 (health/safety grounds — lack of hot water in winter). Negotiation script prepared. Li Na sends demand letter; landlord offers to repair within 3 days and waive one month's rent as compensation. Li Na accepts the settlement.
For the fastest path to value, try this:
bash
# 1. Prepare your dispute data as a JSON file
cat > my-case.json << 'EOF'
{
"dispute_type": "deposit_withheld",
"tenant": { "name": "Your Name" },
"lease": {
"monthly_rent": 5000,
"deposit_amount": 10000,
"start_date": "2025-06-01",
"end_date": "2026-06-01"
},
"incident": {
"description": "Describe your dispute here",
"timeline": [
{ "date": "YYYY-MM-DD", "event": "Describe what happened" }
]
},
"evidence": [
{ "type": "contract", "description": "Describe evidence" }
],
"amount_disputed": 0
}
EOF
# 2. Validate and analyze your case
./rental-dispute.sh collect --input my-case.json
./rental-dispute.sh analyze --input my-case.json
./rental-dispute.sh calculate --input my-case.json
# 3. Generate your demand letter — send it today
./rental-dispute.sh letter --type demand --input my-case.json
# 4. Get your evidence checklist and escalation plan
./rental-dispute.sh evidence --input my-case.json
./rental-dispute.sh escalate --input my-case.json
# Total time to first actionable output: ~5 minutes
The demand letter output is the single highest-impact artifact — sending a properly cited legal demand letter resolves ~40% of deposit disputes without needing escalation.
text
rental-dispute-advisor/
├── SKILL.md # This file
├── skill.json # Skill metadata and configuration
├── scripts/
│ └── rental-dispute.sh # Main CLI script (all subcommands)
└── schemas/
├── input.schema.json # JSON Schema for dispute input
└── output.schema.json # JSON Schema for analysis output