Files
pr-agent/docs/DESCRIBE.md

164 lines
8.8 KiB
Markdown
Raw Normal View History

2023-09-29 09:47:13 +03:00
# Describe Tool
2024-01-06 10:04:48 +02:00
## Table of Contents
- [Overview](#overview)
- [Configuration options](#configuration-options)
- [Inline file summary 💎](#inline-file-summary-)
- [Handle custom labels from the Repo's labels page :gem:](#handle-custom-labels-from-the-repos-labels-page-gem)
2024-01-06 10:04:48 +02:00
- [Markers template](#markers-template)
- [Usage Tips](#usage-tips)
- [Automation](#automation)
- [Custom labels](#custom-labels)
## Overview
The `describe` tool scans the PR code changes, and generates a description for the PR - title, type, summary, walkthrough and labels.
2024-01-05 17:05:03 +02:00
The tool can be triggered automatically every time a new PR is [opened](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#github-app-automatic-tools), or it can be invoked manually by commenting on any PR:
2023-09-29 09:47:13 +03:00
```
/describe
```
For example:
___
<kbd><img src=https://codium.ai/images/pr_agent/describe_comment.png width="768"></kbd>
___
<kbd><img src=https://codium.ai/images/pr_agent/describe_new.png width="768"></kbd>
___
2024-01-05 17:05:03 +02:00
2023-09-29 09:47:13 +03:00
### Configuration options
To edit [configurations](./../pr_agent/settings/configuration.toml#L46) related to the describe tool (`pr_description` section), use the following template:
2024-01-05 17:05:03 +02:00
```
/describe --pr_description.some_config1=... --pr_description.some_config2=...
```
2023-09-29 09:47:13 +03:00
2024-01-05 17:05:03 +02:00
**Possible configurations:**
2023-09-29 09:47:13 +03:00
- `publish_labels`: if set to true, the tool will publish the labels to the PR. Default is true.
- `publish_description_as_comment`: if set to true, the tool will publish the description as a comment to the PR. If false, it will overwrite the origianl description. Default is false.
- `add_original_user_description`: if set to true, the tool will add the original user description to the generated description. Default is false.
2023-10-08 14:35:54 +03:00
- `keep_original_user_title`: if set to true, the tool will keep the original PR title, and won't change it. Default is false.
2023-09-29 09:47:13 +03:00
- `extra_instructions`: Optional extra instructions to the tool. For example: "focus on the changes in the file X. Ignore change in ...".
2023-12-07 15:26:36 +02:00
2023-10-29 13:58:01 +02:00
- To enable `custom labels`, apply the configuration changes described [here](./GENERATE_CUSTOM_LABELS.md#configuration-changes)
2023-12-07 15:26:36 +02:00
2023-11-06 17:55:58 +02:00
- `enable_pr_type`: if set to false, it will not show the `PR type` as a text value in the description content. Default is true.
2023-12-07 15:26:36 +02:00
2023-12-03 10:52:00 +02:00
- `final_update_message`: if set to true, it will add a comment message [`PR Description updated to latest commit...`](https://github.com/Codium-ai/pr-agent/pull/499#issuecomment-1837412176) after finishing calling `/describe`. Default is true.
2023-12-07 15:26:36 +02:00
2024-01-04 10:27:07 +02:00
- `enable_semantic_files_types`: if set to true, "Changes walkthrough" section will be generated. Default is true.
- `collapsible_file_list`: if set to true, the file list in the "Changes walkthrough" section will be collapsible. If set to "adaptive", the file list will be collapsible only if there are more than 8 files. Default is "adaptive".
2023-11-06 17:55:58 +02:00
2024-01-17 16:27:07 +02:00
### Inline file summary 💎
2024-01-23 17:58:55 +02:00
> This feature is available only in PR-Agent Pro
2024-01-17 16:27:07 +02:00
2024-02-07 07:31:21 +02:00
This feature will enable you to quickly understand the changes in each file while reviewing the code changes (diff view).
2024-02-06 21:18:56 +02:00
To add the walkthrough table to the "Files changed" tab, you can click on the checkbox that appears PR Description status message below the main PR Description:
2024-02-06 21:19:47 +02:00
2024-02-06 21:18:56 +02:00
<kbd><img src=https://codium.ai/images/pr_agent/add_table_checkbox.png width="512"></kbd>
If you prefer to have the file summaries appear in the "Files changed" tab on every PR, change the `pr_description.inline_file_summary` parameter in the configuration file, possible values are:
2024-02-07 07:31:21 +02:00
2024-01-23 17:58:55 +02:00
- `'table'`: File changes walkthrough table will be displayed on the top of the "Files changed" tab, in addition to the "Conversation" tab.
2024-02-07 07:31:21 +02:00
<kbd><img src=https://codium.ai/images/pr_agent/diffview-table.png width="768"></kbd>
2024-01-23 17:58:55 +02:00
- `true`: A collapsable file comment with changes title and a changes summary for each file in the PR.
2024-02-07 07:31:21 +02:00
<kbd><img src=https://codium.ai/images/pr_agent/diffview_changes.png width="768"></kbd>
2024-01-23 17:58:55 +02:00
- `false` (`default`): File changes walkthrough will be added only to the "Conversation" tab.
2024-01-17 16:27:07 +02:00
2024-02-07 07:31:21 +02:00
Note that this feature is currently available only for GitHub.
2024-01-17 16:27:07 +02:00
### Handle custom labels from the Repo's labels page :gem:
> This feature is available only in PR-Agent Pro
You can control the custom labels that will be suggested by the `describe` tool, from the repo's labels page:
* GitHub : go to `https://github.com/{owner}/{repo}/labels` (or click on the "Labels" tab in the issues or PRs page)
* GitLab : go to `https://gitlab.com/{owner}/{repo}/-/labels` (or click on "Manage" -> "Labels" on the left menu)
Now add/edit the custom labels. they should be formatted as follows:
* Label name: The name of the custom label.
* Description: Start the description of with prefix `pr_agent:`, for example: `pr_agent: Description of when AI should suggest this label`.<br>
The description should be comprehensive and detailed, indicating when to add the desired label. For example:
<kbd><img src=https://codium.ai/images/pr_agent/add_native_custom_labels.png width="880"></kbd>
2023-10-19 11:43:18 +03:00
### Markers template
2024-01-05 17:05:03 +02:00
To enable markers, set `pr_description.use_description_markers=true`.
2024-02-07 07:31:21 +02:00
Markers enable to easily integrate user's content and auto-generated content, with a template-like mechanism.
2023-09-29 09:47:13 +03:00
For example, if the PR original description was:
```
User content...
2024-01-05 17:05:03 +02:00
## PR Type:
pr_agent:type
2023-09-29 09:47:13 +03:00
## PR Description:
pr_agent:summary
## PR Walkthrough:
pr_agent:walkthrough
```
2024-01-05 17:05:03 +02:00
The marker `pr_agent:type` will be replaced with the PR type, `pr_agent:summary` will be replaced with the PR summary, and `pr_agent:walkthrough` will be replaced with the PR walkthrough.
2023-10-19 11:38:21 +03:00
<kbd><img src=https://codium.ai/images/pr_agent/describe_markers_before.png width="768"></kbd>
2023-10-19 11:40:01 +03:00
2023-10-19 11:38:21 +03:00
==>
2023-10-19 11:40:01 +03:00
<kbd><img src=https://codium.ai/images/pr_agent/describe_markers_after.png width="768"></kbd>
2023-10-19 11:45:41 +03:00
2024-01-06 10:04:48 +02:00
**Configuration params:**
2023-10-19 11:45:41 +03:00
- `use_description_markers`: if set to true, the tool will use markers template. It replaces every marker of the form `pr_agent:marker_name` with the relevant content. Default is false.
- `include_generated_by_header`: if set to true, the tool will add a dedicated header: 'Generated by PR Agent at ...' to any automatic content. Default is true.
2024-01-05 17:05:03 +02:00
## Usage Tips
1) [Automation](#automation)
2) [Custom labels](#custom-labels)
2024-01-06 10:04:48 +02:00
### Automation
2024-01-05 17:05:03 +02:00
- When you first install the app, the [default mode](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#github-app-automatic-tools) for the describe tool is:
```
2024-01-07 09:56:09 +02:00
pr_commands = ["/describe --pr_description.add_original_user_description=true"
"--pr_description.keep_original_user_title=true", ...]
2024-01-05 17:05:03 +02:00
```
2024-01-07 09:56:09 +02:00
meaning the `describe` tool will run automatically on every PR, will keep the original title, and will add the original user description above the generated description.
<br> This default settings aim to strike a good balance between automation and control:
2024-01-05 17:05:03 +02:00
If you want more automation, just give the PR a title, and the tool will auto-write a full description; If you want more control, you can add a detailed description, and the tool will add the complementary description below it.
- For maximal automation, you can change the default mode to:
```
2024-01-07 09:56:09 +02:00
pr_commands = ["/describe --pr_description.add_original_user_description=false"
"--pr_description.keep_original_user_title=true", ...]
2024-01-05 17:05:03 +02:00
```
so the title will be auto-generated as well.
- Markers are an alternative way to control the generated description, to give maximal control to the user. If you set:
```
pr_commands = ["/describe --pr_description.use_description_markers=true", ...]
2024-01-05 17:05:03 +02:00
```
the tool will replace every marker of the form `pr_agent:marker_name` in the PR description with the relevant content, where `marker_name` is one of the following:
- `type`: the PR type.
- `summary`: the PR summary.
- `walkthrough`: the PR walkthrough.
Note that when markers are enabled, if the original PR description does not contain any markers, the tool will not alter the description at all.
2024-01-06 10:04:48 +02:00
### Custom labels
2024-01-06 10:08:29 +02:00
The default labels of the describe tool are quite generic, since they are meant to be used in any repo: [`Bug fix`, `Tests`, `Enhancement`, `Documentation`, `Other`].
2024-01-06 10:04:48 +02:00
2024-01-07 09:56:09 +02:00
If you specify [custom labels](#handle-custom-labels-from-the-repos-labels-page-gem) in the repo's labels page, you can get tailored labels for your use cases.
2024-01-06 10:04:48 +02:00
Examples for custom labels:
2024-01-07 09:56:09 +02:00
- `Main topic:performance` - pr_agent:The main topic of this PR is performance
2024-01-06 10:04:48 +02:00
- `New endpoint` - pr_agent:A new endpoint was added in this PR
- `SQL query` - pr_agent:A new SQL query was added in this PR
- `Dockerfile changes` - pr_agent:The PR contains changes in the Dockerfile
- ...
2024-01-07 09:56:09 +02:00
The list above is eclectic, and aims to give an idea of different possibilities. Define custom labels that are relevant for your repo and use cases.
2024-01-06 10:04:48 +02:00
Note that Labels are not mutually exclusive, so you can add multiple label categories.
<br>Make sure to provide proper title, and a detailed and well-phrased description for each label, so the tool will know when to suggest it.