Contents

Ask AI

Do the usual composer work — add a component, move it, delete it, change how it looks — by describing the change in ordinary language. Ask AI is targeted: it performs the same operations the palette and the Modify drawer already perform, so you do not have to learn the interface to make those edits.

What Ask AI is for

Ask AI is a second way to do the work you already do in the composer. It does not invent a new kind of edit. It does not write a page from a mood. It performs the same operations the mouse performs: drop a component, move it, delete it, or change a setting in the Modify drawer.

The benefit is that you can say those operations in ordinary language instead of learning RuleCMS's interface. You do not have to find the right card on the palette, hover until the drop indicator appears, then open the drawer and hunt for Padding. You can type “add a heading above the first row” or “give that image 32 pixels of padding on desktop and 16 on phones”, and the composer does the same work a drag-and-drop plus a drawer click would have done.

The result is indistinguishable from a manual edit. A component Ask AI adds looks like one you dropped — including your project's starter styles for new items. A padding it sets shows up in the drawer with the right unit selected. Undo treats the whole request as one step. Autosave and publish treat it as ordinary composer work.

Ask AI is targeted on purpose. It is at its best when you already know the change you want — add this, move that, make this setting this value. It is not a designer you brief with “make me a banner” or “improve this page.” Those requests are out of scope today, and asking them will disappoint you. Use the lists below as the whole menu.

How to use it

  1. Open a widget in the composer. Ask AI is for widgets only right now — collections are not supported yet.
  2. Look for the Ask AI button in the lower-right of the canvas. Click it to open the panel. The canvas stays visible above the panel so you can see each change land.
  3. Type a request in ordinary language and press Enter. Shift-Enter starts a new line. While a request is running, Send becomes Stop.
  4. Watch the canvas. Changes apply as soon as they are made — there is no accept or reject step. The transcript lists what was applied, in words.
  5. If the result is not what you meant, use Undo in the composer toolbar. One Ask AI request is one undo step, even when it made several changes.

If you have unsaved edits, Ask AI waits for autosave to finish before it starts, so it never works from a stale copy of the widget. If it cannot tell which row or component you mean, it will ask rather than guess.

What you can ask

Everything below is something you could also do with the palette, the canvas, or the Modify drawer. If it is not on this page, Ask AI cannot do it.

Adding components

Ask AI can drop any component that is on your palette — the ones RuleCMS ships, and any component from a component library your team has enabled. A new drop gets the same starter styles a manual drop would: your project's defaults for that component, that row, and that column.

You choose where it goes:

You sayWhat happens
Add a text component above the first rowA new row is created above that row, with the component in it.
Add an image below the headingA new row is created below that row.
Put a button to the left / right of that imageThe component is added as a new column in the same row.
Add a divider at the end of the second rowThe component is appended as the last column of that row.
Add a text component at the endA new row is appended after everything currently on the widget.

There is no “add an empty row” request. A row exists because a component was dropped above, below, or at the end — the same as dragging from the palette.

The components RuleCMS ships, and the settings Ask AI can change on each one:

ComponentSettings Ask AI can change
TextContent Text, Enclosing Tag, Links, Class Names & Styles
ImageMedia Selector, Image Alt Text, Image Intrinsic Width, Image Intrinsic Height, Image Sizes, Image Loading, Image Fetch Priority, Cloudinary Transformations
VideoVideo Selector, Poster Image, Video Controls, Video Autoplay, Video Loop, Video Muted, Video Plays Inline, Video Preload, Video Intrinsic Width, Video Intrinsic Height, Video Transformations
IconIcon
ButtonButton Style, Label, Link, Icon, Icon Position, Disabled
DividerLine Style, Thickness
EmbedEmbed URL, Embed Title, Aspect Ratio, Loading
ListList Items, List Kind, Marker Style, Numbering Start, Reversed Numbering, Links, Class Names & Styles
AccordionSummary, Detail, Open by Default, Summary Heading Level, Links, Class Names & Styles
Custom ComponentComponent Name, Props

Team-library components work the same way: Ask AI can add them and change the settings those components expose. Those settings are documented by whoever maintains the library, not on this site.

Moving, copying, and duplicating

You sayWhat happens
Move the heading above the imageThe column is taken from where it is and placed at the new position — above, below, left of, right of, or at the end of a row.
Copy that card to the bottomA second column is created at the new position. The original stays where it is.
Duplicate this columnA copy is placed beside the original, in the same row.
Duplicate this rowA copy of the whole row — every column in it — is placed immediately below.

Removing

