From 89c6537283b4da3c63ed83b95870ea8937f10f09 Mon Sep 17 00:00:00 2001 From: Kevin Heis Date: Thu, 6 Feb 2025 07:47:02 -0800 Subject: [PATCH 01/11] Update comment-code-changes.yml to include 3 options (#54274) --- .github/workflows/comment-code-changes.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/comment-code-changes.yml b/.github/workflows/comment-code-changes.yml index b47fe751f8ff..addac2ed78e0 100644 --- a/.github/workflows/comment-code-changes.yml +++ b/.github/workflows/comment-code-changes.yml @@ -58,7 +58,11 @@ jobs: COMMENT_BODY=" ## 🚀 Manual Deployment Required - It looks like this pull request contains code changes. To preview these changes, you will need to deploy them manually. + It looks like this pull request contains code changes. To preview these changes, please do one of: + + 1. [Set up a local development environment](https://github.com/github/docs/blob/main/contributing/development.md). + 1. [Spin up a codespace to review](https://github.com/github/docs-engineering/blob/main/docs/team-practices/use-a-codespace-to-review.md). + 1. Message on Slack in `#docs-engineering` for a staging server. Thank you for your contribution!" fi From ab74129a0771ac85cd02e63e74c85ef9a06d34f7 Mon Sep 17 00:00:00 2001 From: Zen van Riel <45333650+Zenulous@users.noreply.github.com> Date: Thu, 6 Feb 2025 16:59:14 +0100 Subject: [PATCH 02/11] Use the 'docs' chat context for AI Search (#54280) --- src/search/lib/ai-search-proxy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/search/lib/ai-search-proxy.ts b/src/search/lib/ai-search-proxy.ts index cc75d605f2f2..cc3c5766ac6d 100644 --- a/src/search/lib/ai-search-proxy.ts +++ b/src/search/lib/ai-search-proxy.ts @@ -33,7 +33,7 @@ export const aiSearchProxy = async (req: Request, res: Response) => { } const body = { - chat_context: 'defaults', + chat_context: 'docs', docs_source: docsSource, query, stream: true, From c68185883b31f9f534e67e299d95e8f69effdbff Mon Sep 17 00:00:00 2001 From: Ashish Keshan Date: Thu, 6 Feb 2025 11:31:12 -0500 Subject: [PATCH 03/11] change number -> string for ai_search_result properties (#54282) --- src/events/lib/schema.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/events/lib/schema.ts b/src/events/lib/schema.ts index 7e3576218a86..1993002f4289 100644 --- a/src/events/lib/schema.ts +++ b/src/events/lib/schema.ts @@ -412,11 +412,11 @@ const aiSearchResult = { description: 'The query the user searched for.', }, ai_search_result_response: { - type: 'number', + type: 'string', description: "The GPT's response to the query.", }, ai_search_result_links_json: { - type: 'number', + type: 'string', description: 'Dynamic JSON string of an array of "link" objects in the form: [{ "type": "reference" | "inline", "url": "https://..", "product": "issues" | "pages" | ... }, ...]', }, From 1344bba9e8f073d7b478e1045d1a89a05a645bcf Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Thu, 6 Feb 2025 11:38:41 -0500 Subject: [PATCH 04/11] GraphQL schema update (#54283) Co-authored-by: heiskr <1221423+heiskr@users.noreply.github.com> --- src/graphql/data/fpt/changelog.json | 13 +++++++++++++ src/graphql/data/fpt/schema.docs.graphql | 5 +++++ src/graphql/data/fpt/schema.json | 4 ++++ src/graphql/data/ghec/schema.docs.graphql | 5 +++++ src/graphql/data/ghec/schema.json | 4 ++++ 5 files changed, 31 insertions(+) diff --git a/src/graphql/data/fpt/changelog.json b/src/graphql/data/fpt/changelog.json index 022069d48154..b09e8c101432 100644 --- a/src/graphql/data/fpt/changelog.json +++ b/src/graphql/data/fpt/changelog.json @@ -1,4 +1,17 @@ [ + { + "schemaChanges": [ + { + "title": "The GraphQL schema includes these changes:", + "changes": [ + "

Enum value UNAFFILIATED was added to enum EnterpriseAdministratorRole

" + ] + } + ], + "previewChanges": [], + "upcomingChanges": [], + "date": "2025-02-06" + }, { "schemaChanges": [ { diff --git a/src/graphql/data/fpt/schema.docs.graphql b/src/graphql/data/fpt/schema.docs.graphql index 1e3473302c56..68804c399563 100644 --- a/src/graphql/data/fpt/schema.docs.graphql +++ b/src/graphql/data/fpt/schema.docs.graphql @@ -13438,6 +13438,11 @@ enum EnterpriseAdministratorRole { Represents an owner of the enterprise account. """ OWNER + + """ + Unaffiliated member of the enterprise account without an admin role. + """ + UNAFFILIATED } """ diff --git a/src/graphql/data/fpt/schema.json b/src/graphql/data/fpt/schema.json index 6b951def8b83..7cd2318a7453 100644 --- a/src/graphql/data/fpt/schema.json +++ b/src/graphql/data/fpt/schema.json @@ -85152,6 +85152,10 @@ { "name": "OWNER", "description": "

Represents an owner of the enterprise account.

" + }, + { + "name": "UNAFFILIATED", + "description": "

Unaffiliated member of the enterprise account without an admin role.

" } ] }, diff --git a/src/graphql/data/ghec/schema.docs.graphql b/src/graphql/data/ghec/schema.docs.graphql index 1e3473302c56..68804c399563 100644 --- a/src/graphql/data/ghec/schema.docs.graphql +++ b/src/graphql/data/ghec/schema.docs.graphql @@ -13438,6 +13438,11 @@ enum EnterpriseAdministratorRole { Represents an owner of the enterprise account. """ OWNER + + """ + Unaffiliated member of the enterprise account without an admin role. + """ + UNAFFILIATED } """ diff --git a/src/graphql/data/ghec/schema.json b/src/graphql/data/ghec/schema.json index 6b951def8b83..7cd2318a7453 100644 --- a/src/graphql/data/ghec/schema.json +++ b/src/graphql/data/ghec/schema.json @@ -85152,6 +85152,10 @@ { "name": "OWNER", "description": "

Represents an owner of the enterprise account.

" + }, + { + "name": "UNAFFILIATED", + "description": "

Unaffiliated member of the enterprise account without an admin role.

" } ] }, From 5d91593b7db8fd2e813ffb8917cc362f8a8c4b8d Mon Sep 17 00:00:00 2001 From: Sophie <29382425+sophietheking@users.noreply.github.com> Date: Thu, 6 Feb 2025 17:47:17 +0100 Subject: [PATCH 05/11] Copilot Edits (VS Code) [GA] (#54136) --- .../asking-github-copilot-questions-in-your-ide.md | 8 +++----- .../copilot/copilot-edits-public-preview-note.md | 1 - 2 files changed, 3 insertions(+), 6 deletions(-) delete mode 100644 data/reusables/copilot/copilot-edits-public-preview-note.md diff --git a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md index 345a039db2c9..6f2be4538429 100644 --- a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md +++ b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md @@ -121,9 +121,7 @@ In addition to submitting prompts through the chat view, you can submit prompts See [inline chat](https://code.visualstudio.com/docs/copilot/copilot-chat#_inline-chat), [quick chat](https://code.visualstudio.com/docs/copilot/copilot-chat#_quick-chat), and [chat smart actions](https://code.visualstudio.com/docs/copilot/copilot-chat#_chat-smart-actions) in the {% data variables.product.prodname_vscode %} documentation for more details. -## Multi-file edits - -{% data reusables.copilot.copilot-edits-public-preview-note %} +## {% data variables.product.prodname_copilot_edits_vscode_short %} Use {% data variables.product.prodname_copilot_edits_vscode_short %} to make changes across multiple files directly from a single {% data variables.product.prodname_copilot_chat_short %} prompt. @@ -133,7 +131,7 @@ Use {% data variables.product.prodname_copilot_edits_vscode_short %} to make cha 1. Submit a prompt. In response to your prompt, {% data variables.product.prodname_copilot_edits_vscode_short %} determines which files in your _working set_ to change and adds a short description of the change. 1. Review the changes and **Apply** or **Discard** the edits for each file. -For more information, see [{% data variables.product.prodname_copilot_edits_vscode_short %}](https://code.visualstudio.com/docs/copilot/copilot-edits) in the {% data variables.product.prodname_vscode %} documentation. +For more detailed instructions, see [{% data variables.product.prodname_copilot_edits_vscode_short %}](https://code.visualstudio.com/docs/copilot/copilot-edits) in the {% data variables.product.prodname_vscode %} documentation. ## Sharing feedback @@ -144,7 +142,7 @@ To leave feedback about the {% data variables.product.prodname_copilot_chat %} e ## Further reading * [AUTOTITLE](/copilot/using-github-copilot/prompt-engineering-for-github-copilot) -* [Using Copilot Chat in VS Code](https://code.visualstudio.com/docs/copilot/copilot-chat) and [Getting started with GitHub Copilot Chat in VS Code](https://code.visualstudio.com/docs/copilot/getting-started-chat) in the {% data variables.product.prodname_vscode %} documentation +* [Using {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vscode_shortname %}](https://code.visualstudio.com/docs/copilot/copilot-chat) and [Getting started with {% data variables.product.prodname_copilot_chat %} in {% data variables.product.prodname_vscode_shortname %}](https://code.visualstudio.com/docs/copilot/getting-started-chat) in the {% data variables.product.prodname_vscode %} documentation * [AUTOTITLE](/copilot/github-copilot-enterprise/copilot-chat-in-github/using-github-copilot-chat-in-githubcom) * [AUTOTITLE](/copilot/github-copilot-chat/about-github-copilot-chat) * [AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot) diff --git a/data/reusables/copilot/copilot-edits-public-preview-note.md b/data/reusables/copilot/copilot-edits-public-preview-note.md deleted file mode 100644 index 6ca1ca348adb..000000000000 --- a/data/reusables/copilot/copilot-edits-public-preview-note.md +++ /dev/null @@ -1 +0,0 @@ -> [!NOTE] Multi-file edit is currently in {% data variables.release-phases.public_preview %} and subject to change. From b247b437f8197856896e7e31955381a5e4c31db9 Mon Sep 17 00:00:00 2001 From: Sophie <29382425+sophietheking@users.noreply.github.com> Date: Thu, 6 Feb 2025 17:47:30 +0100 Subject: [PATCH 06/11] Next edit suggestions (VS Code) [Public Preview] (#54195) Co-authored-by: Jules <19994093+jules-p@users.noreply.github.com> --- .../vsc-advanced-code-completion-menu.png | Bin 0 -> 74375 bytes .../github-copilot-features.md | 4 +++ ...ring-github-copilot-in-your-environment.md | 8 +++++- .../about-github-copilot-free.md | 5 +++- ...features-for-copilot-in-your-enterprise.md | 5 ++++ ...licies-for-copilot-in-your-organization.md | 1 + content/copilot/quickstart.md | 3 ++- ...b-copilot-questions-in-windows-terminal.md | 2 +- ...estions-in-your-ide-with-github-copilot.md | 25 ++++++++++++++++++ .../copilot/quickstart-nextsteps1.md | 2 +- data/variables/copilot.yml | 4 +++ 11 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 assets/images/help/copilot/vsc-advanced-code-completion-menu.png diff --git a/assets/images/help/copilot/vsc-advanced-code-completion-menu.png b/assets/images/help/copilot/vsc-advanced-code-completion-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..070413a123db21cac662c6415f57d8805ff6c05b GIT binary patch literal 74375 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 NKkFk7mMk18;$Orkgq{EZ literal 0 HcmV?d00001 diff --git a/content/copilot/about-github-copilot/github-copilot-features.md b/content/copilot/about-github-copilot/github-copilot-features.md index bc55ec106015..5ab3c1f19656 100644 --- a/content/copilot/about-github-copilot/github-copilot-features.md +++ b/content/copilot/about-github-copilot/github-copilot-features.md @@ -18,6 +18,10 @@ redirect_from: Autocomplete-style suggestions from {% data variables.product.prodname_copilot_short %} in supported IDEs _({% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, JetBrains IDEs, Azure Data Studio, Xcode, and Vim/Neovim)_. For more information, see [AUTOTITLE](/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot). +If you use {% data variables.product.prodname_vscode_shortname %}, you can also use {% data variables.copilot.next_edit_suggestions %}, which will predict the location of the next edit you are likely to make and suggest a completion for it. + +> [!NOTE] {% data variables.copilot.next_edit_suggestions_caps %} is currently in {% data variables.release-phases.public_preview %} and is subject to change. + ### {% data variables.product.prodname_copilot_chat_short %} A chat interface that lets you ask coding-related questions. {% data variables.product.prodname_copilot_chat %} is available on the {% data variables.product.github %} website, in {% data variables.product.prodname_mobile %}, in supported IDEs _({% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and JetBrains IDEs)_, and in {% data variables.product.prodname_windows_terminal %}. Users can also use skills with {% data variables.product.prodname_copilot_chat_short %}. For more information, see [AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-github) and [AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide). diff --git a/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md b/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md index 8e9a4c60e494..923877f5c8ba 100644 --- a/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md +++ b/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md @@ -257,7 +257,7 @@ If you use {% data variables.product.prodname_vscode %}, you can use {% data var * Learn from the code {% data variables.product.prodname_copilot_short %} generates * Help you configure your editor -You can learn more about scenarios and setup in the [VS Code documentation](https://code.visualstudio.com/docs/copilot/overview#_use-cases-for-github-copilot-in-vs-code). +You can learn more about scenarios and setup in the [{% data variables.product.prodname_vscode_shortname %} documentation](https://code.visualstudio.com/docs/copilot/overview#_use-cases-for-github-copilot-in-vs-code). After you install the {% data variables.product.prodname_copilot %} extension, you can enable or disable it, and you can configure advanced settings within {% data variables.product.prodname_vscode %} or on {% data variables.product.github %}. @@ -317,6 +317,12 @@ You can choose to enable or disable inline suggestions for {% data variables.pro 1. In the left-side panel of the settings tab, click **Extensions** and then select **{% data variables.product.prodname_copilot_short %}**. 1. Under "Inline Suggest:Enable," select or deselect the checkbox to enable or disable inline suggestions. +## Enabling {% data variables.copilot.next_edit_suggestions %} + +You can enable {% data variables.copilot.next_edit_suggestions %} via the {% data variables.product.prodname_vscode_shortname %} setting `github.copilot.nextEditSuggestions.enabled`. For more detailed instructions, see [Enabling edit suggestions](https://code.visualstudio.com/docs/copilot/ai-powered-suggestions#_enabling-edit-suggestions) in the {% data variables.product.prodname_vscode_shortname %} documentation. + +If you have a {% data variables.product.prodname_copilot_business_short %} {% ifversion ghec %}or {% data variables.product.prodname_copilot_enterprise_short %}{% endif %} subscription, then the organization {% ifversion ghec %}or enterprise{% endif %} from which you receive your subscription must enable the **Editor Preview Features** setting. See [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#enabling-copilot-features-in-your-organization){% ifversion ghec %} or [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise#configuring-policies-for-github-copilot){% endif %}. + ## Enabling or disabling {% data variables.product.prodname_copilot %} for specific languages You can specify which languages you want to enable or disable {% data variables.product.prodname_copilot %} for. diff --git a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/about-github-copilot-free.md b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/about-github-copilot-free.md index d21d4e680ba9..e8517f1eb2d5 100644 --- a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/about-github-copilot-free.md +++ b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/about-github-copilot-free.md @@ -23,8 +23,11 @@ topics: {% data variables.product.prodname_copilot_free_short %} includes the following features: * Code completion in {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, JetBrains IDEs, Vim/Neovim, Xcode, and Azure Data Studio - * {% data variables.product.prodname_copilot_edits_vscode_short %} to make changes across multiple files (**only in {% data variables.product.prodname_vscode %} and {% data variables.product.prodname_vs %}**) + * {% data variables.copilot.next_edit_suggestions_caps %}, which will predict the location of the next edit you are likely to make and suggest a completion for it. (**only in {% data variables.product.prodname_vscode_shortname %}**) + * {% data variables.product.prodname_copilot_edits_vscode_short %} to make changes across multiple files. {% data variables.product.prodname_copilot_edits_vscode_short %} is available in two modes: edit mode and agent mode. (**only in {% data variables.product.prodname_vscode_shortname %}**) * {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, JetBrains IDEs, and {% data variables.product.prodname_dotcom_the_website %} + * Custom instructions (**only in {% data variables.product.prodname_vs %}, {% data variables.product.prodname_vscode_shortname %}, and {% data variables.product.prodname_dotcom_the_website %}**) + * Prompt files (**only in {% data variables.product.prodname_vscode_shortname %}**) * Block suggestions matching public code * Access to the {% data variables.copilot.copilot_claude_sonnet %} and {% data variables.copilot.copilot_gemini_flash %} models * Access to {% data variables.product.prodname_copilot_extensions_short %} in {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, JetBrains IDEs, {% data variables.product.prodname_dotcom_the_website %}, and {% data variables.product.prodname_mobile %} diff --git a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md index a77e20e5f831..8dfcac0cea69 100644 --- a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md +++ b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md @@ -29,6 +29,7 @@ You can configure any of the following policies for your enterprise: * [{% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_dotcom_the_website %}](#copilot-in-githubcom) * [{% data variables.product.prodname_copilot_cli %}](#github-copilot-in-the-cli) * [{% data variables.product.prodname_copilot_chat %} in the IDE](#github-copilot-chat-in-the-ide) +* [Editor preview features](#editor-preview-features) * [{% data variables.product.prodname_copilot_mobile %}](#github-copilot-chat-in-github-mobile) * [{% data variables.product.prodname_copilot_extensions %}](#github-copilot-extensions) * [Suggestions matching public code](#suggestions-matching-public-code) @@ -54,6 +55,10 @@ If you enable "{% data variables.product.prodname_copilot_short %} in {% data va You can chat with {% data variables.product.prodname_copilot %} in your IDE to get code suggestions and answers to coding-related questions without context switching. +### Editor preview features + +Some features of {% data variables.product.prodname_copilot_short %} are available as preview features in your editor. You can enable or disable these features for your enterprise. + ### {% data variables.product.prodname_copilot_mobile %} {% data variables.product.prodname_copilot_mobile %} is a chat interface that lets you interact with {% data variables.product.prodname_copilot %} to ask and receive answers to coding-related questions within {% data variables.product.prodname_mobile %}. diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md index c7b7100c1923..7766098d1ae8 100644 --- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md +++ b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md @@ -28,6 +28,7 @@ Organization owners can set policies to govern how {% data variables.product.pro * {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_dotcom_the_website %} * {% data variables.product.prodname_copilot_chat_short %} in the IDE +* Editor preview features * {% data variables.product.prodname_copilot_mobile_short %} * {% data variables.product.prodname_copilot_cli_short %} and {% data variables.product.prodname_windows_terminal %} * Suggestions matching public code diff --git a/content/copilot/quickstart.md b/content/copilot/quickstart.md index 90cbbd6ce474..ad4ab0170f26 100644 --- a/content/copilot/quickstart.md +++ b/content/copilot/quickstart.md @@ -173,7 +173,8 @@ The following example uses JavaScript, however other languages will work similar ## Next steps {% data reusables.copilot.quickstart-nextsteps1 %} -* **Use {% data variables.product.prodname_copilot_short %} like a pro** - Learn how to write effective prompts for {% data variables.product.prodname_copilot %}. For more information, see [Best practices for using {% data variables.product.prodname_copilot %} in VS Code](https://code.visualstudio.com/docs/copilot/prompt-crafting) in the {% data variables.product.prodname_vscode %} documentation. +* **Use {% data variables.product.prodname_copilot_short %} like a pro** - Learn how to write effective prompts for {% data variables.product.prodname_copilot %}. For more information, see [Best practices for using {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vscode_shortname %}](https://code.visualstudio.com/docs/copilot/prompt-crafting) in the {% data variables.product.prodname_vscode %} documentation. +* **Get familiar with {% data variables.copilot.next_edit_suggestions %}** - See [About {% data variables.copilot.next_edit_suggestions %}](/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot#about-next-edit-suggestions). {% data reusables.copilot.quickstart-nextsteps2 %} {% endvscode %} diff --git a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-windows-terminal.md b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-windows-terminal.md index 8a7fccb5cc8a..c420e69d5ddd 100644 --- a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-windows-terminal.md +++ b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-windows-terminal.md @@ -13,7 +13,7 @@ versions: * **Access to {% data variables.product.prodname_copilot %}**. See [AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot). * **{% data variables.product.prodname_windows_terminal %} Canary installed**. For installation instructions, see [Installing {% data variables.product.prodname_windows_terminal %} Canary](https://github.com/microsoft/terminal?tab=readme-ov-file#installing-windows-terminal-canary). -* **GitHub Copilot connected to Terminal Chat**. See [AUTOTITLE](/copilot/quickstart?tool=windowsterminal). +* **{% data variables.product.prodname_copilot %} connected to Terminal Chat**. See [AUTOTITLE](/copilot/quickstart?tool=windowsterminal). If you have access to {% data variables.product.prodname_copilot %} via your organization or enterprise, you cannot use {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_windows_terminal %} if your organization owner or enterprise administrator has disabled {% data variables.product.prodname_copilot_cli_short %}. See [AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/managing-policies-for-copilot-in-your-organization). diff --git a/content/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot.md b/content/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot.md index 9c46c6a27874..6dcc0dcb9a78 100644 --- a/content/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot.md +++ b/content/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot.md @@ -207,6 +207,11 @@ Alternatively, you can show alternate suggestions by pressing Alt+ [!NOTE] {% data variables.copilot.next_edit_suggestions_caps %} is currently in {% data variables.release-phases.public_preview %} and is subject to change. + +Inline suggestions autocomplete code, but many development tasks involve editing existing code. {% data variables.copilot.next_edit_suggestions_caps %} assists with edits both at the cursor and in other relevant parts of the code, helping maintain consistency and streamline changes. + +{% data variables.copilot.next_edit_suggestions_caps %} predicts where and what edits may be needed based on ongoing changes. Suggestions may span a single symbol, an entire line, or multiple lines, depending on the scope of the potential change. + +To enable {% data variables.copilot.next_edit_suggestions %}, see [AUTOTITLE](/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment#enabling-next-edit-suggestions). + +### Navigating and accepting suggestions + +You can navigate suggested code changes using Tab, making it easier to find the next relevant edit without manually searching through files or references. Press Tab again to accept a suggestion. + +An arrow in the gutter indicates an available edit suggestion. Hover over the arrow to access the edit suggestion menu, which provides keyboard shortcuts and settings options. If an edit suggestion is outside the current editor view, the arrow will point up or down to indicate where the next suggestion is. + +![Screenshot of the gutter menu in {% data variables.product.prodname_vscode %}. The arrow is outlined in dark orange.](/assets/images/help/copilot/vsc-advanced-code-completion-menu.png) + +For more details and examples, see [Code completions with {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vscode_shortname %}](https://aka.ms/gh-copilot-nes-docs) in the {% data variables.product.prodname_vscode %} documentation. + {% endvscode %} {% vimneovim %} diff --git a/data/reusables/copilot/quickstart-nextsteps1.md b/data/reusables/copilot/quickstart-nextsteps1.md index 997fee5c2790..b95514a530f6 100644 --- a/data/reusables/copilot/quickstart-nextsteps1.md +++ b/data/reusables/copilot/quickstart-nextsteps1.md @@ -1,3 +1,3 @@ -* **Find out more about {% data variables.product.prodname_copilot_short %} code completion"** - See [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-code-suggestions-in-your-editor). +* **Find out more about {% data variables.product.prodname_copilot_short %} code completion** - See [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-code-suggestions-in-your-editor). * **Find out more about {% data variables.product.prodname_copilot_chat %}** - See [AUTOTITLE](/copilot/github-copilot-chat/using-github-copilot-chat-in-your-ide){% ifversion fpt %}.{% endif %}{% ifversion ghec %} and [AUTOTITLE](/copilot/github-copilot-enterprise/copilot-chat-in-github/using-github-copilot-chat-in-githubcom).{% endif %} * **Learn how to write effective prompts** - See [AUTOTITLE](/copilot/using-github-copilot/prompt-engineering-for-github-copilot). diff --git a/data/variables/copilot.yml b/data/variables/copilot.yml index 3ea736125ed7..ecf771c38bd4 100644 --- a/data/variables/copilot.yml +++ b/data/variables/copilot.yml @@ -30,3 +30,7 @@ copilot_code-review_short: 'Copilot code review' ## LLM models for Copilot copilot_claude_sonnet: 'Claude 3.5 Sonnet' copilot_gemini_flash: 'Gemini 2.0 Flash' + +## Next edit suggestions in VS Code +next_edit_suggestions: 'next edit suggestions' +next_edit_suggestions_caps: 'Next edit suggestions' From de6d55fb642ecfa35f758d76ff911a8535043b13 Mon Sep 17 00:00:00 2001 From: Sophie <29382425+sophietheking@users.noreply.github.com> Date: Thu, 6 Feb 2025 17:47:36 +0100 Subject: [PATCH 07/11] Prompt files (VS Code) [Public Preview] (#54205) Co-authored-by: Nick Trogh <1908215+ntrogh@users.noreply.github.com> --- ...-custom-instructions-for-github-copilot.md | 81 ++++++++++++++++++- 1 file changed, 79 insertions(+), 2 deletions(-) diff --git a/content/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot.md b/content/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot.md index 43399d5f944a..1d2c69e9226d 100644 --- a/content/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot.md +++ b/content/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot.md @@ -37,6 +37,12 @@ topics: {% data variables.product.prodname_copilot %} can provide chat responses that are tailored to the way your team works, the tools you use, or the specifics of your project, if you provide it with enough context to do so. Instead of repeatedly adding this contextual detail to your chat questions, you can create a file that automatically adds this information for you. The additional information is not displayed in the chat, but is available to {% data variables.product.prodname_copilot_short %} to allow it to generate higher quality responses. +{% vscode %} + +Additionally, you can create prompt files. With prompt files, you can specify common prompt instructions and relevant context in a Markdown file (`*.prompt.md`), that you can then reuse in your chat prompts. Prompt files are only available in {% data variables.product.prodname_vscode_shortname %}. + +{% endvscode %} + ## Prerequisites * A custom instructions file (see the instructions below). @@ -124,7 +130,7 @@ You can click the reference to open the file. {% data reusables.copilot.custom-instructions-reference %} -![Screenshot of an expanded References list, showing the 'copilot-instructions.md' file highlighted with a dark organge outline.](/assets/images/help/copilot/custom-instructions-vscode.png) +![Screenshot of an expanded References list, showing the 'copilot-instructions.md' file highlighted with a dark orange outline.](/assets/images/help/copilot/custom-instructions-vscode.png) {% endvscode %} @@ -132,7 +138,7 @@ You can click the reference to open the file. {% data reusables.copilot.custom-instructions-reference %} -![Screenshot of the References popup, showing the 'copilot-instructions.md' file highlighted with a dark organge outline.](/assets/images/help/copilot/custom-instruction-ref-visual-studio.png) +![Screenshot of the References popup, showing the 'copilot-instructions.md' file highlighted with a dark orange outline.](/assets/images/help/copilot/custom-instruction-ref-visual-studio.png) {% endvisualstudio %} @@ -167,3 +173,74 @@ Your choice persists until you change it. 1. Select or clear the checkbox for **(Preview) Enable custom instructions to be loaded from .github/copilot-instructions.md files and added to requests**. {% endvisualstudio %} + +{% vscode %} + +## About prompt files + +> [!NOTE] Prompt files are {% data variables.release-phases.public_preview %} and subject to change. + +Prompt files let you build and share reusable prompt instructions with additional context. A prompt file is a Markdown file that mimics the existing format of writing prompts in {% data variables.product.prodname_copilot_chat_short %} (for example, `Rewrite #file:x.ts`). This allows blending natural language instructions, additional context, and even linking to other prompt files as dependencies. + +While custom instructions help to add codebase-wide context to each AI workflow, prompt files let you add instructions to a specific chat interaction. + +Common use cases include: + +* **Code generation**. Create reusable prompts for components, tests, or migrations (for example, React forms, or API mocks). +* **Domain expertise**. Share specialized knowledge through prompts, such as security practices, or compliance checks. +* **Team collaboration**. Document patterns and guidelines with references to specs and documentation. +* **Onboarding**. Create step-by-step guides for complex processes or project-specific patterns. + +### Prompt file examples + +The following examples demonstrate how to use prompt files. + +* `react-form.prompt.md` - documents a reusable task for generating a form. + + ```markdown + Your goal is to generate a new React form component. + + Ask for the form name and fields if not provided. + + Requirements for the form: + - Use form design system components: [design-system/Form.md](../docs/design-system/Form.md) + - Use `react-hook-form` for form state management: + - Always define TypeScript types for your form data + - Prefer *uncontrolled* components using register + - Use `defaultValues` to prevent unnecessary rerenders + - Use `yup` for validation: + - Create reusable validation schemas in separate files + - Use TypeScript types to ensure type safety + - Customize UX-friendly validation rules + ``` + +* `security-api.prompt.md` - documents reusable security practices for REST APIs, which can be used to do security reviews of REST APIs. + + ```markdown + Secure REST API review: + - Ensure all endpoints are protected by authentication and authorization + - Validate all user inputs and sanitize data + - Implement rate limiting and throttling + - Implement logging and monitoring for security events + … + ``` + +### Using prompt files + +To enable prompt files, configure the `chat.promptFiles` {% data variables.product.prodname_vscode_shortname %} setting. Set it to `true` or use the `{ "/path/to/folder": boolean }` notation to specify a different path. Relative paths are resolved from the root folder(s) of your workspace, and the default value of `.github/prompts` is used if no other path is provided. For more detailed instructions, see [{% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vscode_shortname %} settings reference](https://code.visualstudio.com/docs/copilot/copilot-settings) in the {% data variables.product.prodname_vscode %} documentation. + +1. Create a `.prompt.md` file in the `.github/prompts` directory of your workspace. +1. Write prompt instructions by using Markdown formatting. + + Reference additional workspace files as Markdown links (`[index](../index.ts)`), or as `#file:../index.ts` references within the prompt file. You can also reference other `.prompt.md` files. + +1. Select the attach icon, then select **Prompt...** and choose the prompt file to attach it in {% data variables.product.prodname_copilot_chat_short %} or {% data variables.product.prodname_copilot_edits_vscode_short %}. +1. Optionally, attach additional context files required for the task. +1. Send the chat prompt. + + * For reusable tasks, send the prompt without any additional instructions. + * Include additional instructions to provide more context for the task at hand. + +> [!TIP] Reference additional context files like API specs or documentation by using Markdown links to provide {% data variables.product.prodname_copilot_short %} with more complete information. + +{% endvscode %} From 172c5efe862d7c48563935e5effb31800e49cd6d Mon Sep 17 00:00:00 2001 From: Siara <108543037+SiaraMist@users.noreply.github.com> Date: Thu, 6 Feb 2025 08:47:42 -0800 Subject: [PATCH 08/11] Agentic mode for Copilot Edits (VS Code) [Public Preview] (#54231) --- .../github-copilot-features.md | 6 ++++++ ...ing-github-copilot-questions-in-your-ide.md | 18 +++++++++++++++--- data/reusables/copilot/about-copilot-edits.md | 4 ++++ .../copilot/agent-mode-public-preview-note.md | 1 + 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 data/reusables/copilot/about-copilot-edits.md create mode 100644 data/reusables/copilot/agent-mode-public-preview-note.md diff --git a/content/copilot/about-github-copilot/github-copilot-features.md b/content/copilot/about-github-copilot/github-copilot-features.md index 5ab3c1f19656..dead26b5ed2a 100644 --- a/content/copilot/about-github-copilot/github-copilot-features.md +++ b/content/copilot/about-github-copilot/github-copilot-features.md @@ -54,6 +54,12 @@ Bringing the power of industry leading large and small language models to users AI-generated code review suggestions to help you write better code. For more information, see [AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review). +### {% data variables.product.prodname_copilot_edits_vscode_short %} + +{% data variables.product.prodname_copilot_edits_vscode_short %} is available in {% data variables.product.prodname_vscode %}. {% data reusables.copilot.about-copilot-edits %} + +For more information, see [{% data variables.product.prodname_copilot_edits_vscode_short %}](https://code.visualstudio.com/docs/copilot/copilot-edits) in the {% data variables.product.prodname_vscode %} documentation. + ### {% data variables.product.prodname_copilot_short %} knowledge bases _({% data variables.product.prodname_copilot_enterprise_short %} only)_ Create and manage collections of documentation to use as context for chatting with {% data variables.product.prodname_copilot_short %}. When you ask a question in {% data variables.product.prodname_copilot_chat_dotcom_short %} or in {% data variables.product.prodname_vscode_shortname %}, you can specify a knowledge base as the context for your question. For more information, see [AUTOTITLE](/copilot/customizing-copilot/managing-copilot-knowledge-bases). diff --git a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md index 6f2be4538429..2e34f1237825 100644 --- a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md +++ b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide.md @@ -123,16 +123,28 @@ See [inline chat](https://code.visualstudio.com/docs/copilot/copilot-chat#_inlin ## {% data variables.product.prodname_copilot_edits_vscode_short %} -Use {% data variables.product.prodname_copilot_edits_vscode_short %} to make changes across multiple files directly from a single {% data variables.product.prodname_copilot_chat_short %} prompt. +{% data reusables.copilot.about-copilot-edits %} -1. Enable {% data variables.product.prodname_copilot_edits_vscode_short %} in the {% data variables.product.prodname_copilot_extension_short %} settings. -1. Start an edit session by selecting **Open {% data variables.product.prodname_copilot_edits_vscode_short %}** from the {% data variables.product.prodname_copilot_chat_short %} menu. +### Using edit mode + +1. To start an edit session, select **Open {% data variables.product.prodname_copilot_edits_vscode_short %}** from the {% data variables.product.prodname_copilot_chat_short %} menu. 1. Optionally, add relevant files to the _working set_ to indicate to {% data variables.product.prodname_copilot %} which files you want to work on. 1. Submit a prompt. In response to your prompt, {% data variables.product.prodname_copilot_edits_vscode_short %} determines which files in your _working set_ to change and adds a short description of the change. 1. Review the changes and **Apply** or **Discard** the edits for each file. For more detailed instructions, see [{% data variables.product.prodname_copilot_edits_vscode_short %}](https://code.visualstudio.com/docs/copilot/copilot-edits) in the {% data variables.product.prodname_vscode %} documentation. +### Using agent mode + +{% data reusables.copilot.agent-mode-public-preview-note %} + +1. To start an edit session, select **Open {% data variables.product.prodname_copilot_edits_vscode_short %}** from the {% data variables.product.prodname_copilot_chat_short %} menu. +1. Select **Agent** from the mode dropdown menu. +1. Submit a prompt. In response to your prompt, {% data variables.product.prodname_copilot_short %} streams the edits in the editor, updates the working set, and if necessary, suggests terminal commands to run. +1. Review the changes. If {% data variables.product.prodname_copilot_short %} suggested terminal commands, confirm whether or not {% data variables.product.prodname_copilot_short %} can run them. In response, {% data variables.product.prodname_copilot_short %} iterates and performs additional actions to complete the task in your original prompt. + +For more information, see [{% data variables.product.prodname_copilot_edits_vscode_short %}](https://aka.ms/vscode-copilot-agent) in the {% data variables.product.prodname_vscode %} documentation. + ## Sharing feedback To indicate whether a response was helpful, use the thumbs up and thumbs down icons that appear next to the response. diff --git a/data/reusables/copilot/about-copilot-edits.md b/data/reusables/copilot/about-copilot-edits.md new file mode 100644 index 000000000000..d45e1a33886c --- /dev/null +++ b/data/reusables/copilot/about-copilot-edits.md @@ -0,0 +1,4 @@ +Use {% data variables.product.prodname_copilot_edits_vscode_short %} to make changes across multiple files directly from a single {% data variables.product.prodname_copilot_chat_short %} prompt. {% data variables.product.prodname_copilot_edits_vscode_short %} has the following modes: + +* **Edit mode**: Use edit mode when you want more granular control over the edits that {% data variables.product.prodname_copilot_short %} proposes. In edit mode, you choose which files {% data variables.product.prodname_copilot_short %} can make changes to, provide context to {% data variables.product.prodname_copilot_short %} with each iteration, and decide whether or not to accept the suggested edits after each turn. +* **Agent mode** (public preview): Use agent mode when you have a specific task in mind and want to enable {% data variables.product.prodname_copilot_short %} to autonomously edit your code. In agent mode, {% data variables.product.prodname_copilot_short %} determines which files to make changes to, offers code changes and terminal commands to complete the task, and iterates to remediate issues until the original task is complete. diff --git a/data/reusables/copilot/agent-mode-public-preview-note.md b/data/reusables/copilot/agent-mode-public-preview-note.md new file mode 100644 index 000000000000..cac543ba2157 --- /dev/null +++ b/data/reusables/copilot/agent-mode-public-preview-note.md @@ -0,0 +1 @@ +> [!NOTE] Agent mode is currently available to [VS Code Insiders](https://code.visualstudio.com/insiders) as a {% data variables.release-phases.public_preview %} and is subject to change. See [{% data variables.product.prodname_copilot_edits_vscode_short %}](https://code.visualstudio.com/docs/copilot/copilot-edits#use-agent-mode-preview) in the {% data variables.product.prodname_vscode %} documentation. From 521636dd7450f6564865b72f7628225d7db48c40 Mon Sep 17 00:00:00 2001 From: Hector Alfaro Date: Thu, 6 Feb 2025 11:59:45 -0500 Subject: [PATCH 09/11] Add Codespaces and local options to content changes table (#54285) --- .github/workflows/comment-code-changes.yml | 2 +- .../comment-content-changes-table.yml | 32 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/.github/workflows/comment-code-changes.yml b/.github/workflows/comment-code-changes.yml index addac2ed78e0..49d5a4b7ea0b 100644 --- a/.github/workflows/comment-code-changes.yml +++ b/.github/workflows/comment-code-changes.yml @@ -62,7 +62,7 @@ jobs: 1. [Set up a local development environment](https://github.com/github/docs/blob/main/contributing/development.md). 1. [Spin up a codespace to review](https://github.com/github/docs-engineering/blob/main/docs/team-practices/use-a-codespace-to-review.md). - 1. Message on Slack in `#docs-engineering` for a staging server. + 1. Message \`#docs-engineering\` on Slack for a staging server. Thank you for your contribution!" fi diff --git a/.github/workflows/comment-content-changes-table.yml b/.github/workflows/comment-content-changes-table.yml index e558af9c5c24..f2e582b29a53 100644 --- a/.github/workflows/comment-content-changes-table.yml +++ b/.github/workflows/comment-content-changes-table.yml @@ -81,8 +81,8 @@ jobs: comment-author: 'github-actions[bot]' body-includes: '' - - name: Update comment - if: ${{ steps.changes.outputs.changesTable != '' }} + - name: Update comment on docs-internal + if: ${{github.repository == 'github/docs-internal' && steps.changes.outputs.changesTable != '' }} uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 with: comment-id: ${{ steps.findComment.outputs.comment-id }} @@ -94,6 +94,34 @@ jobs: The table contains an overview of files in the `content` directory that have been changed in this pull request. It's provided to make it easy to review your changes on the review server. Please note that changes to the `data` directory will not show up in this table. + :bangbang: You can also preview changes [using Codespaces](https://github.com/github/docs-engineering/blob/main/docs/team-practices/use-a-codespace-to-review.md) or by [spinning up a local environment](https://docs.github.com/en/contributing/setting-up-your-environment-to-work-on-github-docs/creating-a-local-environment). Please continue to [let us know](https://github.com/github/docs-team/discussions/4889) if you have trouble with the review server and use one of those options to preview your changes. + + --- + + ### Content directory changes + _You may find it useful to copy this table into the pull request summary. There you can edit it to share links to important articles or changes and to give a high-level overview of how the changes in your pull request support the overall goals of the pull request._ + ${{ steps.changes.outputs.changesTable }} + + --- + Key: **fpt**: Free, Pro, Team; **ghec**: GitHub Enterprise Cloud; **ghes**: GitHub Enterprise Server + _This table is posted from the [${{ github.workflow }}](https://github.com/${{ github.repository }}/blob/${{ github.sha }}/.github/workflows/comment-content-changes-table.yml) workflow._ + edit-mode: replace + + - name: Update comment on docs public + if: ${{github.repository == 'github/docs' && steps.changes.outputs.changesTable != '' }} + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 + with: + comment-id: ${{ steps.findComment.outputs.comment-id }} + issue-number: ${{ github.event.pull_request.number || inputs.PR_NUMBER }} + body: | + + ## 👓 Previews for changed content + **This comment is 🤖 automatically generated and will be overwritten every time changes are committed to this branch.** + + The table contains an overview of files in the `content` directory that have been changed in this pull request. It's provided to make it easy to review your changes on the review server. Please note that changes to the `data` directory will not show up in this table. + + :bangbang: You can also preview changes [using Codespaces](https://docs.github.com/en/contributing/setting-up-your-environment-to-work-on-github-docs/working-on-github-docs-in-a-codespace) or by [spinning up a local environment](https://docs.github.com/en/contributing/setting-up-your-environment-to-work-on-github-docs/creating-a-local-environment). If you have trouble with the review server, use one of those options to preview your changes. + --- ### Content directory changes From 124541415d923087be3fb53c40d3c3df3213d748 Mon Sep 17 00:00:00 2001 From: Rachael Sewell Date: Thu, 6 Feb 2025 09:32:03 -0800 Subject: [PATCH 10/11] moda secret env (#54288) --- config/moda/deployment.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/moda/deployment.yaml b/config/moda/deployment.yaml index b7e749477d6d..d5425a1c8ccf 100644 --- a/config/moda/deployment.yaml +++ b/config/moda/deployment.yaml @@ -10,6 +10,7 @@ environments: - name: staging-cedar require_pipeline: false notify_still_locked: true # Notify last person to lock this after an hour + secret_environment: production cluster_selector: profile: general region: iad @@ -17,6 +18,7 @@ environments: - name: staging-pine require_pipeline: false notify_still_locked: true # Notify last person to lock this after an hour + secret_environment: production cluster_selector: profile: general region: iad @@ -24,6 +26,7 @@ environments: - name: staging-spruce require_pipeline: false notify_still_locked: true # Notify last person to lock this after an hour + secret_environment: production cluster_selector: profile: general region: iad From dcc3a461fdce62773d0822197ab4dd7234bffb0c Mon Sep 17 00:00:00 2001 From: Joe Clark <31087804+jc-clark@users.noreply.github.com> Date: Thu, 6 Feb 2025 10:13:22 -0800 Subject: [PATCH 11/11] Add discussion post into "Using your GitHub profile to enhance your resume" (#54153) Co-authored-by: Laura Coursen --- .../using-your-github-profile-to-enhance-your-resume.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/using-your-github-profile-to-enhance-your-resume.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/using-your-github-profile-to-enhance-your-resume.md index d0463b3f56f6..1358d388158e 100644 --- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/using-your-github-profile-to-enhance-your-resume.md +++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/using-your-github-profile-to-enhance-your-resume.md @@ -92,6 +92,10 @@ If your project has any dependencies, you can showcase your understanding of sec You can automate this process with {% data variables.product.prodname_dependabot %}, which generates pull requests that update your project to new versions as they become available. See [AUTOTITLE](/code-security/getting-started/dependabot-quickstart-guide). +## Step 5: Share your results + +Share your updated profile and get inspiration from others in our [Community discussion](https://github.com/orgs/community/discussions/150827). + ## Extra credit: Maintaining your projects Your profile is now ready to be included on your resume! The changes you made today will have a big impact on your job search and will make your {% data variables.product.github %} profile stand out to hiring managers.