Skip to content
Start free trial

Claude Code Skill

Install the HARi skill in Claude Code and manage your entire CRM through conversation. Create contacts, build pipelines, send emails, configure automations — Claude knows the full API.

Download Skill v1.16.0

Size: 35 KB · Released: 20 April 2026

9 reference files covering every part of the HARi API. Claude loads only what’s needed per conversation.

FileCovers
SKILL.mdMain entry point — auth, routing, safety gates, core rules
records.mdCRUD operations, filtering, search, restore, purge, audit log
schema.mdEntities, fields (25 types), relations, solutions
workflows.mdAutomation, pipelines, views, process templates, scoring
communications.mdEmail, inbox, mailboxes, templates, snippets, embed forms
dashboards.mdCharts, goals, activity feed, data hygiene, notifications
ai.mdAI enrichment, AI search, chat, next actions, recap
admin.mdUsers, API keys, webhooks, integrations, GDPR, billing
advisory.mdGuided setup, gap analysis, UI navigation, user-level detection

Click the download button above, or use the terminal:

Terminal window
curl -L https://haricrm.com/downloads/hari-claude-skill.zip -o hari-skill.zip

Unzip into the .claude/skills/hari/ folder at the root of your project. Claude Code discovers skills in this directory automatically.

Terminal window
# Navigate to your project root
cd ~/my-project
# Create the skills directory and extract
mkdir -p .claude/skills/hari
unzip hari-skill.zip -d .claude/skills/hari/

Your project should look like this:

my-project/
├── .claude/
│ └── skills/
│ └── hari/ ← skill lives here
│ ├── SKILL.md
│ ├── records.md
│ ├── schema.md
│ ├── advisory.md
│ └── ... (9 files total)
├── src/
└── ...

Open Claude Code in your project and type /hari to invoke the skill directly, or just ask Claude anything about your CRM data — it will activate automatically.