You sayWhat happens
Delete that column / that image / the buttonThe column is removed. If it was the only column in its row, the empty row is removed too.
Delete this rowThe row and everything in it are removed.

Delete is applied immediately, like every other Ask AI change. Undo brings the row or column back. There is no confirm step, and there is no “empty the whole widget” request — Ask AI will not reset the canvas.

Changing how things look

Any setting you can change in the Modify drawer, Ask AI can change — on the component, on the column around it, on the row, or on the widget as a whole. You can ask for one value everywhere, or different values for phone, tablet, and desktop. You can also point a setting at a CSS variable instead of a typed number or colour, the same way the drawer's Value / CSS variable toggle does.

The lists below are complete. If a setting is not here, Ask AI cannot set it.

On the selected component

These are the settings that belong to the component itself — the words, the picture, the button label. Each component offers a different set; they are listed under Adding components and documented with the component.

Typical requests:

  • “Change the heading to Welcome back” — Content Text on Text.
  • “Make that text a heading 2” — Enclosing Tag on Text.
  • “Set the button label to Get started and link it to /signup”.
  • “Use the hero image we already uploaded” — Media Selector, for a file that is already in your media library. Ask AI cannot upload a new file.

On the selected column — the box around the component

Spacing, size, colour, borders, typography, visibility. Every column offers the same list. This is the drawer section labelled Selected Column.

SettingWhat it does
MarginThe empty space pushed outward from the edges of the column, separating it from its neighbours.
PaddingThe cushioning inside the column, between its edges and the content sitting in it.
WidthHow wide the column should be across the page.
HeightHow tall the column should be.
Min WidthA floor for the column's width — it will never shrink narrower than this.
Max WidthA ceiling for the column's width — it will never grow wider than this.
Min HeightA floor for the column's height — it can grow taller, but never shorter.
Max HeightA ceiling for the column's height — it will never grow taller than this.
OverflowWhat happens to content that is too big for the column: show it, hide it, or make it scroll.
Overflow XWhat happens to content that is too wide for the column.
Overflow YWhat happens to content that is too tall for the column.
Pointer EventsWhether clicks and taps land on this column or pass through it to whatever sits behind.
BorderA visible line drawn around the edge of the column.
Border RadiusHow rounded the corners of the column are.
Box ShadowA soft shadow behind the column that makes it look raised off the page.
Horizontal AlignmentWhere the column's children sit across its width when the column is a flex container.
Vertical AlignmentWhere the column's children sit from top to bottom when they are not all the same height.
Flex Wrap SettingWhether children that no longer fit wrap onto a new line, or stay on one line and squeeze.
Align ContentHow multiple wrapped lines of children pack from top to bottom inside the column.
Flex DirectionThe main axis children follow inside the column: row, column, or reversed.
GapThe space between the items inside the column, when the column arranges them in a row or grid.
Background ColorThe colour that fills the column behind its content.
Background ImageA picture painted behind the column content, with control over how it is scaled, placed, and tiled.
Text ColorThe colour of the text in the column, which everything inside it inherits.
TypographyThe group of nine text settings on the column: family, size, weight, style, line height, letter spacing, alignment, decoration, and transform.
Font FamilyWhich typeface the text in the column is set in.
Font SizeHow large the text in the column is.
Font WeightHow bold or light the text in the column is.
Font StyleWhether the text in the column is upright or italic.
Line HeightHow much vertical space each line of text occupies, which sets the gap between lines.
Letter SpacingHow much space sits between individual characters.
Text AlignWhether the text in the column lines up on the left, the right, the centre, or both edges.
Text DecorationLines drawn through the text: underline, strikethrough, or overline.
Text TransformForce the text into capitals, lower case, or title case without retyping it.
OpacityHow see-through the whole column is, from fully solid to invisible.
CSS ClassesAttach your own CSS class names to the column so your site's stylesheet can style it.
Hide ColumnRemove the column from the page entirely, either everywhere or only on chosen device sizes.

Typical requests:

  • “Give the image 32px padding on desktop and 16px on phones”.
  • “Make the heading colour #1a4f8a”.
  • “Hide that banner on phones” — Hide Column.
  • “Set the column width to 50%”.

On the entire row

How the columns in a horizontal band sit together — alignment, wrapping, gap — plus the same family of box styles the column has. This is the drawer section labelled Entire Row.

