cx-composer
❯ cx-composer: Open CX Companion # Pro · bring your own AI key
CX Companion (Preview) in action: a chat panel in VS Code / IntelliJ IDEA. The user types "I need to execute some logic right after a user is created in Liferay." The AI reads the workspace, calls list_extension_types, picks objectAction scoped to the User system object, runs scaffold_extension, and stages nine files (client-extension.yaml, paired oAuthApplicationUserAgent, Dockerfile, assemble block, LCP.json, handler stub, package.json, README) in the pending-edits review panel. Nothing is written to disk until the user clicks Accept on each row.
❯ CX Composer: Open CX Companion (Preview · Pro) user: "I need to run some logic right after a user is created in Liferay." ✓ list_extension_types (28 types indexed, 309 batch schemas) ✓ scaffold_extension (type=objectAction · name=on-user-created) ▸ client-extension.yaml ▸ on-user-created-oauth-ua block (oAuthApplicationUserAgent, auto-paired) ▸ Dockerfile · LCP.json · assemble · handler stub → 9 files staged in the pending-edits review panel ❯ preflight — every proposed yaml validated before you see it ⚠ nothing writes to disk until you click Accept on each row ❯ Migrate Website → Batch CX (paste URL · AI infers schema · deploys) ❯ Provider · bring your own key · OS keychain · no proxy Anthropic · OpenAI · Google · Groq · Azure OpenAI · Ollama · OpenAI-compatible
07 · CX Companion

An AI panel that knows Liferay.

A workspace-aware AI panel for Liferay Client Extensions, built into VS Code and every JetBrains IDE. Describe what you need in plain English and CX Companion picks the right CX type, scaffolds the full project, and edits existing yaml in-place. Every change runs through the preflight validator and queues in a pending-edits review panel — nothing writes to disk until you click Accept.

at a glance
  • ▸ AI panel · chat, scaffold, review, migrate
  • ▸ 10-step flow
  • ▸ jump to step-by-step ↓
# ────── step by step ──────

How CX Companion works, in 10 steps.

    01

    Open CX Companion

    VS Code: CX Composer: Open CX Companion from the palette or the sidebar. JetBrains: the CX Companion tool window on the right rail.

    02

    Describe what you need

    Plain English. "I need to run some logic right after a user is created." / "Add a priority field to my order-sync object action." / "Scaffold a captcha extension using my /captcha endpoint."

    03

    The AI picks the right type

    CX Companion reads your workspace, consults the authoritative type registry (all 28 CX types + required fields), and picks the correct one — e.g. objectAction scoped to User.

    04

    Scaffolds the full project

    Not just yaml — the complete set: paired oAuthApplicationUserAgent (or oAuthApplicationHeadlessServer for batch/site-initializer), Dockerfile, LCP.json, assemble block, handler stub.

    05

    Preflight validates every proposal

    Before you see a staged edit, CX Companion runs the plugin's yaml validator on it. Missing fields, unknown fields, broken OAuth references, deprecated fields all surface on the review row.

    06

    Pending-edits review queue

    Nothing writes to disk until you click Accept on each file. See the diff side-by-side, approve individually or in batch, reject anything you don't want.

    07

    Chat auto-pauses after staging

    The AI emits a short summary and stops. No more tool calls or streaming while you're reviewing — ask a follow-up when you're ready.

    08

    Website → Batch CX migration

    Paste any public URL. The AI crawls the site, infers an Object Definition schema, pulls records as Object Entries, and produces a deploy-ready batch CX folder.

    09

    Bring your own AI key

    Anthropic, OpenAI, Google, Groq, Azure OpenAI, Ollama (local), or any OpenAI-compatible endpoint (OpenRouter, Together, LM Studio, your own gateway). Keys live in the OS keychain.

    10

    Scope-restricted

    CX Companion only handles Liferay Client Extension work. Off-topic asks get a polite redirect to Claude Code / Cursor — keeps the AI focused on what it's actually good at.