$ claude
> List my top 10 contacts by deal value
Reading .claude/skills/hari/SKILL.md...
Reading .claude/skills/hari/records.md...
Here are your top 10 contacts:
1. Sarah Chen — HK$450,000 (3 opportunities)
2. James Wong — HK$380,000 (2 opportunities)
3. ...
CategoryExample prompts
Manage records”Create a contact for Alice at Acme Corp”, “Show me all open deals above HK$100k”
Build your data model”I need to track projects with tasks”, “Add a money field for budget”
Set up automations”When a deal reaches Proposal stage, notify the manager”
Email & templates”Send a follow-up to all contacts I met last week”, “Create a PDF quote template”
Dashboards”Show me pipeline value by stage”, “How many new contacts this month?”
AI enrichment”Enrich this company with AI”, “Fill in missing data for all new contacts”
  • Claude Code — Available as CLI, desktop app, or IDE extension. Get Claude Code
  • A HARi CRM account — The skill needs your credentials or API key. Start free trial
  • Entity sort_order and batch reorder API — new PUT /api/schema/entities/reorder endpoint accepts an ordered array of entity names and sets sort_order on each. Entities are now displayed in sidebar and schema lists by sort_order ASC, name ASC. Individual entities can also be updated via PUT /api/schema/entities/{name} with sort_order field.
  • Comprehensive solution export/import documentation — the Solutions section in schema.md is now a full operational guide: what gets exported (entities, fields, relations, forms, views, BPFs, workflows, charts, templates, seed data), step-by-step cross-tenant migration workflow (export → ZIP → import), what happens during import (new entities created, existing entity/field metadata updated, dependencies auto-detected), version management (semver, upgrade vs downgrade), and troubleshooting table for common errors. Previously the section only listed endpoint names without explaining the workflow or edge cases.
  • New field type secret — stores TEXT, renders masked in edit (password input + Eye/EyeOff reveal toggle) and display (fixed 9-dot mask + Show/Copy buttons with 2s confirmation). Not encrypted — presentational mask only. For API keys, tokens, passwords that a user types into a record.
  • Field display style picker (options.display_style) — Schema Editor UI now writes a per-field style key that the renderer resolves in order options.widgetoptions.display_style → default. Options: selectdropdown / cards / pipeline / radio, multiselectcheckboxes / chip_grid / tags, percentnumber / progress_bar, booleancheckbox / toggle. Ships CardSelectField wired to the cards key; radio and toggle widgets fall through to defaults until the widget pairs are added.
  • Visible-when condition builder — Form Editor gets an Eye/EyeOff icon on every tab row and section header. Inline builder: field picker → operator → value. 10 operators: eq, neq, gt, lt, gte, lte, contains, not_contains, is_null, is_not_null. Numeric operators wrap both operands with Number() and return false when either side is NaN — so rules work correctly even when form values arrive as strings. in/nin remain valid in stored JSONB but aren’t yet exposed in the builder UI.
  • Formula field editing in the Schema Editortype: 'formula' fields now show a dedicated formula textarea plus a format picker (currency / percent / integer / text) next to the existing relation-context picker. Stored as options.formula + options.formula_format. No more hand-editing the JSON options blob.
  • Two new built-in sidebar components layered on the v1.10.0 sidebar DSL:
    • ActivityTimeline — condensed 3–5 item vertical timeline of the record’s most recent activity entries (coloured dot + summary + relative timestamp). Clamped limit 1–10.
    • RelatedRecordsList — inline list of records from a child entity filtered by FK, with count badge and “View all” link when truncated. Props: entity_name, relation, limit, display_field.
  • Record page right sidebar — forms can now declare a layout.sidebar block with ordered cells[] (bare field name, {type:"field"}, {type:"heading"}, {type:"spacer"}, {type:"component"}). Built-in sidebar component KeyFacts renders a compact read-only label/value stack reusing the same display components as the main form (colored pills, currency formatting, relation links). Width is clamped 240–360 px (default 280). Desktop-only; mobile falls back to single column.
  • Relation-aware formula fields — formulas can now reach beyond the current record’s scalars. Declare options.formula_context: ["transactions"] and reference related records directly: sum(pluck(where(transactions, 'deal_stage', 'eq', 'closed'), 'prix_bien')). Works for both belongs_to relations (exposed as an associative array — company.name) and reverse has_many (exposed as a list). Naive plural matching accepts transaction, transactions, transactiones. Backend batches one query per relation per list/get call — never N+1.
  • Collection helpers in formulas — new read-only functions in Symfony ExpressionLanguage: count, sum, min, max, avg, first, last, pluck(arr, field), where(arr, field, op, value) with ops eq · neq · gt · gte · lt · lte · in · nin · is_null · is_not_null · contains, plus today_minus_days(n) for date-range comparisons. Safety caps: max expression length 2000 chars, max related rows 5000 per relation, related records filtered to _state = 0.
  • Rewritten formulas referencedocs/reference/field-types.md §4 now matches the actual engine (Symfony ExpressionLanguage, bare field-name identifiers, no curly braces), documents collection helpers, relation-context syntax, safety limits, and known gaps (no reactive preview, no dependency-ordering between formulas, no writable computed values, no irregular-plural matching).
  • Section title size — sections now accept a label_size property (100 / 125 / 150 / 175 / 200) that scales the section label as a percentage of the default 12px. Configurable visually in the Form Editor alongside colour / icon / collapse / divider.
  • Comprehensive Form Layouts referenceschema.md rewritten with a full section-presentation reference table, brand-aligned colour palette, complete lucide icon list, field-entry formats (subgrids, components, spacers), full-layout PUT pattern for updates, and per-user personalisation flow. Claude sessions can now drive the Form Editor end-to-end from the skill without external context.
  • Section dividers — sections now accept a divider property ("none", "line", "thick") that renders a visible separator above the section on the record page. Thick dividers are tinted with the section’s colour when one is set. Configurable visually from the Form Editor.
  • Form layouts — documented the complete endpoint set (GET/POST /api/schema/entities/{entity}/forms, PUT /api/schema/forms/{id}, per-user personalization) so Claude can create and update detail/create/quick_view forms directly.
  • Section presentation metadata — sections now accept optional color (hex left-border accent), icon (lucide name), and collapsed (absent = not collapsible; present = click-to-toggle). Documented supported icon set and validation rules.
  • header_image_field on entities — documented how to pin an image/file field as the hero thumbnail on the record detail page. Validation: referenced field must exist and be of type image or file.
  • Entity update endpoint — corrected from PATCH to PUT /api/schema/entities/{name} and expanded the body spec.
  • Phone field country code selector — phone fields on embed forms now show a dropdown with 19 country codes (flag + dial code). Default auto-detected from browser locale. Configurable per field via options.default_country_code.
  • Embed form field-level validation errors — submissions now return per-field error details instead of a generic message. Frontend shows inline errors with red highlighting.
  • Embed form field type docs — documented all field type rendering behaviors (phone, select, email, boolean, textarea) and validation error response format.
  • Schema field types cleaned up — removed internal DB column types from skill reference, replaced with API-relevant behavior notes.
  • Added version field to SKILL.md frontmatter for tracking.
  • Find-or-Create patternfor_each now supports else_actions for zero-match branching
  • New update_trigger action — write back to the triggering record from inside for_each
  • create_record now returns the new ID, chainable via {{last_created_id}}
  • New placeholder namespaces: {{trigger.field}}, {{item.field}} inside for_each
  • Complete action types reference with JSON schemas and recipes
  • Fixed for_each placeholder resolution (sub-actions now resolve against iterated row)
  • Added 25 field types including money/multi-currency support
  • Added UI navigation discovery (API-first, never hardcoded)
  • Added currency settings and exchange rate endpoints
  • Improved advisory with disambiguation for ambiguous terms
  • Added communication safety gate for outbound actions
  • Added solution gate for schema changes
  • Added embed forms and OAuth endpoints
  • Initial release with full CRUD, schema, workflows, AI, dashboards