diff --git a/content/copilot/concepts/agents/copilot-cli/about-cli-plugins.md b/content/copilot/concepts/agents/copilot-cli/about-cli-plugins.md
new file mode 100644
index 000000000000..78ebd4a4227b
--- /dev/null
+++ b/content/copilot/concepts/agents/copilot-cli/about-cli-plugins.md
@@ -0,0 +1,75 @@
+---
+title: About plugins for {% data variables.copilot.copilot_cli %}
+shortTitle: About CLI plugins
+allowTitleToDifferFromFilename: true
+intro: 'Plugins are installable packages that extend {% data variables.copilot.copilot_cli %} with reusable agents, skills, hooks, and integrations.'
+product: '{% data reusables.gated-features.copilot-cli %}'
+versions:
+ feature: copilot
+topics:
+ - Copilot
+contentType: concepts
+category:
+ - Learn about Copilot
+---
+
+Plugins provide a way to distribute custom CLI functionality. You can use a plugin to add a preconfigured set of capabilities to {% data variables.copilot.copilot_cli_short %}.
+
+## What is a plugin?
+
+* A distributable package that extends {% data variables.copilot.copilot_cli_short %}'s functionality.
+* A bundle of components in a single installable unit.
+
+## What plugins contain
+
+A plugin can contain some or all of the following components:
+
+* **Custom agents** — Specialized AI assistants (`*.agent.md` files in `agents/`)
+* **Skills** — Discrete callable capabilities (skills subdirectories in `skills/`, containing a `SKILL.md` file)
+* **Hooks** — Event handlers that intercept agent behavior (a `hooks.json` file in the plugin root, or in `hooks/`)
+* **MCP server configurations** — Model Context Protocol integrations (a `.mcp.json` file in the plugin root, or an `mcp.json` file in `.github/`)
+* **LSP server configurations** — Language Server Protocol integrations (an `lsp.json` file in the plugin root, or in `.github/`)
+
+## Why use plugins?
+
+Plugins provide the following benefits:
+
+* Reusability across projects
+* Team standardization of CLI configuration
+* Share domain expertise (for example, by providing the skills of a Rails expert, or a Kubernetes expert)
+* Encapsulate complex MCP server setups
+
+## Where can I get plugins?
+
+You can install plugins from:
+
+* A marketplace
+* A repository
+* A local path
+
+A marketplace is a location where developers can publish, discover, install, and manage plugins. It's a bit like an app store—but for plugins.
+
+Examples of marketplaces include:
+
+* [copilot-plugins](https://github.com/github/copilot-plugins) (added by default)
+* [awesome-copilot](https://github.com/github/awesome-copilot) (added by default)
+* [claude-code-plugins](https://github.com/anthropics/claude-code)
+* [claudeforge-marketplace](https://github.com/claudeforge/marketplace)
+
+For more about adding marketplaces and installing plugins from them, see [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/plugins-finding-installing).
+
+## Plugins compared with manual configuration
+
+Any functionality that you could add with a plugin, you could also add by configuring {% data variables.copilot.copilot_cli_short %} manually—for example, by adding custom agent profiles or MCP servers. However, plugins provide several advantages over manual configuration:
+
+| Feature | Manual configuration in a repository | Plugin |
+|------------|-----------------------------|-----------------|
+| Scope | Single repository | Any project |
+| Sharing | Manual copy/paste | `/plugin install` command |
+| Versioning | Git history | Marketplace versions |
+| Discovery | Searching repositories | Marketplace browsing |
+
+## Further reading
+
+* [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/plugins-creating)
+* [AUTOTITLE](/copilot/reference/cli-plugin-reference)
diff --git a/content/copilot/concepts/agents/copilot-cli/index.md b/content/copilot/concepts/agents/copilot-cli/index.md
index 48afe707f33c..22c10873386c 100644
--- a/content/copilot/concepts/agents/copilot-cli/index.md
+++ b/content/copilot/concepts/agents/copilot-cli/index.md
@@ -9,6 +9,7 @@ topics:
- Copilot
children:
- /about-copilot-cli
+ - /about-cli-plugins
- /comparing-cli-features
contentType: concepts
---
diff --git a/content/copilot/concepts/completions/index.md b/content/copilot/concepts/completions/index.md
index aab42a398402..adfb2c90e856 100644
--- a/content/copilot/concepts/completions/index.md
+++ b/content/copilot/concepts/completions/index.md
@@ -1,15 +1,15 @@
---
title: Completions for GitHub Copilot
shortTitle: Completions
-intro: 'Learn how {% data variables.product.prodname_copilot_short %} can provide inline suggestions and PR descriptions.'
+intro: 'Learn how {% data variables.product.prodname_copilot_short %} can provide inline suggestions.'
versions:
feature: copilot
topics:
- Copilot
children:
- /code-suggestions
- - /text-completion
- /code-referencing
contentType: concepts
+redirect_from:
+ - /copilot/concepts/completions/text-completion
---
-
diff --git a/content/copilot/concepts/completions/text-completion.md b/content/copilot/concepts/completions/text-completion.md
deleted file mode 100644
index a8c12c280da9..000000000000
--- a/content/copilot/concepts/completions/text-completion.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-title: GitHub Copilot text completion
-shortTitle: Text completion
-allowTitleToDifferFromFilename: true
-intro: 'Learn about {% data variables.copilot.copilot_autocomplete_pr %}.'
-versions:
- feature: copilot
-permissions: 'Members of an enterprise with a subscription to [{% data variables.copilot.copilot_enterprise %}](/copilot/github-copilot-enterprise/overview/about-github-copilot-enterprise)'
-topics:
- - Copilot
-contentType: concepts
-category:
- - Learn about Copilot
----
-
-{% data reusables.copilot.text-completion-preview %}
-
-## About {% data variables.copilot.copilot_autocomplete_pr %}
-
-With {% data variables.copilot.copilot_autocomplete_pr %}, you can use AI-generated autocompletions to help you write pull request descriptions quickly and accurately. Accurate descriptions help reviewers understand the changes you're proposing, and help you communicate the purpose of your pull request more effectively.
-
-When you are creating a new pull request, {% data variables.copilot.copilot_autocomplete_pr %} will scan through the pull request and provide suggestions as you write, based on the context of the pull request.
-
-## Next steps
-
-* [AUTOTITLE](/copilot/how-tos/completions/using-copilot-text-completion)
diff --git a/content/copilot/get-started/features.md b/content/copilot/get-started/features.md
index 49afa8b00b38..07c35631cc58 100644
--- a/content/copilot/get-started/features.md
+++ b/content/copilot/get-started/features.md
@@ -51,10 +51,6 @@ AI-generated code review suggestions to help you write better code. See [AUTOTIT
AI-generated summaries of the changes that were made in a pull request, which files they impact, and what a reviewer should focus on when they conduct their review. See [AUTOTITLE](/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot).
-### {% data variables.copilot.copilot_autocomplete_pr %} ({% data variables.release-phases.public_preview %})
-
-AI-generated text completion to help you write pull request descriptions quickly and accurately. See [AUTOTITLE](/copilot/using-github-copilot/using-copilot-text-completion).
-
### {% data variables.copilot.copilot_edits_short %}
{% data variables.copilot.copilot_edits_short %} is available in {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and JetBrains IDEs. {% data reusables.copilot.copilot-edits.about-copilot-edits %}
diff --git a/content/copilot/how-tos/copilot-cli/cli-getting-started.md b/content/copilot/how-tos/copilot-cli/cli-getting-started.md
index 14915024da74..0c2d95c519be 100644
--- a/content/copilot/how-tos/copilot-cli/cli-getting-started.md
+++ b/content/copilot/how-tos/copilot-cli/cli-getting-started.md
@@ -77,6 +77,7 @@ Use one of these commands:
| Ctrl+L | Clear the screen |
| `@` | Mention files to include in context |
| `/` | Show slash commands |
+| `?` | Show tabbed help |
| ↑ and ↓ | Navigate the command history |
For a full list of shortcuts and available commands, enter:
diff --git a/content/copilot/how-tos/copilot-cli/customize-copilot/index.md b/content/copilot/how-tos/copilot-cli/customize-copilot/index.md
index ea8e5d926883..afbb56ff5f98 100644
--- a/content/copilot/how-tos/copilot-cli/customize-copilot/index.md
+++ b/content/copilot/how-tos/copilot-cli/customize-copilot/index.md
@@ -11,4 +11,7 @@ children:
- /use-hooks
- /create-skills
- /create-custom-agents-for-cli
+ - /plugins-finding-installing
+ - /plugins-creating
+ - /plugins-marketplace
---
diff --git a/content/copilot/how-tos/copilot-cli/customize-copilot/plugins-creating.md b/content/copilot/how-tos/copilot-cli/customize-copilot/plugins-creating.md
new file mode 100644
index 000000000000..dffcd8615b99
--- /dev/null
+++ b/content/copilot/how-tos/copilot-cli/customize-copilot/plugins-creating.md
@@ -0,0 +1,140 @@
+---
+title: Creating a plugin for {% data variables.copilot.copilot_cli %}
+shortTitle: 'Plugins: Create a plugin'
+allowTitleToDifferFromFilename: true
+intro: 'Create a plugin to share customizations in an easy-to-install package.'
+versions:
+ feature: copilot
+topics:
+ - Copilot
+category:
+ - Configure Copilot
+ - Author and optimize with Copilot
+contentType: how-tos
+---
+
+## Introduction
+
+Plugins are packages that extend the functionality of {% data variables.copilot.copilot_cli_short %}. See [AUTOTITLE](/copilot/concepts/agents/copilot-cli/about-cli-plugins).
+
+{% data reusables.copilot.cli-help-note %}
+
+## Plugin structure
+
+A plugin consists of a directory with a specific structure. At minimum, it must contain a `plugin.json` manifest file at the root of the directory. It can also contain any combination of agents, skills, hooks, and MCP server configurations.
+
+### Example plugin structure
+
+```text
+my-plugin/
+├── plugin.json # Required manifest
+├── agents/ # Custom agents (optional)
+│ └── helper.agent.md
+├── skills/ # Skills (optional)
+│ └── deploy/
+│ └── SKILL.md
+├── hooks.json # Hook configuration (optional)
+└── .mcp.json # MCP server config (optional)
+```
+
+## Creating a plugin
+
+1. Create a directory for your plugin.
+1. Add a `plugin.json` manifest file to the root of the directory.
+
+ **Example `plugin.json` file**
+
+ {% data reusables.copilot.cli-example-plugin-file %}
+
+ For details of the full set of fields you can include in this file, see [AUTOTITLE](/copilot/reference/cli-plugin-reference#pluginjson).
+
+1. Add some components to your plugin by creating the appropriate files and directories for agents, skills, hooks, and MCP server configurations.
+
+ For example:
+
+ 1. Add an agent by creating a `NAME.agent.md` file in an `agents` subdirectory.
+
+ ```markdown copy
+ ---
+ name: my-agent
+ description: Helps with specific tasks
+ tools: ["bash", "edit", "view"]
+ ---
+
+ You are a specialized assistant that...
+ ```
+
+ 1. Add a skill by creating a `skills/NAME` subdirectory of your plugin directory, where `NAME` is the name of your skill. Then, within this subdirectory, create a `SKILL.md` file that defines the skill.
+
+ For example, to create a "deploy" skill, create `skills/deploy/SKILL.md`:
+
+ ```markdown copy
+ ---
+ name: deploy
+ description: Deploy the current project to...
+ ---
+
+ Instructions for the skill...
+ ```
+
+1. Install your plugin locally, so that you can test it as you develop it.
+
+ For example, where `./my-plugin` is the path to your plugin directory, enter:
+
+ ```shell copy
+ copilot plugin install ./my-plugin
+ ```
+
+1. Verify that the plugin loaded successfully by viewing your list of installed plugins:
+
+ ```shell copy
+ copilot plugin list
+ ```
+
+ Or you can start a new interactive session and enter:
+
+ ```copilot copy
+ /plugin list
+ ```
+
+1. Verify that the agents, skills, hooks, and MCP server configurations you defined are loaded correctly.
+
+ For example, in an interactive session, to check that custom agents defined in the plugin were loaded, enter:
+
+ ```copilot copy
+ /agent
+ ```
+
+ To check that skills defined in the plugin were loaded, enter:
+
+ ```copilot copy
+ /skills list
+ ```
+
+1. Use the functionality provided by your plugin's components to verify that each component works as expected.
+1. Iterate on your plugin development, as required.
+
+ > [!IMPORTANT]
+ > When you install a plugin its components are cached and the CLI reads from the cache for subsequent sessions. To pick up changes made to a local plugin install it again:
+ >
+ > ```shell copy
+ > copilot plugin install ./my-plugin
+ > ```
+
+1. After you have finished testing, you can uninstall the local version of your plugin by entering:
+
+ ```shell copy
+ copilot plugin uninstall NAME
+ ```
+
+ > [!NOTE]
+ > To uninstall a plugin, use the name of the plugin as specified in the `name` field of the plugin's `plugin.json` manifest file, not the path to the plugin's directory.
+
+## Distributing your plugin
+
+To distribute your plugin, you can add it to a marketplace. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/plugins-marketplace).
+
+## Further reading
+
+* [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/plugins-finding-installing)
+* [AUTOTITLE](/copilot/reference/cli-plugin-reference)
diff --git a/content/copilot/how-tos/copilot-cli/customize-copilot/plugins-finding-installing.md b/content/copilot/how-tos/copilot-cli/customize-copilot/plugins-finding-installing.md
new file mode 100644
index 000000000000..80c5ceae3074
--- /dev/null
+++ b/content/copilot/how-tos/copilot-cli/customize-copilot/plugins-finding-installing.md
@@ -0,0 +1,165 @@
+---
+title: Finding and installing plugins for {% data variables.copilot.copilot_cli %}
+shortTitle: 'Plugins: Find and install'
+allowTitleToDifferFromFilename: true
+intro: 'Extend {% data variables.product.prodname_copilot_short %}''s functionality by installing plugins created by the community or by your team.'
+versions:
+ feature: copilot
+topics:
+ - Copilot
+category:
+ - Configure Copilot
+ - Author and optimize with Copilot
+contentType: how-tos
+---
+
+## Introduction
+
+Plugins are packages that extend the functionality of {% data variables.copilot.copilot_cli_short %}. You can install a plugin from a marketplace that you have registered with the CLI, from a {% data variables.product.github %} repository, or from a local path.
+
+For more information, see [AUTOTITLE](/copilot/concepts/agents/copilot-cli/about-cli-plugins).
+
+{% data reusables.copilot.cli-help-note %}
+
+## Finding plugins
+
+Plugins are collected together in marketplaces. A marketplace is a registry of plugins that you can browse and install from. You can add a marketplace to your CLI configuration, which allows you to use the CLI to browse and install plugins from that marketplace—see [Adding plugin marketplaces](#adding-plugin-marketplaces). {% data variables.product.prodname_copilot_short %} comes with two marketplaces already registered by default: `copilot-plugins` and `awesome-copilot`.
+
+Alternatively, you can search for plugin marketplaces online and then add a plugin directly from a repository.
+
+To use the CLI to browse the plugins in one of your registered marketplaces:
+
+1. **Check which marketplaces are currently registered.**
+
+ In the terminal, list the available marketplaces by entering:
+
+ ```shell copy
+ copilot plugin marketplace list
+ ```
+
+ Alternatively, in an interactive session, enter:
+
+ ```copilot copy
+ /plugin marketplace list
+ ```
+
+1. **Browse the plugins in a registered marketplace.**
+
+ From the list of registered marketplaces, copy the name of the marketplace you want to browse—for example, `awesome-copilot`—then enter the following command, replacing `MARKETPLACE-NAME`:
+
+ ```shell copy
+ copilot plugin marketplace browse MARKETPLACE-NAME
+
+ ```
+
+## Installing plugins
+
+Typically, you'll install a plugin from one of your registered marketplaces. However, you can also install a plugin directly from a {% data variables.product.github %} repository, or from a local path.
+
+For information on how to register additional marketplaces, see [Adding and removing plugin marketplaces](#adding-and-removing-plugin-marketplaces).
+
+### Install from a registered marketplace
+
+```shell copy
+copilot plugin install PLUGIN-NAME@MARKETPLACE-NAME
+```
+
+For example, to install the `database-data-management` plugin from the `awesome-copilot` marketplace enter:
+
+```shell copy
+copilot plugin install database-data-management@awesome-copilot
+```
+
+Alternatively, in an interactive session, enter:
+
+```copilot copy
+/plugin install PLUGIN-NAME@MARKETPLACE-NAME
+```
+
+### Install from {% data variables.product.github %} directly
+
+You can install a plugin directly from a {% data variables.product.github %} repository, without first adding a marketplace to your list of registered marketplaces.
+
+```shell copy
+copilot plugin install OWNER/REPO:PATH/TO/PLUGIN
+```
+
+For example,
+
+```shell copy
+copilot plugin install github/awesome-copilot:plugins/security-best-practices
+```
+
+### Install from a local path
+
+```shell copy
+copilot plugin install ./PATH/TO/PLUGIN
+```
+
+## Managing installed plugins
+
+```bash
+copilot plugin list # View installed plugins
+copilot plugin update PLUGIN-NAME # Update plugin to latest version
+copilot plugin uninstall PLUGIN-NAME # Remove plugin completely
+```
+
+## Where plugins are stored
+
+Plugins installed from a marketplace are stored under: `~/.copilot/installed-plugins/MARKETPLACE/PLUGIN-NAME/`. Plugins installed directly (for example, from a local path) are stored under: `~/.copilot/installed-plugins/_direct/PLUGIN-NAME/`.
+
+## Adding plugin marketplaces
+
+To add a marketplace to the list of registered marketplaces, enter the following command in the terminal:
+
+```shell copy
+copilot plugin marketplace add OWNER/REPO
+```
+
+Where OWNER/REPO identifies a repository on {% data variables.product.prodname_dotcom_the_website %} that has been configured as a CLI plugin marketplace.
+
+For example to add the `claude-code-plugins` marketplace, hosted at https://github.com/anthropics/claude-code, enter:
+
+```shell copy
+copilot plugin marketplace add anthropics/claude-code
+```
+
+Alternatively, in an interactive session, enter:
+
+```copilot copy
+/plugin marketplace add OWNER/REPO
+```
+
+If a marketplace is located on the local file system, instead of on {% data variables.product.github %}, use the path to the marketplace directory instead of OWNER/REPO. For example:
+
+```shell copy
+copilot plugin marketplace add /PATH/TO/MARKETPLACE-DIRECTORY
+```
+
+If a marketplace is located in a Git repository that is not hosted on {% data variables.product.github %}, use the URL of the Git repository. For example:
+
+```shell copy
+copilot plugin marketplace add https://gitlab.example.com/team/plugins.git
+```
+
+## Removing plugin marketplaces
+
+To remove a marketplace from the CLI enter:
+
+```shell copy
+copilot plugin marketplace remove MARKETPLACE-NAME
+```
+
+Or, in an interactive session:
+
+```copilot copy
+/plugin marketplace remove MARKETPLACE-NAME
+```
+
+> [!NOTE]
+> When adding a marketplace you reference the marketplace using the OWNER/REPO of the {% data variables.product.github %} repository that has been configured as a marketplace. When removing a marketplace, however, you reference the name of the marketplace as it appears in your list of registered marketplaces.
+
+## Further reading
+
+* [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/plugins-creating)
+* [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/plugins-marketplace)
diff --git a/content/copilot/how-tos/copilot-cli/customize-copilot/plugins-marketplace.md b/content/copilot/how-tos/copilot-cli/customize-copilot/plugins-marketplace.md
new file mode 100644
index 000000000000..6b4a3df537f1
--- /dev/null
+++ b/content/copilot/how-tos/copilot-cli/customize-copilot/plugins-marketplace.md
@@ -0,0 +1,65 @@
+---
+title: Creating a plugin marketplace for {% data variables.copilot.copilot_cli %}
+shortTitle: 'Plugins: Create a marketplace'
+allowTitleToDifferFromFilename: true
+intro: 'You can make CLI plugins that you''ve created easy to install by adding them to a marketplace.'
+versions:
+ feature: copilot
+topics:
+ - Copilot
+category:
+ - Configure Copilot
+ - Author and optimize with Copilot
+contentType: how-tos
+---
+
+## Introduction
+
+Plugin marketplaces are registries of plugins for {% data variables.copilot.copilot_cli_short %}. They can be located on {% data variables.product.prodname_dotcom_the_website %}, in any other online Git hosting service, or on your local or shared file system. By creating a marketplace and adding your plugins to it, you can make it easy for other users to find and install your plugins.
+
+{% data reusables.copilot.cli-help-note %}
+
+## Prerequisite
+
+You have created one or more plugins that you want to share. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/plugins-creating).
+
+## Creating a plugin marketplace
+
+1. Create a `marketplace.json` file that provides metadata about your marketplace and lists the plugins that are available in the marketplace.
+
+ > [!NOTE]
+ > The `marketplace.json` file is the only required component of a plugin marketplace. Adding it to a repository allows {% data variables.copilot.copilot_cli_short %} to recognize the repository as a plugin marketplace, and provides an easy way for users to install plugins.
+
+ **Example `marketplace.json` file**
+
+ {% data reusables.copilot.cli-example-marketplace-file %}
+
+ Online examples:
+
+ * [marketplace.json](https://github.com/github/copilot-plugins/blob/main/.github/plugin/marketplace.json) in the [github/copilot-plugins](https://github.com/github/copilot-plugins) repository.
+ * [marketplace.json](https://github.com/github/awesome-copilot/blob/main/.github/plugin/marketplace.json) in the [github/awesome-copilot](https://github.com/github/awesome-copilot) repository.
+
+ The top-level `plugins` field is an array of plugin objects, each containing metadata about a plugin, including its name, description, version, and source.
+
+ {% data reusables.copilot.cli-path-to-plugins %}
+
+ For details of the full set of fields you can include in this file, see [AUTOTITLE](/copilot/reference/cli-plugin-reference#marketplacejson).
+
+1. Add the `marketplace.json` file to the `.github/plugin` directory of a repository.
+
+ {% data reusables.copilot.cli-claude-plugin-dir %}
+
+1. For each plugin defined in the `marketplace.json` file, add the relevant plugin directory to the appropriate location in the repository.
+
+ For example, if your `marketplace.json` file includes a plugin with `"source": "./plugins/frontend-design"`, add the `frontend-design` plugin directory to the `plugins` directory at the root of your repository.
+
+1. Share the repository with your intended users, and provide them with instructions to add the marketplace to {% data variables.copilot.copilot_cli_short %}. For example, if your repository is hosted on {% data variables.product.github %} in the `octo-org/octo-repo` repository, instruct users to enter:
+
+ ```shell copy
+ copilot plugin marketplace add octo-org/octo-repo
+ ```
+
+## Further reading
+
+* [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/plugins-finding-installing)
+* [AUTOTITLE](/copilot/reference/cli-plugin-reference)
diff --git a/content/copilot/how-tos/get-code-suggestions/index.md b/content/copilot/how-tos/get-code-suggestions/index.md
index b2980570564d..ddd1471630e8 100644
--- a/content/copilot/how-tos/get-code-suggestions/index.md
+++ b/content/copilot/how-tos/get-code-suggestions/index.md
@@ -8,10 +8,12 @@ topics:
- Copilot
children:
- /get-ide-code-suggestions
- - /write-pr-descriptions
- /find-matching-code
redirect_from:
- /copilot/how-tos/completions
+ - /copilot/using-github-copilot/using-copilot-text-completion
+ - /copilot/how-tos/completions/using-copilot-text-completion
+ - /copilot/how-tos/completions/write-pr-descriptions
+ - /copilot/how-tos/get-code-suggestions/write-pr-descriptions
contentType: how-tos
---
-
diff --git a/content/copilot/how-tos/get-code-suggestions/write-pr-descriptions.md b/content/copilot/how-tos/get-code-suggestions/write-pr-descriptions.md
deleted file mode 100644
index deef41b786f4..000000000000
--- a/content/copilot/how-tos/get-code-suggestions/write-pr-descriptions.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Writing pull request descriptions with GitHub Copilot text completion
-shortTitle: Write PR descriptions
-allowTitleToDifferFromFilename: true
-intro: 'Write pull request descriptions more quickly and accurately with {% data variables.copilot.copilot_autocomplete_pr %}.'
-versions:
- feature: copilot
-permissions: 'Members of an enterprise with a subscription to [{% data variables.copilot.copilot_enterprise %}](/copilot/github-copilot-enterprise/overview/about-github-copilot-enterprise)'
-topics:
- - Copilot
-redirect_from:
- - /copilot/using-github-copilot/using-copilot-text-completion
- - /copilot/how-tos/completions/using-copilot-text-completion
- - /copilot/how-tos/completions/write-pr-descriptions
-contentType: how-tos
-category:
- - Author and optimize with Copilot
----
-
-{% data reusables.copilot.text-completion-preview %}
-
-## Using {% data variables.copilot.copilot_autocomplete_pr %}
-
-You can use {% data variables.copilot.copilot_autocomplete_pr %} in the description of a new pull request you're creating.
-
-1. On {% data variables.product.github %}, create a pull request.
-1. In the description field, start typing your description.
-1. As you type, {% data variables.product.prodname_copilot_short %} will provide in-line suggestions based on the context of the pull request.
-1. Review the suggestions, which will be shown in grey.
- * To accept a suggestion, press `Tab`.
- * To ignore a suggestion, press `Esc` or continue typing. {% data variables.product.prodname_copilot_short %} will provide new suggestions as you type, based on the additional context.
-1. When you're happy with the description, click **Create pull request**.
-
-## Disabling or enabling {% data variables.copilot.copilot_autocomplete_pr %}
-
-You can disable or enable {% data variables.copilot.copilot_autocomplete_pr %} for your pull request descriptions. Your preference will be saved for future pull requests.
-
-1. On {% data variables.product.github %}, create a pull request.
-1. At the top of the description field, select {% octicon "copilot" aria-hidden="true" aria-label="copilot" %} then hover over **Autocomplete ({% data variables.release-phases.public_preview_caps %})**, and click **Disabled** or **Enabled**.
-
-## Further reading
-
-* [AUTOTITLE](/copilot/concepts/completions/text-completion)
diff --git a/content/copilot/reference/cli-command-reference.md b/content/copilot/reference/cli-command-reference.md
index 8d4e02431a0d..b820a0b39b3f 100644
--- a/content/copilot/reference/cli-command-reference.md
+++ b/content/copilot/reference/cli-command-reference.md
@@ -104,7 +104,7 @@ For a complete list of available slash commands enter `/help` in the CLI's inter
| `--add-dir PATH` | Add a directory to the allowed list for file access (can be used multiple times). |
| `--add-github-mcp-tool TOOL` | Add a tool to enable for the {% data variables.product.github %} MCP server, instead of the default CLI subset (can be used multiple times). Use `*` for all tools. |
| `--add-github-mcp-toolset TOOLSET` | Add a toolset to enable for the {% data variables.product.github %} MCP server, instead of the default CLI subset (can be used multiple times). Use `all` for all toolsets. |
-| `--additional-mcp-config JSON` | Additional MCP servers configuration as a JSON string or a file path (prefix with `@`) (can be used multiple times). Augments the configuration from `~/.copilot/mcp-config.json` for this session. |
+| `--additional-mcp-config JSON` | Add an MCP server for this session only. The server configuration can be supplied as a JSON string or a file path (prefix with `@`). Augments the configuration from `~/.copilot/mcp-config.json`. Overrides any installed MCP server configuration with the same name. |
| `--agent AGENT` | Specify a {% data variables.copilot.copilot_custom_agent_short %} to use. |
| `--allow-all` | Enable all permissions (equivalent to `--allow-all-tools --allow-all-paths --allow-all-urls`). |
| `--allow-all-paths` | Disable file path verification and allow access to any path. |
diff --git a/content/copilot/reference/cli-plugin-reference.md b/content/copilot/reference/cli-plugin-reference.md
new file mode 100644
index 000000000000..fb750d75e9af
--- /dev/null
+++ b/content/copilot/reference/cli-plugin-reference.md
@@ -0,0 +1,205 @@
+---
+title: GitHub Copilot CLI plugin reference
+shortTitle: CLI plugin reference
+intro: 'Find commands and configuration details for CLI plugins.'
+versions:
+ feature: copilot
+category:
+ - Author and optimize with Copilot
+topics:
+ - Copilot
+contentType: reference
+---
+
+{% data reusables.copilot.cli-help-note %}
+
+## CLI commands
+
+You can use the following commands in the terminal to manage plugins for {% data variables.copilot.copilot_cli_short %}.
+
+| Command | Description |
+|------------------------------------------------|-------------|
+| `copilot plugin install SPECIFICATION` | Install a plugin. See [Plugin specification for `install` command](#plugin-specification-for-install-command) below. |
+| `copilot plugin uninstall NAME` | Remove a plugin |
+| `copilot plugin list` | List installed plugins |
+| `copilot plugin update NAME` | Update a plugin |
+| `copilot plugin marketplace add SPECIFICATION` | Register a marketplace |
+| `copilot plugin marketplace list` | List registered marketplaces |
+| `copilot plugin marketplace browse NAME` | Browse marketplace plugins |
+| `copilot plugin marketplace remove NAME` | Unregister a marketplace |
+
+### Plugin specification for `install` command
+
+| Format | Example | Description |
+|---------------|---------------------------------|-------------|
+| Marketplace | `plugin@marketplace` | Plugin from a registered marketplace |
+| {% data variables.product.github %} | `OWNER/REPO` | Root of a {% data variables.product.github %} repository |
+| {% data variables.product.github %} subdir | `OWNER/REPO:PATH/TO/PLUGIN` | Subdirectory in a repository |
+| Git URL | `https://github.com/o/r.git` | Any Git URL |
+| Local path | `./my-plugin` or `/abs/path` | Local directory |
+
+## `plugin.json`
+
+All plugins consist of a plugin directory containing, at minimum, a manifest file named `plugin.json` located at the root of the plugin directory. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/plugins-creating).
+
+### Required field
+
+| Field | Type | Description |
+|---------|--------|-------------|
+| `name` | string | Kebab-case plugin name (letters, numbers, hyphens only). Max 64 chars. |
+
+### Optional metadata fields
+
+| Field | Type | Description |
+|--------------|-----------|-------------|
+| `description`| string | Brief description. Max 1024 chars. |
+| `version` | string | Semantic version (e.g., `1.0.0`). |
+| `author` | object | `name` (required), `email` (optional), `url` (optional). |
+| `homepage` | string | Plugin homepage URL. |
+| `repository` | string | Source repository URL. |
+| `license` | string | License identifier (e.g., `MIT`). |
+| `keywords` | string[] | Search keywords. |
+| `category` | string | Plugin category. |
+| `tags` | string[] | Additional tags. |
+
+### Component path fields
+
+These tell the CLI where to find your plugin's components. All are optional. The CLI uses default conventions if omitted.
+
+| Field | Type | Default | Description |
+|-------------|--------------------|------------|-------------|
+| `agents` | string \| string[] | `agents/` | Path(s) to agent directories (`.agent.md` files). |
+| `skills` | string \| string[] | `skills/` | Path(s) to skill directories (`SKILL.md` files). |
+| `commands` | string \| string[] | — | Path(s) to command directories. |
+| `hooks` | string \| object | — | Path to a hooks config file, or an inline hooks object. |
+| `mcpServers`| string \| object | — | Path to an MCP config file (e.g., `.mcp.json`), or inline server definitions. |
+| `lspServers`| string \| object | — | Path to an LSP config file, or inline server definitions. |
+
+### Example `plugin.json` file
+
+{% data reusables.copilot.cli-example-plugin-file %}
+
+## `marketplace.json`
+
+You can create a plugin marketplace—which people can use to discover and install your plugins—by creating a `marketplace.json` file and saving it to the `.github/plugin/` directory of the repository. You can also store the `marketplace.json` file in your local file system. For example, saving the file as `/PATH/TO/my-marketplace/.github/plugin/marketplace.json` allows you to add it to the CLI using the following command:
+
+```shell
+copilot plugin marketplace add /PATH/TO/my-marketplace
+```
+
+{% data reusables.copilot.cli-claude-plugin-dir %}
+
+
+For more information, see [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/plugins-marketplace).
+
+### Example `marketplace.json` file
+
+{% data reusables.copilot.cli-example-marketplace-file %}
+
+> [!NOTE]
+> {% data reusables.copilot.cli-path-to-plugins %}
+
+### `marketplace.json` fields
+
+#### Top-level fields
+
+| Field | Type | Required | Description |
+|------------|----------|----------|-------------|
+| `name` | string | Yes | Kebab-case marketplace name. Max 64 chars. |
+| `owner` | object | Yes | `{ name, email? }` — marketplace owner info. |
+| `plugins` | array | Yes | List of plugin entries (see the table below). |
+| `metadata` | object | No | `{ description?, version?, pluginRoot? }` |
+
+#### Plugin entry fields (objects within the `plugins` array)
+
+| Field | Type | Required | Description |
+|---------------|--------------------|----------|-------------|
+| `name` | string | Yes | Kebab-case plugin name. Max 64 chars. |
+| `source` | string \| object | Yes | Where to fetch the plugin (relative path, {% data variables.product.github %}, or URL). |
+| `description` | string | No | Plugin description. Max 1024 chars. |
+| `version` | string | No | Plugin version. |
+| `author` | object | No | `{ name, email?, url? }` |
+| `homepage` | string | No | Plugin homepage URL. |
+| `repository` | string | No | Source repository URL. |
+| `license` | string | No | License identifier. |
+| `keywords` | string[] | No | Search keywords. |
+| `category` | string | No | Plugin category. |
+| `tags` | string[] | No | Additional tags. |
+| `commands` | string \| string[] | No | Path(s) to command directories. |
+| `agents` | string \| string[] | No | Path(s) to agent directories. |
+| `skills` | string \| string[] | No | Path(s) to skill directories. |
+| `hooks` | string \| object | No | Path to hooks config or inline hooks object. |
+| `mcpServers` | string \| object | No | Path to MCP config or inline server definitions. |
+| `lspServers` | string \| object | No | Path to LSP config or inline server definitions. |
+| `strict` | boolean | No | If false, plugin doesn't need its own `plugin.json`. Default: true. |
+
+## File locations
+
+| Item | Path |
+|----------------------|------|
+| Installed plugins | `~/.copilot/installed-plugins/` and `~/.copilot/installed-plugins/_direct` |
+| Marketplace cache | `~/.copilot/state/marketplace-cache/` |
+| Plugin manifest | `plugin.json`, `.github/plugin/plugin.json`, or `.claude-plugin/plugin.json` |
+| Marketplace manifest | `.github/plugin/marketplace.json` or `.claude-plugin/marketplace.json` |
+| Agents | `agents/` (default, overridable in manifest) |
+| Skills | `skills/` (default, overridable in manifest) |
+| Hooks config | `hooks.json` or `hooks/hooks.json` |
+| MCP config | `.mcp.json` or `.github/mcp.json` |
+| LSP config | `lsp.json` or `.github/lsp.json` |
+
+## Loading order and precedence
+
+If you install multiple plugins it's possible that some custom agents, skills, MCP servers, or tools supplied via MCP servers have duplicate names. In this situation, the CLI determines which component to use based on a precedence order.
+
+* **Agents and skills** use first-found-wins precedence.
+
+ If you have a project-level custom agent or skill with the same name or ID as one in a plugin you install, the agent or skill in the plugin is silently ignored. The plugin cannot override project-level or personal configurations. Custom agents are deduplicated using their ID, which is derived from its file name (for example, if the file is named `reviewer.agent.md`, the agent ID is `reviewer`). Skills are deduplicated by their name field inside the `SKILL.md` file.
+
+* **MCP servers** use last-wins precedence.
+
+ If you install a plugin that defines an MCP server with the same server name as an MCP server you have already installed, the plugin's definition takes precedence. You can use the `--additional-mcp-config` command-line option to override an MCP server configuration with the same name, installed using a plugin.
+
+* **Built-in tools and agents** are always present and cannot be overridden by user-defined components.
+
+The following diagram illustrates the loading order and precedence rules.
+
+```text
+┌─────────────────────────────────────────────────────────┐
+│ BUILT-IN - HARDCODED, ALWAYS PRESENT │
+│ • tools: bash, view, apply_patch, glob, rg, task, ... │
+│ • agents: explore, task, code-review, general-purpose │
+└────────────────────────┬────────────────────────────────┘
+ │
+ ┌──────────────────────▼──────────────────────────────────────────────┐
+ │ CUSTOM AGENTS - FIRST LOADED IS USED (dedup by ID) │
+ │ 1. ~/.copilot/agents/ (user, .github convention) │
+ │ 2. /.github/agents/ (project) │
+ │ 3. /.github/agents/ (inherited, monorepo) │
+ │ 4. ~/.claude/agents/ (user, .claude convention) │
+ │ 5. /.claude/agents/ (project) │
+ │ 6. /.claude/agents/ (inherited, monorepo) │
+ │ 7. PLUGIN: agents/ dirs (plugin, by install order) │
+ │ 8. Remote org/enterprise agents (remote, via API) │
+ └──────────────────────┬──────────────────────────────────────────────┘
+ │
+ ┌──────────────────────▼──────────────────────────────────────────────┐
+ │ AGENT SKILLS - FIRST LOADED IS USED (dedup by name) │
+ │ 1. /.github/skills/ (project) │
+ │ 2. /.agents/skills/ (project) │
+ │ 3. /.claude/skills/ (project) │
+ │ 4. /.github/skills/ etc. (inherited) │
+ │ 5. ~/.copilot/skills/ (personal-copilot) │
+ │ 6. ~/.claude/skills/ (personal-claude) │
+ │ 7. PLUGIN: skills/ dirs (plugin) │
+ │ 8. COPILOT_SKILLS_DIRS env + config (custom) │
+ │ --- then commands (.claude/commands/), skills override commands ---│
+ └──────────────────────┬──────────────────────────────────────────────┘
+ │
+ ┌──────────────────────▼──────────────────────────────────────────────┐
+ │ MCP SERVERS - LAST LOADED IS USED (dedup by server name) │
+ │ 1. ~/.copilot/mcp-config.json (lowest priority) │
+ │ 2. .vscode/mcp.json (workspace) │
+ │ 3. PLUGIN: MCP configs (plugins) │
+ │ 4. --additional-mcp-config flag (highest priority) │
+ └─────────────────────────────────────────────────────────────────────┘
+```
diff --git a/content/copilot/reference/hooks-configuration.md b/content/copilot/reference/hooks-configuration.md
index d6c956f2084b..860d0b6f0d07 100644
--- a/content/copilot/reference/hooks-configuration.md
+++ b/content/copilot/reference/hooks-configuration.md
@@ -11,7 +11,7 @@ category:
- Configure Copilot
---
-This reference article describes the available hook types with examples, including their input and output formats, script best practices, and advanced patterns for logging, security enforcement, and external integrations. For general information about creating hooks, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/use-hooks).
+This reference article describes the available hook types with examples, including their input and output formats, script best practices, and advanced patterns for logging, security enforcement, and external integrations. For general information about creating hooks, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/use-hooks). For a tutorial on creating hooks for the CLI, see [AUTOTITLE](/copilot/tutorials/copilot-cli-hooks).
## Hook types
@@ -197,7 +197,7 @@ TOOL_NAME=$(echo "$INPUT" | jq -r '.toolName')
# Only allow editing specific directories
if [ "$TOOL_NAME" = "edit" ]; then
PATH_ARG=$(echo "$INPUT" | jq -r '.toolArgs' | jq -r '.path')
-
+
if [[ ! "$PATH_ARG" =~ ^(src/|test/) ]]; then
echo '{"permissionDecision":"deny","permissionDecisionReason":"Can only edit files in src/ or test/ directories"}'
exit 0
@@ -356,7 +356,7 @@ $output | ConvertTo-Json -Compress
### Error handling
-This script example demonstrates how to handle errors in hook scripts.
+This script example demonstrates how to handle errors in hook scripts.
**Bash:**
@@ -415,7 +415,7 @@ You can define multiple hooks for the same event. They execute in order:
"comment": "Security validation - runs first"
},
{
- "type": "command",
+ "type": "command",
"bash": "./scripts/audit-log.sh",
"comment": "Audit logging - runs second"
},
diff --git a/content/copilot/reference/index.md b/content/copilot/reference/index.md
index f1e42319f595..248595166f4f 100644
--- a/content/copilot/reference/index.md
+++ b/content/copilot/reference/index.md
@@ -12,6 +12,7 @@ children:
- /copilot-feature-matrix
- /keyboard-shortcuts
- /cli-command-reference
+ - /cli-plugin-reference
- /custom-agents-configuration
- /acp-server
- /hooks-configuration
diff --git a/content/copilot/responsible-use/copilot-text-completion.md b/content/copilot/responsible-use/copilot-text-completion.md
deleted file mode 100644
index b0096d9ad95d..000000000000
--- a/content/copilot/responsible-use/copilot-text-completion.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: Responsible use of GitHub Copilot text completion
-shortTitle: Copilot text completion
-intro: 'Learn how to use {% data variables.copilot.copilot_autocomplete_pr %} responsibly by understanding its purposes, capabilities, and limitations.'
-versions:
- feature: copilot
-permissions: 'Members of an enterprise with a subscription to {% data variables.copilot.copilot_enterprise %}'
-topics:
- - Copilot
-redirect_from:
- - /copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-text-completion
- - /copilot/responsible-use-of-github-copilot-features/copilot-text-completion
-contentType: rai
-category:
- - Responsible use
----
-
-{% ifversion fpt %}
-
-{% data reusables.rai.copilot.enterprise-fpt-link %}
-
-{% endif %}
-
-## About {% data variables.copilot.copilot_autocomplete_pr %}
-
-{% data variables.copilot.copilot_autocomplete_pr %} is an AI-powered feature that allows users to more easily write pull request descriptions by suggesting text as you type.
-
-When you pause briefly while typing a summary, {% data variables.product.prodname_copilot_short %} scans through the pull request and provides suggested prose, attempting to finish your thought.
-
-The only supported language for {% data variables.copilot.copilot_autocomplete_pr %} is English.
-
-{% data variables.copilot.copilot_autocomplete_pr %} uses a simple-prompt flow leveraging the {% data variables.product.prodname_copilot_short %} API, utilizing the generic large language model, with no additional trained models.
-
-When you pause during typing the pull request description, a call is generated to the {% data variables.product.prodname_copilot_short %} API to generate suggested text to insert into the description at the current cursor position. The text complete request includes information from the pull request, including the pull request title, any text already in the description, the pull request commit titles, partial raw diffs, and recently viewed pull request and issue titles in a prompt that requests {% data variables.product.prodname_copilot_short %} to generate a suggestion for the next words you are likely to type. The response is then displayed as grayed out text following the cursor. You can accept the suggested text by pressing the tab key, or reject the suggestion by simply continuing to type, or moving the cursor focus out of the description field.
-
-## Use case for pull request text complete
-
-The goal of {% data variables.copilot.copilot_autocomplete_pr %} is to help the pull request author to quickly provide context to the human reviewers of the pull request. When reviewing a pull request it is valuable to understand context such as why changes are being requested and how the pull request makes those changes. It may help increase developer productivity by reducing the time taken to open a pull request.
-
-## Improving the performance of pull request text complete
-
-The feature is intended to supplement rather than replace a human's work adding context to pull requests. The quality of the text complete suggestions will depend on the quality of the title, the commit messages, and the text already added to the description. We encourage you to continue adding useful context and let {% data variables.product.prodname_copilot_short %} suggest as you go. It remains your responsibility to review and assess the accuracy of information in the pull requests you create.
-
-## Limitations of pull request text complete
-
-Currently, our team is aware that there are limitations to this feature. Many of them are expected in leveraging our {% data variables.product.prodname_copilot_short %} API; however, there are a few that are specific to {% data variables.copilot.copilot_autocomplete_pr %} which pertain to limited scope for very large pull requests, and potentially inaccurate responses. We also note that users should expect terms used in their pull request to appear in the AI-generated suggestions.
-
-This feature has been subject to RAI Red Teaming and we will continue to monitor the efficacy and safety of the feature over time. For more information, see [Microsoft AI Red Team building future of safer AI](https://www.microsoft.com/en-us/security/blog/2023/08/07/microsoft-ai-red-team-building-future-of-safer-ai/) on the Microsoft security blog.
-
-### Limited scope
-
-It is possible for very large pull requests, that some of the pull request content that the {% data variables.product.prodname_copilot_short %} API relies upon for automatically suggesting text will not fit into the API call, and so for very large pull requests, some of the suggestions you might expect may not occur.
-
-### Inaccurate responses
-
-The more inputs and context that {% data variables.product.prodname_copilot_short %} has to work from, the better the text complete suggestions will be. However, since the feature is quite new, it will take time to reach exact precision with the text complete suggestions that are generated. In the meantime, there may be cases where a generated text complete is less accurate and requires the user to make modifications before saving and publishing their pull request with this description. In addition, there is a risk of "hallucination," where {% data variables.product.prodname_copilot_short %} generates statements that are inaccurate. For these reasons, reviewing is a requirement, and careful review of the output is highly recommended.
-
-### Replication of pull request content
-
-Because a text complete suggestion is drawn from changes that were made in a pull request, if harmful or offensive terms are within the content of the pull request, there is potential for the suggestion to also include those terms.
-
-## Further reading
-
-* [{% data variables.product.prodname_copilot %} Trust Center](https://copilot.github.trust.page/)
diff --git a/content/copilot/responsible-use/index.md b/content/copilot/responsible-use/index.md
index ba7c230af58c..f36e2ba07f1e 100644
--- a/content/copilot/responsible-use/index.md
+++ b/content/copilot/responsible-use/index.md
@@ -15,7 +15,6 @@ children:
- /copilot-in-windows-terminal
- /copilot-in-github-desktop
- /pull-request-summaries
- - /copilot-text-completion
- /copilot-commit-message-generation
- /code-review
- /copilot-coding-agent
@@ -23,5 +22,6 @@ children:
- /copilot-spaces
redirect_from:
- /copilot/responsible-use-of-github-copilot-features
+ - /copilot/responsible-use/copilot-text-completion
contentType: rai
---
diff --git a/content/get-started/learning-about-github/githubs-plans.md b/content/get-started/learning-about-github/githubs-plans.md
index 664d0c8fb320..39594e6bfe83 100644
--- a/content/get-started/learning-about-github/githubs-plans.md
+++ b/content/get-started/learning-about-github/githubs-plans.md
@@ -143,7 +143,7 @@ In addition to the features available with {% data variables.product.prodname_te
For a detailed list of the features available with {% data variables.product.prodname_enterprise %}, see our [Pricing](https://github.com/pricing) page.
-To see how {% data variables.product.github %} compares to GitLab, Bitbucket, and Jenkins, see [Comparing GitHub to other DevOps solutions](https://resources.github.com/devops/tools/compare/).
+To see how {% data variables.product.github %} compares to GitLab, Bitbucket, and Jenkins, see [Comparing GitHub to other DevOps solutions](https://github.com/resources/articles/devops-tools-comparison).
You can set up trials to evaluate {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}. For more information, see [AUTOTITLE](/enterprise-cloud@latest/admin/overview/setting-up-a-trial-of-github-enterprise-cloud) and [AUTOTITLE](/enterprise-server@latest/admin/overview/setting-up-a-trial-of-github-enterprise-server).
diff --git a/content/get-started/using-git/about-git.md b/content/get-started/using-git/about-git.md
index 7f45031f4e0b..fdb8f3a5a66c 100644
--- a/content/get-started/using-git/about-git.md
+++ b/content/get-started/using-git/about-git.md
@@ -44,7 +44,7 @@ Through platforms like {% data variables.product.github %}, Git also provides mo
{% data variables.product.github %} builds collaboration directly into the development process. Work is organized into repositories where developers can outline requirements or direction and set expectations for team members. Then, using the {% data variables.product.github %} flow, developers simply create a branch to work on updates, commit changes to save them, open a pull request to propose and discuss changes, and merge pull requests once everyone is on the same page. For more information, see [AUTOTITLE](/get-started/using-github/github-flow).
-For {% data variables.product.prodname_dotcom %} plans and costs, see {% data variables.product.pricing_link %}. For information on how {% data variables.product.prodname_enterprise %} compares to other options, see [Comparing GitHub to other DevOps solutions](https://resources.github.com/devops/tools/compare/).
+For {% data variables.product.prodname_dotcom %} plans and costs, see {% data variables.product.pricing_link %}. For information on how {% data variables.product.prodname_enterprise %} compares to other options, see [Comparing GitHub to other DevOps solutions](https://github.com/resources/articles/devops-tools-comparison).
## {% data variables.product.github %} and the command line
diff --git a/content/rest/search/search.md b/content/rest/search/search.md
index 4f778062696e..5114a0615904 100644
--- a/content/rest/search/search.md
+++ b/content/rest/search/search.md
@@ -31,7 +31,7 @@ Unless another sort option is provided as a query parameter, results are sorted
{% data reusables.enterprise.rate_limit %}
The REST API has a custom rate limit for searching. For authenticated requests, you can make up to
-30 requests per minute{% ifversion fpt or ghec %} for all search endpoints except for the [Search code](/rest/search/search#search-code) endpoint. The [Search code](/rest/search/search#search-code) endpoint requires you to authenticate and limits you to 10 requests per minute{% endif %}. For unauthenticated requests, the rate limit allows you to make up to 10 requests per minute.
+30 requests per minute{% ifversion fpt or ghec %} for all search endpoints except for the [Search code](/rest/search/search#search-code) endpoint. The [Search code](/rest/search/search#search-code) endpoint requires you to authenticate and limits you to 9 requests per minute{% endif %}. For unauthenticated requests, the rate limit allows you to make up to 10 requests per minute.
For information about how to determine your current rate limit status, see [Rate Limit](/rest/rate-limit/rate-limit).
diff --git a/data/reusables/copilot/cli-claude-plugin-dir.md b/data/reusables/copilot/cli-claude-plugin-dir.md
new file mode 100644
index 000000000000..cd1274fac36a
--- /dev/null
+++ b/data/reusables/copilot/cli-claude-plugin-dir.md
@@ -0,0 +1,2 @@
+> [!NOTE]
+> {% data variables.copilot.copilot_cli_short %} also looks for the `marketplace.json` file in the `.claude-plugin/` directory.
diff --git a/data/reusables/copilot/cli-example-marketplace-file.md b/data/reusables/copilot/cli-example-marketplace-file.md
new file mode 100644
index 000000000000..6b722e16b0f8
--- /dev/null
+++ b/data/reusables/copilot/cli-example-marketplace-file.md
@@ -0,0 +1,27 @@
+```json copy
+{
+ "name": "my-marketplace",
+ "owner": {
+ "name": "Your Organization",
+ "email": "plugins@example.com"
+ },
+ "metadata": {
+ "description": "Curated plugins for our team",
+ "version": "1.0.0"
+ },
+ "plugins": [
+ {
+ "name": "frontend-design",
+ "description": "Create a professional-looking GUI ...",
+ "version": "2.1.0",
+ "source": "./plugins/frontend-design"
+ },
+ {
+ "name": "security-checks",
+ "description": "Check for potential security vulnerabilities ...",
+ "version": "1.3.0",
+ "source": "./plugins/security-checks"
+ }
+ ]
+}
+```
diff --git a/data/reusables/copilot/cli-example-plugin-file.md b/data/reusables/copilot/cli-example-plugin-file.md
new file mode 100644
index 000000000000..0c2d12867506
--- /dev/null
+++ b/data/reusables/copilot/cli-example-plugin-file.md
@@ -0,0 +1,17 @@
+```json copy
+{
+ "name": "my-dev-tools",
+ "description": "React development utilities",
+ "version": "1.2.0",
+ "author": {
+ "name": "Jane Doe",
+ "email": "jane@example.com"
+ },
+ "license": "MIT",
+ "keywords": ["react", "frontend"],
+ "agents": "agents/",
+ "skills": ["skills/", "extra-skills/"],
+ "hooks": "hooks.json",
+ "mcpServers": ".mcp.json"
+}
+```
diff --git a/data/reusables/copilot/cli-help-note.md b/data/reusables/copilot/cli-help-note.md
new file mode 100644
index 000000000000..3d6219c68028
--- /dev/null
+++ b/data/reusables/copilot/cli-help-note.md
@@ -0,0 +1,2 @@
+> [!NOTE]
+> You can find help on using plugins by entering `copilot plugin [SUBCOMMAND] --help` in the terminal.
diff --git a/data/reusables/copilot/cli-path-to-plugins.md b/data/reusables/copilot/cli-path-to-plugins.md
new file mode 100644
index 000000000000..0800c1917460
--- /dev/null
+++ b/data/reusables/copilot/cli-path-to-plugins.md
@@ -0,0 +1 @@
+The value of the `source` field for each plugin is the path to the plugin's directory, relative to the root of the repository. It is not necessary to use `./` at the start of the path. For example, `"./plugins/plugin-name"` and `"plugins/plugin-name"` resolve to the same directory.
diff --git a/data/reusables/copilot/text-completion-preview.md b/data/reusables/copilot/text-completion-preview.md
deleted file mode 100644
index aa2cf3401540..000000000000
--- a/data/reusables/copilot/text-completion-preview.md
+++ /dev/null
@@ -1,2 +0,0 @@
-> [!NOTE]
-> {% data variables.copilot.copilot_autocomplete_pr %} is currently in {% data variables.release-phases.public_preview %} and subject to change. To participate in the {% data variables.release-phases.public_preview %}, an administrator of your enterprise must opt in to the use of previews of {% data variables.product.prodname_copilot_short %} features. See [AUTOTITLE](/copilot/how-tos/administer/enterprises/managing-policies-and-features-for-copilot-in-your-enterprise#copilot-in-githubcom).