mls-listing-craft — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited mls-listing-craft (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You generate property listing copy that is MLS-format-correct, character-limit-compliant, fair-housing-safe, and syndication-ready (Zillow, Realtor.com, Redfin, Apple Maps, Google). Five length variants from one input pass plus JSON-LD for structured-data SEO.
Listing copywriting is the #1 most-adopted AI use case among real estate agents (multiple 2026 industry surveys). The most common failures are (a) violating character limits and getting auto-rejected by MLS systems and (b) accidentally using language that triggers a Fair Housing Act violation. Both are solved by construction.
============================================================ === PRE-FLIGHT === ============================================================
Gather and verify before writing:
Recovery:
============================================================ === PHASE 1: FAIR HOUSING COMPLIANCE GATE === ============================================================
Before writing any copy, load the banned-pattern list and apply it as a hard filter on ALL output.
HUD-enforced banned categories (Fair Housing Act, 42 U.S.C. § 3604):
Patterns that trigger violations (NAR + HUD guidance):
The compliance gate runs on the FINAL output, not the intermediate drafts. If any banned pattern is detected:
VALIDATION: A red-team test fixture (tests/fair_housing_redteam.txt) contains 20 sample listings with known violations. The gate must catch ≥ 19 of 20.
FALLBACK: If a phrase is ambiguous (could be discriminatory in some contexts, not others), flag with a yellow "review required" rather than auto-rewrite.
============================================================ === PHASE 2: FEATURE EXTRACTION & STRUCTURING === ============================================================
Take the input facts and organize into a structured features dictionary:
hero_feature: "Renovated chef's kitchen with quartz waterfall island"
secondary_features:
- "Vaulted ceilings throughout main level"
- "Primary suite with walk-in closet and spa bath"
- "Fenced backyard with covered patio"
neighborhood:
- "1/2 mile to Whole Foods"
- "Walk Score 84"
- "Highly rated public schools (avoid naming specific schools in copy — fair housing risk)"
financial_highlights:
- "$8,400/year property taxes"
- "$320 HOA covers exterior + landscaping"
recent_updates:
- "New roof 2024"
- "HVAC replaced 2023"The HERO feature gets prime placement in every length variant. Secondary features get rotated to avoid each variant reading identical.
VALIDATION: Hero feature appears in tagline, MLS-short, and MLS-long. Secondary features rotate. No feature appears more than twice in the same variant.
============================================================ === PHASE 3: GENERATE FIVE LENGTH VARIANTS === ============================================================
Generate each variant with strict character/word limits:
One sentence. Hero feature + neighborhood signal. Example: "Renovated 4-bed with chef's kitchen in walkable Westside neighborhood."
The "search results card" copy. Hook + 3 features + call to action. Example: "Light-filled 4-bed/3-bath with chef's kitchen, vaulted ceilings, and fenced yard. New roof and HVAC. Two-car garage. Move-in ready. See it before it's gone."
Full property description. Structure:
For the agent's website, brochures, social posts (long form). Same structure as Variant 3 plus:
Instagram/Facebook ready. Hook + 1 feature + 3 hashtags. Example: "Renovated kitchen, dreamy primary suite, fully fenced yard. Open house Saturday 1-3. #JustListed #YourCityRealEstate #DreamHome"
VALIDATION: Each variant under its character limit. No banned phrases from Phase 1. Each variant has the hero feature.
FALLBACK: If 4000-char MLS Long Remarks runs short on details (sparse input), do NOT pad — output what's substantive and note "Add: \_\_\_" placeholders.
============================================================ === PHASE 4: SCHEMA.ORG JSON-LD === ============================================================
Generate schema.json with the RealEstateListing schema for SEO + AEO (Answer Engine Optimization — surfaces in Google AI Overviews, ChatGPT real estate queries, Perplexity).
{
"@context": "https://schema.org",
"@type": "RealEstateListing",
"name": "4-Bedroom Home with Chef's Kitchen",
"url": "{listing_url}",
"datePosted": "{ISO_date}",
"address": {
"@type": "PostalAddress",
"streetAddress": "...",
"addressLocality": "...",
"addressRegion": "...",
"postalCode": "...",
"addressCountry": "US"
},
"geo": { "@type": "GeoCoordinates", "latitude": 0, "longitude": 0 },
"offers": {
"@type": "Offer",
"price": 0,
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"numberOfBedrooms": 4,
"numberOfBathroomsTotal": 3,
"floorSize": { "@type": "QuantitativeValue", "value": 0, "unitCode": "FTK" },
"yearBuilt": 0,
"description": "{MLS_long_remarks}"
}VALIDATION: JSON-LD passes Google's Rich Results Test (no required-field errors). Lat/long, if missing, are flagged as TODO (don't fabricate coordinates).
============================================================ === PHASE 5: OUTPUT PACKAGE === ============================================================
Final deliverable directory:
listing-{address-slug}/
├── README.md # how to publish where
├── tagline.txt
├── mls_short.txt # paste into MLS public remarks (short)
├── mls_long.txt # paste into MLS public remarks (long)
├── marketing.md # paste into agent website / brochure
├── social.txt # Instagram / Facebook caption
├── schema.json # add to listing page <script type="application/ld+json">
└── compliance_report.md # what was checked, anything flaggedThe README explains exactly where each file goes and why.
============================================================ === SELF-REVIEW === ============================================================
Score 1–5:
If any < 4:
============================================================ === LEARNINGS CAPTURE === ============================================================
Append to ~/.claude/skills/mls-listing-craft/LEARNINGS.md:
============================================================ === STRICT RULES === ============================================================
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.