Cascade uses rule files to guide its behavior. These rules are defined in Markdown (.md) format and stored in the /.windsurf/rules/ directory. Once configured, you can manage the rules through the Windsurf Settings interface.

Access rule files

You can access rule files in two ways:
  • Navigate to File > Preferences > Windsurf Settings, then select Manage Rules under the Customizations section.

  • Alternatively, click the Toggle Cascade Side Bar > Rules, Memories & Workflows (Notepad) icon at the top-right corner of the Windsurf interface.

ABL syntax rules

Using the OpenEdge MCP connector

To develop the ABL code, use the OpenEdge MCP connector and its reference collection to determine grammar, language reference, and documentation. For details on using the OpenEdge MCP connector, see Use the OpenEdge MCP connector for ABL.

Without using the OpenEdge MCP connector

As an alternative to using the MCP server, you can download a complete set of ABL syntax rule files from the Progress ESD website.

  1. Navigate to the Progress Software ESD website.
  2. From the list of available product lines, select Progress OpenEdge > Progress OpenEdge 12.8.x.
  3. Under the selected version, select AI Coding Assistance – ABL Syntax and Rules.
  4. Accept the end user license agreement to download the ABL_Context.zip and abl-syntax.md files.

    The ABL_Context.zip archive includes multiple .txt files, each containing grouped ABL statements. For example, all transaction-related statements are consolidated into a single .txt file. The abl-syntax.md file contains references to the specific .txt files. The .txt files can be stored anywhere on a local machine, within a project directory, or on a network location. However, you must update the paths in abl-syntax.md to reflect where the .txt files are stored.

Note: Windsurf currently has a 12000-character limit for rule files.

Rule file configuration

To ensure Cascade applies syntax definitions and project-specific logic correctly, rule files must be structured and referenced in a consistent manner. The abl-syntax.md rule file located in /.windsurf/rules/ references the MCP server or the ABL syntax rule files and is the primary source for ABL syntax definitions. Additional definitions may be appended to abl-syntax.md file, referencing other MCP servers or .txt files, which may reside locally or on a shared disk. If the location of these resources changes, the file must be updated accordingly. Alternatively, Windsurf can be configured to apply the necessary changes automatically.

To support different applications, frameworks, or OpenEdge versions, project-specific rule files can be created. These files allow for tailored rule definitions per project context. To create a new rule file:
  1. Open the Customizations panel and select the +Workspace option.

  2. Enter the name of the ruleset in lowercase, omitting the .md extension.

    A new file is created in the /.windsurf/rules/ directory.

    Note: If the /.windsurf/rules/ directory does not exist, it is created automatically.
  • Project-specific rule files can be created using the +Workspace option in the Customizations panel. Use lowercase names without the .md extension.

Rule activation modes

Each rule file supports one of the following activation modes, which determine how Cascade applies the rules:

  • Manual—Triggered only when explicitly mentioned by the user. To activate, use an @mention in input box of Cascade.
  • Always On—Automatically applies to all relevant inputs without user intervention. This mode is recommended for abl-syntax rule set.
  • Model Decision—Ideal for flexible, context-sensitive rules.
  • Glob—Applies to files that match a specific pattern, such as .w, .cls, .vue.

Authoring rules

Creating effective rules is an iterative process that involves experimentation and refinement to suit the specific needs of a project or application.

The following example rule set provides a starting point. The first two lines ensure that the abl-syntax rules are prioritized and not unintentionally overridden. The remaining entries offer general guidance and can be expanded or customized as needed.

# ABL Syntax

- Always use `abl-syntax` rules for ABL syntax references.
- Prefer static dataset definitions.
- Pass datasets by reference when possible.
- Use `USE-WIDGET-POOL` in class definitions.
- Enable `TRACKING-CHANGES` when modifying temp-tables.
- Ensure public methods are context-independent; use parameters.
- Reference database tables via named local buffers.
- Use `VAR` instead of `DEFINE VARIABLE`.