From b2cbe2562dd1ec1f088cb032fccb2873732665cc Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 14:05:56 -0700 Subject: [PATCH 01/15] expands on rules docs --- docs/docs/agent/how-to-customize.md | 5 +++++ docs/docs/blocks/rules.md | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/docs/agent/how-to-customize.md b/docs/docs/agent/how-to-customize.md index 93f3c6188c2..d19edacb1fc 100644 --- a/docs/docs/agent/how-to-customize.md +++ b/docs/docs/agent/how-to-customize.md @@ -5,6 +5,11 @@ keywords: [customize, chat] sidebar_position: 5 --- +## Add Rules Blocks +Adding Rules can be done in your assistant locally or in the Hub. + +[Explore Rules on the Hub](https://hub.continue.dev/explore/rules) and see the [Ruls deep dive](../customize/deep-dives/rules.md) for more details and tips on creating rules. + ## Add MCP tools You can add MCP servers to your assistant to give Agent access to more tools. [Explore MCP Servers on the Hub](https://hub.continue.dev/explore/mcp) and see the [MCP guide](../customize/deep-dives/mcp.mdx) for more details. diff --git a/docs/docs/blocks/rules.md b/docs/docs/blocks/rules.md index bc1baaf4bbe..570552b2929 100644 --- a/docs/docs/blocks/rules.md +++ b/docs/docs/blocks/rules.md @@ -6,13 +6,19 @@ keywords: [rules, blocks, standards, practices, guardrails] sidebar_position: 5 --- +Rules allow you to provide specific instructions that guide how the AI assistant behaves when working with your code. Instead of the AI making assumptions about your coding standards, architecture patterns, or project-specific requirements, you can explicitly define guidelines that ensure consistent, contextually appropriate responses. + Think of these as the guardrails for your AI coding assistants: - **Enforce company-specific coding standards** and security practices - **Implement quality checks** that match your engineering culture - **Create paved paths** for developers to follow organizational best practices -![Rules Blocks Overview](/img/rules-blocks-overview.png) +By implementing rules, you transform the AI from a generic coding assistant into a knowledgeable team member that understands your project's unique requirements and constraints. + +### How Rules Work + +Your assistant detects rule blocks and applies the specified rules while in [Agent](agent/how-to-use-it), [Chat](chat/how-to-use-it), and [Edit](edit/how-to-use-it) modes. ## Learn More From 0304c748b1c88b95aa5e2f3284f66e55920f5425 Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 14:32:19 -0700 Subject: [PATCH 02/15] rules deep dive improvementS --- docs/docs/customize/deep-dives/rules.md | 40 ++++++++++++------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index 52ea34e0c95..7faa9bf705e 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -5,9 +5,9 @@ keywords: [rules, .continuerules, system, prompt, message] # Rules -Rules are used to provide instructions to the model for [Chat](../../chat/how-to-use-it.md), [Edit](../../edit/how-to-use-it.md), and [Agent](../../agent/how-to-use-it.md) requests. +Rules provide instructions to the model for [Chat](../../chat/how-to-use-it.md), [Edit](../../edit/how-to-use-it.md), and [Agent](../../agent/how-to-use-it.md) requests. -Rules are not included in most other requests, such as [autocomplete](./autocomplete.mdx) or [apply](../model-roles/apply.mdx). +:::info Rules are not included in [autocomplete](./autocomplete.mdx) or [apply](../model-roles/apply.mdx). You can view the current rules by clicking the pen icon above the main toolbar: @@ -35,21 +35,19 @@ Rules blocks can be simple text, written in YAML configuration files, or as Mark ```yaml title="config.yaml" rules: - - Always annotate Python functions with their parameter and return types - - - name: TypeScript best practices - rule: Always use TypeScript interfaces to define shape of objects. Use type aliases sparingly. - globs: "**/*.{ts,tsx}" - - - name: TypeScript test patterns - rule: In TypeScript tests, use Jest's describe/it pattern and follow best practices for mocking. - globs: - - "src/**/*.test.ts" - - "tests/**/*.ts" - - - uses: myprofile/my-mood-setter - with: - TONE: concise + - name: Color Themes + rule: | + When adding colors to components, use tailwind color classes. + Do NOT use explicit colors like text-gray-400. Instead, use theme colors. + + The common available theme colors are: + - For normal text: foreground, description, description-muted + - For other text, icons, etc: success, warning, error, accent, link + - For general components background, border, border-focus + - For specific components: + + Any of these colors can be used in tailwind e.g. bg-primary, text-success, border-error, hover:bg-list-hover, etc. + globs: "*/*.tsx" ``` ## Chat System Message @@ -60,21 +58,21 @@ This can be viewed in the rules section of the toolbar (see above), or visit the Advanced users can override this system message for a specific model if needed by using `chatOptions.baseSystemMessage`. See the [`config.yaml` reference](../../reference.md#models). -## `.continuerules` +## `.continue/rules` -You can create project-specific rules by adding a `.continuerules` file to the root of your project. This file is raw text and its full contents will be used as rules. +You can create project-specific rules by adding a `.continue/rules` file to the root of your project. This file is raw text and its full contents will be used as rules. ### Simple Examples - If you want concise answers: -```title=.continuerules +```title=.continue/rules Please provide concise answers. Don't explain obvious concepts. You can assume that I am knowledgable about most programming topics. ``` - If you want to ensure certain practices are followed, for example in React: -```title=.continuerules +```title=.continue/rules Whenever you are writing React code, make sure to - use functional components instead of class components - use hooks for state management From 0fa75a28b59db92f1c5cd62bb16b1434318671b6 Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 14:44:35 -0700 Subject: [PATCH 03/15] info block fix --- docs/docs/customize/deep-dives/rules.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index 7faa9bf705e..576a7e9ced0 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -8,6 +8,7 @@ keywords: [rules, .continuerules, system, prompt, message] Rules provide instructions to the model for [Chat](../../chat/how-to-use-it.md), [Edit](../../edit/how-to-use-it.md), and [Agent](../../agent/how-to-use-it.md) requests. :::info Rules are not included in [autocomplete](./autocomplete.mdx) or [apply](../model-roles/apply.mdx). +::: You can view the current rules by clicking the pen icon above the main toolbar: @@ -21,9 +22,9 @@ Rules can be added to an Assistant on the Continue Hub. Explore available rules :::info Automatically create local rule blocks When in Agent mode, you can simply prompt the agent to create a rule for you using the `builtin_create_rule_block` tool if enabled. +::: For example, you can say "Create a rule for this", and a rule will be created for you in `.continue/rules` based on your conversation. -::: ### Syntax @@ -66,13 +67,13 @@ You can create project-specific rules by adding a `.continue/rules` file to the - If you want concise answers: -```title=.continue/rules +```title=.continuerules Please provide concise answers. Don't explain obvious concepts. You can assume that I am knowledgable about most programming topics. ``` - If you want to ensure certain practices are followed, for example in React: -```title=.continue/rules +```title=.continuerules Whenever you are writing React code, make sure to - use functional components instead of class components - use hooks for state management From 1ee1df84b4011d6fbe28163d562bd9cd48921cae Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 14:54:21 -0700 Subject: [PATCH 04/15] fix broken links --- docs/docs/blocks/rules.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/blocks/rules.md b/docs/docs/blocks/rules.md index 570552b2929..c43a28b5ac3 100644 --- a/docs/docs/blocks/rules.md +++ b/docs/docs/blocks/rules.md @@ -18,7 +18,7 @@ By implementing rules, you transform the AI from a generic coding assistant into ### How Rules Work -Your assistant detects rule blocks and applies the specified rules while in [Agent](agent/how-to-use-it), [Chat](chat/how-to-use-it), and [Edit](edit/how-to-use-it) modes. +Your assistant detects rule blocks and applies the specified rules while in [Agent](../agent/how-to-use-it), [Chat](../chat/how-to-use-it), and [Edit](../edit/how-to-use-it) modes. ## Learn More From d70b434facb2f73c1be4b94ecbaccfeff760f793 Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 14:59:55 -0700 Subject: [PATCH 05/15] fix broken block --- docs/docs/customize/deep-dives/rules.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index 576a7e9ced0..4e4f1586a4e 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -22,9 +22,9 @@ Rules can be added to an Assistant on the Continue Hub. Explore available rules :::info Automatically create local rule blocks When in Agent mode, you can simply prompt the agent to create a rule for you using the `builtin_create_rule_block` tool if enabled. -::: For example, you can say "Create a rule for this", and a rule will be created for you in `.continue/rules` based on your conversation. +::: ### Syntax From 84f08d02fae5ba88c8c7326a5ae0bfcb5356c699 Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 15:39:33 -0700 Subject: [PATCH 06/15] fix typo in agent docs --- docs/docs/agent/how-to-customize.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/agent/how-to-customize.md b/docs/docs/agent/how-to-customize.md index d19edacb1fc..1770768a651 100644 --- a/docs/docs/agent/how-to-customize.md +++ b/docs/docs/agent/how-to-customize.md @@ -8,7 +8,7 @@ sidebar_position: 5 ## Add Rules Blocks Adding Rules can be done in your assistant locally or in the Hub. -[Explore Rules on the Hub](https://hub.continue.dev/explore/rules) and see the [Ruls deep dive](../customize/deep-dives/rules.md) for more details and tips on creating rules. +[Explore Rules on the Hub](https://hub.continue.dev/explore/rules) and see the [Rules deep dive](../customize/deep-dives/rules.md) for more details and tips on creating rules. ## Add MCP tools From 21d1b2374bf0917e4aa64d42dbee61387c8f4e68 Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 15:40:36 -0700 Subject: [PATCH 07/15] revert .continuerules change --- docs/docs/customize/deep-dives/rules.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index 4e4f1586a4e..8218d5db2a4 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -59,9 +59,15 @@ This can be viewed in the rules section of the toolbar (see above), or visit the Advanced users can override this system message for a specific model if needed by using `chatOptions.baseSystemMessage`. See the [`config.yaml` reference](../../reference.md#models). -## `.continue/rules` +## `.continuerules` -You can create project-specific rules by adding a `.continue/rules` file to the root of your project. This file is raw text and its full contents will be used as rules. +:::warning + +`.contninuerules` will be deprecarted in a future release. Please use `.continue/rules` instead. + +::: + +You can create project-specific rules by adding a `.continuerules` file to the root of your project. This file is raw text and its full contents will be used as rules. ### Simple Examples From 00d9c0b71b84371dd9a4d8eb0acb5d833b58a5d6 Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 16:06:25 -0700 Subject: [PATCH 08/15] reorg the file to flow better --- docs/docs/customize/deep-dives/rules.md | 51 +++++++++++++++---------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index 8218d5db2a4..dc65bb78875 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -26,50 +26,50 @@ When in Agent mode, you can simply prompt the agent to create a rule for you usi For example, you can say "Create a rule for this", and a rule will be created for you in `.continue/rules` based on your conversation. ::: +### `.continue/rules` folder +You can create project-specific rules by adding a `.continue/rules` folder to the root of your project and adding new rule files. + +```yaml title="new-rule.yaml" +name: New rule +version: 0.0.1 +schema: v1 +rules: + - Always give concise responses + +``` +This is also done when selecting "Add Rule" in the Assistant settings. This will create a new folder in `.continue/rules` with a default file named `new-rule.yaml`. + ### Syntax Rules blocks can be simple text, written in YAML configuration files, or as Markdown (`.md`) files. They can have the following properties: - `name` (**required**): A display name/title for the rule - `rule` (**required**): The text content of the rule +- `schema` (**required**): The schema version of the YAML file (e.g., `v1`) - `globs` (optional): When files are provided as context that match this glob pattern, the rule will be included. This can be either a single pattern (e.g., `"**/*.{ts,tsx}"`) or an array of patterns (e.g., `["src/**/*.ts", "tests/**/*.ts"]`). -```yaml title="config.yaml" +```yaml title=colors.yaml" +name: New rules +version: 0.0.1 +schema: v1 rules: - - name: Color Themes + - name: Tailwind Color Themes rule: | When adding colors to components, use tailwind color classes. Do NOT use explicit colors like text-gray-400. Instead, use theme colors. - - The common available theme colors are: - - For normal text: foreground, description, description-muted - - For other text, icons, etc: success, warning, error, accent, link - - For general components background, border, border-focus - - For specific components: - - Any of these colors can be used in tailwind e.g. bg-primary, text-success, border-error, hover:bg-list-hover, etc. globs: "*/*.tsx" ``` - -## Chat System Message - -Continue includes a simple default system message for [Chat](../../chat/how-to-use-it.md) and [Agent](../../agent/how-to-use-it.md) requests, to help the model provide reliable codeblock formats in its output. - -This can be viewed in the rules section of the toolbar (see above), or visit the source code [here](https://github.com/continuedev/continue/blob/main/core/llm/constructMessages.ts#L4) - -Advanced users can override this system message for a specific model if needed by using `chatOptions.baseSystemMessage`. See the [`config.yaml` reference](../../reference.md#models). - ## `.continuerules` :::warning -`.contninuerules` will be deprecarted in a future release. Please use `.continue/rules` instead. +`.contninuerules` will be deprecated in a future release. Please use the `.continue/rules` folder instead. ::: You can create project-specific rules by adding a `.continuerules` file to the root of your project. This file is raw text and its full contents will be used as rules. -### Simple Examples +## Simple Examples - If you want concise answers: @@ -87,3 +87,12 @@ Whenever you are writing React code, make sure to - use Tailwind CSS for styling - modularize components into smaller, reusable pieces ``` + +## Chat System Message + +Continue includes a simple default system message for [Chat](../../chat/how-to-use-it.md) and [Agent](../../agent/how-to-use-it.md) requests, to help the model provide reliable codeblock formats in its output. + +This can be viewed in the rules section of the toolbar (see above), or visit the source code [here](https://github.com/continuedev/continue/blob/main/core/llm/constructMessages.ts#L4) + +Advanced users can override this system message for a specific model if needed by using `chatOptions.baseSystemMessage`. See the [`config.yaml` reference](../../reference.md#models). + From c4d47bac6147b64e45eef7d7056746b096df9b3e Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 16:14:05 -0700 Subject: [PATCH 09/15] example improvements --- docs/docs/customize/deep-dives/rules.md | 64 ++++++++++++++----------- 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index dc65bb78875..c176c392e1b 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -21,24 +21,11 @@ To form the system message, rules are joined with new lines, in the order they a Rules can be added to an Assistant on the Continue Hub. Explore available rules [here](https://hub.continue.dev/explore/rules), or [create your own](https://hub.continue.dev/new?type=block&blockType=rules) in the Hub. These blocks are defined using the [`config.yaml` syntax](../../reference.md#rules) and can also be created locally. :::info Automatically create local rule blocks -When in Agent mode, you can simply prompt the agent to create a rule for you using the `builtin_create_rule_block` tool if enabled. +When in Agent mode, you can prompt the agent to create a rule for you using the `builtin_create_rule_block` tool if enabled. For example, you can say "Create a rule for this", and a rule will be created for you in `.continue/rules` based on your conversation. ::: -### `.continue/rules` folder -You can create project-specific rules by adding a `.continue/rules` folder to the root of your project and adding new rule files. - -```yaml title="new-rule.yaml" -name: New rule -version: 0.0.1 -schema: v1 -rules: - - Always give concise responses - -``` -This is also done when selecting "Add Rule" in the Assistant settings. This will create a new folder in `.continue/rules` with a default file named `new-rule.yaml`. - ### Syntax Rules blocks can be simple text, written in YAML configuration files, or as Markdown (`.md`) files. They can have the following properties: @@ -48,7 +35,7 @@ Rules blocks can be simple text, written in YAML configuration files, or as Mark - `schema` (**required**): The schema version of the YAML file (e.g., `v1`) - `globs` (optional): When files are provided as context that match this glob pattern, the rule will be included. This can be either a single pattern (e.g., `"**/*.{ts,tsx}"`) or an array of patterns (e.g., `["src/**/*.ts", "tests/**/*.ts"]`). -```yaml title=colors.yaml" +```yaml title=colors-rule.yaml" name: New rules version: 0.0.1 schema: v1 @@ -59,7 +46,20 @@ rules: Do NOT use explicit colors like text-gray-400. Instead, use theme colors. globs: "*/*.tsx" ``` -## `.continuerules` +### `.continue/rules` folder +You can create project-specific rules by adding a `.continue/rules` folder to the root of your project and adding new rule files. + +```yaml title="new-rule.yaml" +name: New rule +version: 0.0.1 +schema: v1 +rules: + - Always give concise responses + +``` +This is also done when selecting "Add Rule" in the Assistant settings. This will create a new folder in `.continue/rules` with a default file named `new-rule.yaml`. + +### `.continuerules` :::warning @@ -69,23 +69,29 @@ rules: You can create project-specific rules by adding a `.continuerules` file to the root of your project. This file is raw text and its full contents will be used as rules. -## Simple Examples +### Examples -- If you want concise answers: +If you want concise answers: -```title=.continuerules -Please provide concise answers. Don't explain obvious concepts. You can assume that I am knowledgable about most programming topics. +```yaml title="concise-rule.yaml" +rules: + - name: Always give concise answers + rule: | + Please provide concise answers. Don't explain obvious concepts. + You can assume that I am knowledgable about most programming topics. ``` +If you want to ensure certain practices are followed, for example in React: -- If you want to ensure certain practices are followed, for example in React: - -```title=.continuerules -Whenever you are writing React code, make sure to -- use functional components instead of class components -- use hooks for state management -- define an interface for your component props -- use Tailwind CSS for styling -- modularize components into smaller, reusable pieces +```yaml title="functional-rule.yaml" +rules: + - name: Always use functional components + rule: | + Whenever you are writing React code, make sure to + - use functional components instead of class components + - use hooks for state management + - define an interface for your component props + - use Tailwind CSS for styling + - modularize components into smaller, reusable pieces ``` ## Chat System Message From f87289abfbf5b6c92fd94f65906593061184337b Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 16:26:11 -0700 Subject: [PATCH 10/15] updates filenames --- docs/docs/customize/deep-dives/rules.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index c176c392e1b..a2560f8677e 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -35,7 +35,7 @@ Rules blocks can be simple text, written in YAML configuration files, or as Mark - `schema` (**required**): The schema version of the YAML file (e.g., `v1`) - `globs` (optional): When files are provided as context that match this glob pattern, the rule will be included. This can be either a single pattern (e.g., `"**/*.{ts,tsx}"`) or an array of patterns (e.g., `["src/**/*.ts", "tests/**/*.ts"]`). -```yaml title=colors-rule.yaml" +```yaml title=".continue/rules/colors-rule.yaml" name: New rules version: 0.0.1 schema: v1 @@ -49,7 +49,7 @@ rules: ### `.continue/rules` folder You can create project-specific rules by adding a `.continue/rules` folder to the root of your project and adding new rule files. -```yaml title="new-rule.yaml" +```yaml title=".continue/rules/new-rule.yaml" name: New rule version: 0.0.1 schema: v1 @@ -73,7 +73,7 @@ You can create project-specific rules by adding a `.continuerules` file to the r If you want concise answers: -```yaml title="concise-rule.yaml" +```yaml title=".continue/rules/concise-rule.yaml" rules: - name: Always give concise answers rule: | @@ -82,7 +82,7 @@ rules: ``` If you want to ensure certain practices are followed, for example in React: -```yaml title="functional-rule.yaml" +```yaml title=".continue/rules/functional-rule.yaml" rules: - name: Always use functional components rule: | From efaeb80d4efb0aa6d2442fb5658902b6e940cc4d Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 21:41:13 -0700 Subject: [PATCH 11/15] more structure and img --- docs/docs/customize/deep-dives/rules.md | 8 ++++++-- docs/static/img/add-local-rules.png | Bin 0 -> 54904 bytes 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 docs/static/img/add-local-rules.png diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index a2560f8677e..2b7904e8ab3 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -10,15 +10,17 @@ Rules provide instructions to the model for [Chat](../../chat/how-to-use-it.md), :::info Rules are not included in [autocomplete](./autocomplete.mdx) or [apply](../model-roles/apply.mdx). ::: +## How it works You can view the current rules by clicking the pen icon above the main toolbar: ![rules input toolbar section](/img/notch-rules.png) To form the system message, rules are joined with new lines, in the order they appear in the toolbar. This includes the base chat system message ([see below](#chat-system-message)). -## `rules` blocks +## Creating `rules` blocks +Rules can be added locally using the "Add Rules" button while viewing the Local Assistant's rules. -Rules can be added to an Assistant on the Continue Hub. Explore available rules [here](https://hub.continue.dev/explore/rules), or [create your own](https://hub.continue.dev/new?type=block&blockType=rules) in the Hub. These blocks are defined using the [`config.yaml` syntax](../../reference.md#rules) and can also be created locally. +![add local rules button](/img/add-local-rules.png) :::info Automatically create local rule blocks When in Agent mode, you can prompt the agent to create a rule for you using the `builtin_create_rule_block` tool if enabled. @@ -26,6 +28,8 @@ When in Agent mode, you can prompt the agent to create a rule for you using the For example, you can say "Create a rule for this", and a rule will be created for you in `.continue/rules` based on your conversation. ::: +Rules can also be added to an Assistant on the Continue Hub. Explore available rules [here](https://hub.continue.dev/explore/rules), or [create your own](https://hub.continue.dev/new?type=block&blockType=rules) in the Hub. These blocks are defined using the [`config.yaml` syntax](../../reference.md#rules) and can also be created locally. + ### Syntax Rules blocks can be simple text, written in YAML configuration files, or as Markdown (`.md`) files. They can have the following properties: diff --git a/docs/static/img/add-local-rules.png b/docs/static/img/add-local-rules.png new file mode 100644 index 0000000000000000000000000000000000000000..67417d3022937d700e7f3ecc0c8b17ba56f74c25 GIT binary patch literal 54904 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 Date: Tue, 3 Jun 2025 21:52:49 -0700 Subject: [PATCH 12/15] adds quick start example --- docs/docs/customize/deep-dives/rules.md | 25 +++++++++++++++++++++++- docs/static/img/pirate-rule-test.png | Bin 0 -> 78915 bytes 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 docs/static/img/pirate-rule-test.png diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index 2b7904e8ab3..309adef3d7b 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -17,6 +17,27 @@ You can view the current rules by clicking the pen icon above the main toolbar: To form the system message, rules are joined with new lines, in the order they appear in the toolbar. This includes the base chat system message ([see below](#chat-system-message)). +## Quick Start + +Below is a quick example of setting up a new rule file: + +1. Create a folder called `.continue/rules` at the top level of your workspace +2. Add a file called `pirates-rule.yaml` to this folder. +3. Write the following contents to `pirates-rule.prompt` and save. + +```yaml title=".continue/rules/pirates-rule.yaml" +name: Pirate rule +version: 0.0.1 +schema: v1 +rules: + - Talk like a pirate. +``` + +Now test your rules by asking a question about a file in chat. + +![pirate rule test](/img/pirate-rule-test.png) + + ## Creating `rules` blocks Rules can be added locally using the "Add Rules" button while viewing the Local Assistant's rules. @@ -28,7 +49,9 @@ When in Agent mode, you can prompt the agent to create a rule for you using the For example, you can say "Create a rule for this", and a rule will be created for you in `.continue/rules` based on your conversation. ::: -Rules can also be added to an Assistant on the Continue Hub. Explore available rules [here](https://hub.continue.dev/explore/rules), or [create your own](https://hub.continue.dev/new?type=block&blockType=rules) in the Hub. These blocks are defined using the [`config.yaml` syntax](../../reference.md#rules) and can also be created locally. +Rules can also be added to an Assistant on the Continue Hub. + +Explore available rules [here](https://hub.continue.dev/explore/rules), or [create your own](https://hub.continue.dev/new?type=block&blockType=rules) in the Hub. These blocks are defined using the [`config.yaml` syntax](../../reference.md#rules) and can also be created locally. ### Syntax diff --git a/docs/static/img/pirate-rule-test.png b/docs/static/img/pirate-rule-test.png new file mode 100644 index 0000000000000000000000000000000000000000..13d0c1972116f18caec95993fb0dc9d85b64228e GIT binary patch literal 78915 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 literal 0 HcmV?d00001 From 493afc97a616723a67967b1dd914a09b38215a6c Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Tue, 3 Jun 2025 21:56:32 -0700 Subject: [PATCH 13/15] revert syntax example for now --- docs/docs/customize/deep-dives/rules.md | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index 309adef3d7b..52e5223c80e 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -62,16 +62,23 @@ Rules blocks can be simple text, written in YAML configuration files, or as Mark - `schema` (**required**): The schema version of the YAML file (e.g., `v1`) - `globs` (optional): When files are provided as context that match this glob pattern, the rule will be included. This can be either a single pattern (e.g., `"**/*.{ts,tsx}"`) or an array of patterns (e.g., `["src/**/*.ts", "tests/**/*.ts"]`). -```yaml title=".continue/rules/colors-rule.yaml" -name: New rules -version: 0.0.1 -schema: v1 +```yaml title=".config.yaml" rules: - - name: Tailwind Color Themes - rule: | - When adding colors to components, use tailwind color classes. - Do NOT use explicit colors like text-gray-400. Instead, use theme colors. - globs: "*/*.tsx" + - Always annotate Python functions with their parameter and return types + + - name: TypeScript best practices + rule: Always use TypeScript interfaces to define shape of objects. Use type aliases sparingly. + globs: "**/*.{ts,tsx}" + + - name: TypeScript test patterns + rule: In TypeScript tests, use Jest's describe/it pattern and follow best practices for mocking. + globs: + - "src/**/*.test.ts" + - "tests/**/*.ts" + + - uses: myprofile/my-mood-setter + with: + TONE: concise ``` ### `.continue/rules` folder You can create project-specific rules by adding a `.continue/rules` folder to the root of your project and adding new rule files. From 889be2118ec4e591d3c0f2ad4b5388ef45a6687e Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Wed, 4 Jun 2025 12:49:35 -0700 Subject: [PATCH 14/15] add prettier --- docs/docs/agent/how-to-customize.md | 1 + docs/docs/customize/deep-dives/rules.md | 17 ++++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/docs/agent/how-to-customize.md b/docs/docs/agent/how-to-customize.md index 1770768a651..495dd95474c 100644 --- a/docs/docs/agent/how-to-customize.md +++ b/docs/docs/agent/how-to-customize.md @@ -6,6 +6,7 @@ sidebar_position: 5 --- ## Add Rules Blocks + Adding Rules can be done in your assistant locally or in the Hub. [Explore Rules on the Hub](https://hub.continue.dev/explore/rules) and see the [Rules deep dive](../customize/deep-dives/rules.md) for more details and tips on creating rules. diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index 52e5223c80e..6a608090e20 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -11,6 +11,7 @@ Rules provide instructions to the model for [Chat](../../chat/how-to-use-it.md), ::: ## How it works + You can view the current rules by clicking the pen icon above the main toolbar: ![rules input toolbar section](/img/notch-rules.png) @@ -37,8 +38,8 @@ Now test your rules by asking a question about a file in chat. ![pirate rule test](/img/pirate-rule-test.png) - ## Creating `rules` blocks + Rules can be added locally using the "Add Rules" button while viewing the Local Assistant's rules. ![add local rules button](/img/add-local-rules.png) @@ -49,7 +50,7 @@ When in Agent mode, you can prompt the agent to create a rule for you using the For example, you can say "Create a rule for this", and a rule will be created for you in `.continue/rules` based on your conversation. ::: -Rules can also be added to an Assistant on the Continue Hub. +Rules can also be added to an Assistant on the Continue Hub. Explore available rules [here](https://hub.continue.dev/explore/rules), or [create your own](https://hub.continue.dev/new?type=block&blockType=rules) in the Hub. These blocks are defined using the [`config.yaml` syntax](../../reference.md#rules) and can also be created locally. @@ -80,7 +81,9 @@ rules: with: TONE: concise ``` + ### `.continue/rules` folder + You can create project-specific rules by adding a `.continue/rules` folder to the root of your project and adding new rule files. ```yaml title=".continue/rules/new-rule.yaml" @@ -89,9 +92,9 @@ version: 0.0.1 schema: v1 rules: - Always give concise responses - ``` -This is also done when selecting "Add Rule" in the Assistant settings. This will create a new folder in `.continue/rules` with a default file named `new-rule.yaml`. + +This is also done when selecting "Add Rule" in the Assistant settings. This will create a new folder in `.continue/rules` with a default file named `new-rule.yaml`. ### `.continuerules` @@ -110,16 +113,17 @@ If you want concise answers: ```yaml title=".continue/rules/concise-rule.yaml" rules: - name: Always give concise answers - rule: | + rule: | Please provide concise answers. Don't explain obvious concepts. You can assume that I am knowledgable about most programming topics. ``` + If you want to ensure certain practices are followed, for example in React: ```yaml title=".continue/rules/functional-rule.yaml" rules: - name: Always use functional components - rule: | + rule: | Whenever you are writing React code, make sure to - use functional components instead of class components - use hooks for state management @@ -135,4 +139,3 @@ Continue includes a simple default system message for [Chat](../../chat/how-to-u This can be viewed in the rules section of the toolbar (see above), or visit the source code [here](https://github.com/continuedev/continue/blob/main/core/llm/constructMessages.ts#L4) Advanced users can override this system message for a specific model if needed by using `chatOptions.baseSystemMessage`. See the [`config.yaml` reference](../../reference.md#models). - From e87a3a5c5e8f81e587fdb8fd7fa5e186e4425d3b Mon Sep 17 00:00:00 2001 From: Brian 'bdougie' Douglas Date: Wed, 4 Jun 2025 13:35:23 -0700 Subject: [PATCH 15/15] reorder list for a better flow --- docs/docs/customize/deep-dives/rules.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/docs/customize/deep-dives/rules.md b/docs/docs/customize/deep-dives/rules.md index 6a608090e20..36be611274a 100644 --- a/docs/docs/customize/deep-dives/rules.md +++ b/docs/docs/customize/deep-dives/rules.md @@ -96,16 +96,6 @@ rules: This is also done when selecting "Add Rule" in the Assistant settings. This will create a new folder in `.continue/rules` with a default file named `new-rule.yaml`. -### `.continuerules` - -:::warning - -`.contninuerules` will be deprecated in a future release. Please use the `.continue/rules` folder instead. - -::: - -You can create project-specific rules by adding a `.continuerules` file to the root of your project. This file is raw text and its full contents will be used as rules. - ### Examples If you want concise answers: @@ -132,10 +122,20 @@ rules: - modularize components into smaller, reusable pieces ``` -## Chat System Message +### Chat System Message Continue includes a simple default system message for [Chat](../../chat/how-to-use-it.md) and [Agent](../../agent/how-to-use-it.md) requests, to help the model provide reliable codeblock formats in its output. This can be viewed in the rules section of the toolbar (see above), or visit the source code [here](https://github.com/continuedev/continue/blob/main/core/llm/constructMessages.ts#L4) Advanced users can override this system message for a specific model if needed by using `chatOptions.baseSystemMessage`. See the [`config.yaml` reference](../../reference.md#models). + +### `.continuerules` + +:::warning + +`.contninuerules` will be deprecated in a future release. Please use the `.continue/rules` folder instead. + +::: + +You can create project-specific rules by adding a `.continuerules` file to the root of your project. This file is raw text and its full contents will be used as rules.