SettingWhat it does
Row MarginSpace around the outside of the row band.
Row PaddingSpace inside the row, between the row edges and its columns.
Row WidthHow wide the row band is.
Row HeightHow tall the row band is.
Row Min WidthThe smallest width the row is allowed to shrink to.
Row Max WidthThe largest width the row is allowed to grow to.
Row Min HeightThe smallest height the row is allowed to shrink to.
Row Max HeightThe largest height the row is allowed to grow to.
Row OverflowWhat happens when row content does not fit the row box.
Row Overflow XHorizontal overflow behaviour for the row.
Row Overflow YVertical overflow behaviour for the row.
Row Pointer EventsWhether clicks and taps land on this row or pass through it to whatever sits behind.
Row BorderBorder around the row band.
Row Border RadiusHow rounded the row corners are.
Row Box ShadowDrop shadow behind the row band.
Horizontal AlignmentWhere the columns sit across the row, and how any leftover space between them is shared out.
Vertical AlignmentWhere the columns sit from top to bottom within the row when they are not all the same height.
Flex Wrap SettingWhether columns that no longer fit drop onto a new line, or stay on one line and squeeze.
Align ContentHow multiple wrapped lines of columns pack from top to bottom inside the row.
Row Flex DirectionThe main axis columns follow inside the row: row, column, or reversed.
GapThe space between columns inside the row.
Row Background ColorFill colour behind the row band.
Row Background ImageA picture painted behind the whole row band.
Row Text ColorDefault text colour inherited by content inside the row.
Row TypographyFont and text settings inherited by content inside the row.
Row Font FamilyFont family inherited from the row.
Row Font SizeFont size inherited from the row.
Row Font WeightFont weight inherited from the row.
Row Font StyleFont style (for example italic) inherited from the row.
Row Line HeightLine height inherited from the row.
Row Letter SpacingLetter spacing inherited from the row.
Row Text AlignText alignment inherited from the row.
Row Text DecorationText decoration inherited from the row.
Row Text TransformText transform inherited from the row.
Row OpacityTransparency of the entire row band and its contents.
Row CSS ClassesAttach your own CSS class names to the row's flex wrapper so your site's stylesheet can style the band.
Hide RowHide the entire row for one or more device sizes.

Typical requests:

  • “Centre the columns in the second row” — Horizontal Alignment.
  • “Put 24 pixels between the columns” — Gap.
  • “Give that row a light grey background”.
  • “Stop the row wrapping” — Flex Wrap.

On the widget as a whole

The box every row sits inside — the same kinds of settings as Widget Settings in the gear menu. Some of these (size, spacing, overflow) are left off the editing canvas so drag and drop keeps a full surface; open Preview to see them applied, just as with a manual edit.

SettingWhat it does
Widget MarginSpace around the outside of the whole widget, between it and the host page.
Widget PaddingSpace inside the widget edges, before the first row starts.
Widget WidthHow wide the whole widget is on the host page.
Widget HeightHow tall the whole widget is.
Widget Min WidthThe smallest width the widget is allowed to shrink to.
Widget Max WidthThe largest width the widget is allowed to grow to on the host page.
Widget Min HeightThe smallest height the widget is allowed to shrink to.
Widget Max HeightThe largest height the widget is allowed to grow to.
Widget OverflowWhat happens when widget content does not fit the widget box.
Widget Overflow XHorizontal overflow behaviour for the whole widget.
Widget Overflow YVertical overflow behaviour for the whole widget.
Widget Pointer EventsWhether clicks and taps land on this widget (or layer) or pass through it to whatever sits behind.
Widget BorderBorder around the whole widget.
Widget Border RadiusHow rounded the widget corners are.
Widget Box ShadowDrop shadow behind the whole widget.
Widget GapThe vertical space between the rows of the widget.
Widget Background ColorFill colour behind every row of the widget.
Widget Background ImageA picture painted behind every row of the widget.
Widget Text ColorDefault text colour inherited by content inside the widget.
Widget TypographyFont and text settings inherited by content inside the widget: family, size, weight, style, line height, letter spacing, alignment, decoration, and transform.
Widget Font FamilyFont family inherited from the widget.
Widget Font SizeFont size inherited from the widget.
Widget Font WeightFont weight inherited from the widget.
Widget Font StyleFont style (for example italic) inherited from the widget.
Widget Line HeightLine height inherited from the widget.
Widget Letter SpacingLetter spacing inherited from the widget.
Widget Text AlignText alignment inherited from the widget.
Widget Text DecorationText decoration inherited from the widget.
Widget Text TransformText transform inherited from the widget.
Widget OpacityTransparency of the entire widget and its contents.
Widget CSS ClassesAttach your own CSS class names to the widget's outermost element so your site's stylesheet can style the embed.
Hide WidgetHide the entire widget for one or more device sizes.

Reset and Clear

