Helps developers author and debug Clix personalization templates (Liquid-style) for message content, deep links/URLs, and audience targeting. Use when the user mentions personalization variables, Liquid, templates, conditional logic, loops, filters, deep links, message logs, or when the user types `clix-personalization`.
Use this skill to help developers write personalized Clix campaigns using template-based variables and light logic in:
user.* (user traits/properties)event.* (event payload properties)trigger.* (custom properties passed via API-trigger)device.id, device.platform, device.locale,
device.language, device.timezone, plus user.id, event.name{{ ... }}.{% if %}, {% else %}, {% endif %} with operators
== != > < >= <= and or not. Invalid conditions evaluate to false.{% for x in y %} / {% endfor %} (use guards for empty lists).upcase, downcase, capitalize, default, join, split,
escape, strip, replace (chain with |).If the Clix MCP tools are available, treat them as the source of truth:
clix-mcp-server:search_docs for personalization behavior and supported
syntaxIf MCP tools are not available, use the bundled references in references/.
Personalization progress:
- [ ] 1) Identify where the template runs (message / URL / audience rule)
- [ ] 2) Identify trigger type (event-triggered vs API-triggered)
- [ ] 3) Confirm available inputs (user.*, event.*, trigger.*, device.*)
- [ ] 4) Draft templates with guards/defaults
- [ ] 5) Validate template structure (balance tags, avoid missing vars)
- [ ] 6) Verify in Clix (preview/test payloads, check Message Logs)
Ask only what’s needed:
event.* is availabletrigger.* is availableuser.* properties are set by the appevent.* / trigger.* properties are passed (include example
payload)Return a compact table the user can approve:
default over complex branching.size > 0) before looping."7.4 miles",
"38m 40s") instead of formatting inside templates.If you have a template file (recommended for review), run:
bash <skill-dir>/scripts/validate-template.sh path/to/template.liquid
This script does lightweight checks (matching {% if %}/{% endif %},
{% for %}/{% endfor %}, and brace balancing). It can’t guarantee the
variables exist — you still need a payload + console verification.
trigger.* (not event.*).user.* is missing → fix user property setting (see
clix-user-management)event.* is missing → fix event tracking payload (see
clix-event-tracking)SKILL.md (always loaded)references/ (load when writing/debugging templates)scripts/ (execute directly, do not load into context)references/template-syntax.md - Variables, output, conditionals, loops,
filtersreferences/common-patterns.md - Copy/paste patterns for messages + URLs +
guardsreferences/debugging.md - Troubleshooting missing variables and Message LogsSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer