agentsclimarketplace

Services

Skill seldonframe/seldonframe/packages/crm/src/blocks/services

Open-source AI front office for local service businesses: AI receptionist (voice/SMS/chat) + website + CRM + booking. Self-hostable or $29/mo flat. The open-source GoHighLevel alternative.

Install
npx -y skills add seldonframe/seldonframe --skill services

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 16 stars16 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Services / offerings grid with one card per service, each with a distinct icon and a short customer-language description.

SKILL.md

8.1 KB, as published. Nobody here has run it

Services Block — generation prompt

You are generating the services-grid section of a small-business landing page. This is where visitors decide whether you do the thing they need. Generic descriptions ("Professional X services") fail this test silently — they technically describe the work but don't help the visitor self-qualify.

The mental model

Each card answers three questions in one glance:

  1. What is it? (the title — match the operator's phrasing)
  2. What outcome do I get? (the description — lead with the benefit)
  3. Is this serious? (the icon — distinct, recognizable, on-vertical)

If a card fails any one, the visitor stalls. Three cards failing → bounce.

Voice rules

  1. Customer language, not industry jargon. "Fades, scissor cuts, beard sculpting" beats "Professional men's grooming services". "Same-day AC repair" beats "HVAC service solutions".
  2. Lead with outcome. The first 5-10 words of each description should tell me what I get, not what you do.
  3. Match the operator's input services exactly. If they said "AC repair" don't say "Air Conditioning Repair Services". Use their words.
  4. Distinct icons, every time. Repeating an icon is the visible symptom of homogenized output. Each card picks a different icon from the full lucide library.
  5. Headline is vertical-specific. "How We Cut" for a barbershop. "What We Fix" for a trade. "Practice Areas" for legal. NOT "Our Services".

Lucide icons

Use any valid lucide icon name from https://lucide.dev/icons — the renderer supports the full library via lucide-react. Names are case-insensitive and accept snake_case, kebab-case, or PascalCase (e.g. shield_check, shield-check, and ShieldCheck all resolve to the same icon).

Common concept aliases also work: storm, repair, inspection, emergency, warranty, licensed, insured, drain, leak, cooling, heating, etc.

If you pick a name that doesn't exist in lucide, the renderer falls back to a Sparkles icon — so prefer real lucide names you're confident exist.

Worked examples

Barbershop, 4 services

{
  "headline": "How We Cut",
  "layout": "grid-4",
  "items": [
    { "icon": "scissors", "title": "Men's Haircuts", "description": "Fades, scissor cuts, classic gentleman's cuts — out the door in 30 minutes.", "price_from": "$45" },
    { "icon": "comb", "title": "Beard Trims", "description": "Sculpt, line up, hot-towel finish. Bring a reference photo or trust the chair.", "price_from": "$25" },
    { "icon": "user_plus", "title": "Kids Cuts", "description": "Patient with first-time clippers and Sunday-morning meltdowns alike. Ages 4 and up.", "price_from": "$35" },
    { "icon": "sparkles", "title": "Cut + Beard Combo", "description": "The full hour: haircut, beard, hot towel, and a quiet 10 minutes you didn't know you needed.", "price_from": "$65" }
  ]
}

HVAC, 3 services + emergency

{
  "headline": "What We Fix",
  "subhead": "Same-day repair across the Phoenix Valley. Licensed, bonded, insured.",
  "layout": "grid-3",
  "items": [
    { "icon": "snowflake", "title": "AC Repair", "description": "90-minute response on weekday emergencies. Diagnostic is free with any repair, $89 standalone.", "category": "Repair" },
    { "icon": "thermometer", "title": "Heating Installation", "description": "Right-sized systems with manufacturer rebates included. Two-year labor warranty on every install.", "category": "Install" },
    { "icon": "wind", "title": "Duct Cleaning", "description": "Whole-home cleaning + sanitization. Bundle with annual maintenance for $50 off.", "category": "Maintenance" }
  ]
}

Legal, 4 practice areas

{
  "headline": "Practice Areas",
  "layout": "grid-4",
  "items": [
    { "icon": "scale", "title": "Divorce", "description": "Negotiated settlements when possible, prepared litigation when not. Fixed-fee retainers available.", "category": "Family" },
    { "icon": "users", "title": "Custody & Parenting", "description": "Child-focused arrangements that hold up over years, not just the first hearing.", "category": "Family" },
    { "icon": "handshake", "title": "Mediation", "description": "Two-party mediation in our Vancouver office. Most matters resolve in 1-3 sessions.", "category": "Resolution" },
    { "icon": "file_text", "title": "Estate Planning", "description": "Wills, powers of attorney, and trusts. Two-week turnaround on standard packages.", "category": "Planning" }
  ]
}

Output format

Return ONLY a single JSON object matching the props schema. No prose, no markdown fences. The persistence endpoint runs JSON.parse directly.

If the operator gave you fewer than 3 services, ask them for more before generating — a 1-card or 2-card grid looks broken. If they gave you more than 8, pick the 8 most distinct (combining duplicates like "AC repair" and "Air conditioning service" into one card).

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.