The same pills that sit at the top of each Modify drawer section. They only touch the section they belong to. Read Reset and Clear attributes before you ask for these — Reset is not undo, and Clear is not a softer Reset.

You sayWhat happens
Reset this column's styles / put the column back to defaultsThe column's box (padding, width, colour, …) returns to the look a fresh drop would have. The component's content is left alone.
Clear this column's styles / strip the column bareEvery column style is removed. Content stays. The column has no padding, width, or background of its own.
Reset this component / put the text back to defaultsThe component's own settings return to their declared defaults — placeholder copy comes back, a chosen image is cleared. Column styles stay.
Reset this row / clear the row's stylesThe row's styles are removed. The columns inside stay.
Clear the padding on that imageOne setting is removed so it falls back to whatever the browser or a parent would have done. Works for a column setting or a row setting.

Ask AI cannot Reset or Clear the widget's outer box as a single action. Change those settings one at a time, or use Clear in Widget Settings yourself.

What Ask AI will not do

This list is as important as the one above. A request that is not on the menu is refused or answered with a question — it will not quietly do something adjacent.

RequestWhy it is out of scopeDo this instead
“Make me a banner” / “improve this page” / “design a hero”Ask AI does not invent layouts. Those requests are several operations plus design judgement, and shipping a poor guess teaches you not to trust the panel.Ask for the pieces: add an image, add a heading below it, set the heading text, set the row gap.
Edit a collectionAsk AI only runs on widgets today.Open the collection and edit it by hand. See Collections.
Create, embed, or replace a collectionThose write a different kind of record than a widget edit.Use the Collections tab in the palette, or the collection actions in the drawer.
Add, switch, or delete an overlay layerLayers are a separate editing target, not a row you can drop.Use Add Layer in the header. See Overlay Layers. If a layer is already selected, Ask AI will edit that layer's content the same way it edits the base.
Change CSS Variables, class definitions, fonts, themes, or other CSS SettingsThose live in a different catalog, not in the widget's rows and columns.Open the widget's CSS Settings. Ask AI can still point a setting at a variable that already exists.
Upload an image or a videoMedia upload is its own flow, with its own picker.Upload in Media, then ask Ask AI to use that file, or pick it in Media Selector yourself.
Publish, promote, or restore a versionPublishing is a separate, explicit step. Ask AI only changes the draft.Use Publishing when you are ready.
Edit another widget, or another environmentAsk AI only sees the widget you have open, in the environment you are in.Open that widget and ask again.
Write raw CSS, or change project-level startersThe composer does not offer a free-text CSS channel on a column, and project CSS Styles are a different page.Use the settings above, or edit project CSS Styles if you want every new drop to start differently.

How a change lands

  • It applies as soon as it is made. There is no preview-and-accept step. That is only safe because the canvas stays visible and Undo is one click away.
  • One request is one undo. If Ask AI added a row, set its gap, and changed a heading, Undo reverts all three together.
  • The draft is saved. Ask AI writes through the same save path a manual edit uses. Publishing is still a separate step.
  • The drawer agrees with the canvas. Open Modify after a request and you will see the same values you would have typed.
  • Switching widgets clears the conversation. The transcript belongs to the widget you have open, so it does not follow you to the next one.

When you will not see Ask AI

The button is hidden — not disabled — when the feature cannot work. A control that cannot work is worse than absence.

  • Your team has not granted you the AI editing permission. Ask AI is a separate grant on top of the permission to edit the widget — a team can have editors who do not spend on AI turns. Ask a team administrator.
  • You are editing a collection, not a widget.
  • The window is narrower than the composer's minimum width. Ask AI needs the same space the rest of the composer does.
  • The environment has not been configured for Ask AI. That is a RuleCMS setup step.
If a request fails because the widget changed underneath you, reload and try again. Ask AI refuses to write when the copy on screen no longer matches what is saved — that is how it avoids overwriting work you cannot see.

How to get a good result

  • Name the thing and the change. “Give the second row 24px of padding” is better than “make it roomier.”
  • Point at what is already on the canvas. “The heading”, “the image in the first row”, “the button I just added” all resolve. If two things could match, Ask AI will ask which one.
  • Say the device when it matters. “32 on desktop, 16 on phones” writes two values of one setting. Without that, the change applies everywhere.
  • One intent per request is plenty. Several operations in one sentence are fine when they are one job — “add a button to the right of the heading and label it Shop”. Mixing unrelated jobs in one sentence is how results drift.
  • Use Undo, then the drawer, without ceremony. Ask AI is not a commitment. If a value is almost right, finish it in the Modify drawer the way you always have.

Where to go next