Merge pull request #35354 from github/repo-sync

Repo sync
This commit is contained in:
docs-bot 2024-11-19 10:36:02 -08:00 коммит произвёл GitHub
Родитель 5da52c72fc 0ff4b8c56c
Коммит 455788234a
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
50 изменённых файлов: 504 добавлений и 97 удалений

Просмотреть файл

@ -9,6 +9,7 @@ on:
paths: paths:
- 'contributing/content-*.md' - 'contributing/content-*.md'
- 'content/contributing/**.md' - 'content/contributing/**.md'
- .github/workflows/codeowners-content-systems.yml
jobs: jobs:
codeowners-content-systems: codeowners-content-systems:

Просмотреть файл

@ -25,6 +25,7 @@ on:
- '.github/**' - '.github/**'
- '**Dockerfile' - '**Dockerfile'
- 'package*.json' - 'package*.json'
- .github/workflows/codeowners-docs-engineering.yml
jobs: jobs:
codeowners-docs-engineering: codeowners-docs-engineering:

1
.github/workflows/codeowners-legal.yml поставляемый
Просмотреть файл

@ -15,6 +15,7 @@ on:
- synchronize - synchronize
paths: paths:
- 'content/**' - 'content/**'
- .github/workflows/codeowners-legal.yml
permissions: permissions:
contents: read contents: read

Просмотреть файл

@ -8,6 +8,7 @@ on:
- opened - opened
paths: paths:
- data/release-notes/enterprise-server/** - data/release-notes/enterprise-server/**
- .github/workflows/comment-release-note-info.yml
permissions: permissions:
contents: read contents: read

3
.github/workflows/dont-delete-assets.yml поставляемый
Просмотреть файл

@ -17,6 +17,7 @@ on:
- main - main
paths: paths:
- 'assets/**' - 'assets/**'
- '.github/workflows/dont-delete-assets.yml'
permissions: permissions:
contents: read contents: read
@ -37,7 +38,7 @@ jobs:
id: comment id: comment
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: src/assets/scripts/deleted-assets-pr-comment.js run: npm run deleted-assets-pr-comment
- name: Find possible previous comment - name: Find possible previous comment
if: ${{ steps.comment.outputs.markdown != '' }} if: ${{ steps.comment.outputs.markdown != '' }}

1
.github/workflows/dont-delete-features.yml поставляемый
Просмотреть файл

@ -17,6 +17,7 @@ on:
- main - main
paths: paths:
- 'data/features/**' - 'data/features/**'
- .github/workflows/dont-delete-features.yml
permissions: permissions:
contents: read contents: read

Просмотреть файл

@ -9,6 +9,7 @@ on:
types: types:
- opened - opened
paths: paths:
- .github/workflows/hubber-contribution-help.yml
- 'content/**' - 'content/**'
- 'data/**' - 'data/**'

3
.github/workflows/orphaned-files-check.yml поставляемый
Просмотреть файл

@ -11,6 +11,7 @@ on:
pull_request: pull_request:
paths: paths:
- .github/workflows/orphaned-assets-check.yml - .github/workflows/orphaned-assets-check.yml
- .github/workflows/orphaned-files-check.yml
# In case any of the dependencies affect the script # In case any of the dependencies affect the script
- 'package*.json' - 'package*.json'
- src/assets/scripts/find-orphaned-assets.js - src/assets/scripts/find-orphaned-assets.js
@ -96,7 +97,7 @@ jobs:
The first responder should just spot-check some of the unused assets The first responder should just spot-check some of the unused assets
to make sure they aren't referenced anywhere to make sure they aren't referenced anywhere
and then approve and merge the pull request. and then approve and merge the pull request.
For more information, see [Doc: Orphaned Assets](https://github.com/github/docs-engineering/blob/main/docs/orphaned-assets.md) For more information, see [Doc: Orphaned Assets](https://github.com/github/docs-engineering/blob/main/docs/orphaned-assets.md)
and [Doc: Reusables CLI](https://github.com/github/docs-internal/tree/main/src/content-render/scripts/reusables-cli). and [Doc: Reusables CLI](https://github.com/github/docs-internal/tree/main/src/content-render/scripts/reusables-cli).
EOM EOM
) )

1
.github/workflows/site-policy-sync.yml поставляемый
Просмотреть файл

@ -14,6 +14,7 @@ on:
- closed - closed
paths: paths:
- 'content/site-policy/**' - 'content/site-policy/**'
- '.github/workflows/site-policy-sync.yml'
workflow_dispatch: workflow_dispatch:
permissions: permissions:

1
.github/workflows/test-changed-content.yml поставляемый
Просмотреть файл

@ -14,6 +14,7 @@ on:
- main - main
paths: paths:
- 'content/**' - 'content/**'
- .github/workflows/test-changed-content.yml
permissions: permissions:
contents: read contents: read

3
.github/workflows/validate-asset-images.yml поставляемый
Просмотреть файл

@ -9,6 +9,7 @@ on:
pull_request: pull_request:
paths: paths:
- 'assets/**' - 'assets/**'
- '.github/workflows/validate-asset-images.yml'
permissions: permissions:
contents: read contents: read
@ -24,4 +25,4 @@ jobs:
- uses: ./.github/actions/node-npm-setup - uses: ./.github/actions/node-npm-setup
- name: Validate all asset images - name: Validate all asset images
run: tsx src/assets/scripts/validate-asset-images.ts run: npm run validate-asset-images

Просмотреть файл

@ -46,7 +46,7 @@ If you're interested in creating an app for {% data variables.product.prodname_m
### {% data variables.product.prodname_copilot_extensions %} ### {% data variables.product.prodname_copilot_extensions %}
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data reusables.copilot.copilot-extensions.copilot-extensions-intro %} {% data reusables.copilot.copilot-extensions.copilot-extensions-intro %}

Просмотреть файл

@ -0,0 +1,125 @@
---
title: Automating usage reporting with the REST API
intro: Learn how to automate reporting on your use of paid features using the REST API.
allowTitleToDifferFromFilename: true
shortTitle: Automate usage reporting
versions:
ghec: '*'
type: how_to
topics:
- Enterprise
- Billing
- REST
permissions: 'Enterprise owners and billing managers'
product: '{% data reusables.billing.enhanced-billing-platform-product %}'
---
You can automatically pull data from {% data variables.product.github %} to populate the business systems you use to monitor costs and usage using the REST API. If you haven't used the {% data variables.product.github %} REST API before, the following articles are a good starting point, see "[AUTOTITLE](/rest/using-the-rest-api).
## Using the billing platform `/usage` endpoint to retrieve metered usage details for an enterprise
The enhanced billing platform provides a single REST API `/usage` endpoint that you can use to report on the use of all metered products. The usage data provided by this endpoint is available only to enterprise owners and enterprise billing managers, so you will need to authenticate with {% data variables.product.github %}.
* If you use the GitHub CLI, use the `gh auth login` command to authenticate.
* Otherwise, you will need to create a {% data variables.product.pat_v1 %}, see "[Creating a {% data variables.product.pat_v1 %}](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic)."
When you call the `/usage` endpoint, you must specify the enterprise that you want data for and, by default, usage for the current year that does not belong to a cost center is reported. You can reduce the scope of data returned by the endpoint using query parameters.
* Define a specific time period by setting one or more of the following parameters: `year`, `month`, `day`, and `hour`.
* Define a cost center to report on by identifier using the `cost_center_id` query parameter.
For more detailed information and an example call and response, see [Get billing usage report for an enterprise](/rest/enterprise-admin/billing?apiVersion=2022-11-28#get-billing-usage-report-for-an-enterprise).
<!-- expires 2025-07-01 -->
## Migrating from the endpoints used for the previous billing platform
The previous billing platform provided three different endpoints for usage data:
* [Get GitHub Actions billing for an enterprise](/rest/enterprise-admin/billing?apiVersion=2022-11-28#get-github-actions-billing-for-an-enterprise)
* [Get GitHub Packages billing for an enterprise](/rest/enterprise-admin/billing?apiVersion=2022-11-28#get-github-packages-billing-for-an-enterprise)
* [Get shared storage billing for an enterprise](/rest/enterprise-admin/billing?apiVersion=2022-11-28#get-shared-storage-billing-for-an-enterprise)
When you transition to the enhanced billing platform, these endpoints will no longer return accurate usage information. You should upgrade any automation that uses these endpoints to use the new endpoint [GET /enterprises/{enterprise}/settings/billing/usage](/rest/enterprise-admin/billing?apiVersion=2022-11-28#get-billing-usage-report-for-an-enterprise). The tables below provide a detailed explanation how to use the billing platform to retrieve equivalent information.
### Changes in call definition
If you used a {% data variables.product.pat_v2 %} to authenticate with the previous endpoints, you will need create a {% data variables.product.pat_v1 %} to authenticate with the new endpoint.
In addition, you may want to use the new query parameters to specify a time period or cost center.
### Getting GitHub Actions billing data from the new response data
Example of the previous response
```json
{"total_minutes_used": 305, "total_paid_minutes_used": 0, "included_minutes": 3000, "minutes_used_breakdown": { "UBUNTU": 205, "MACOS": 10, "WINDOWS": 90 } }
```
Example of the new response
```json
{ "usageItems": [ { "date": "2023-08-01", "product": "Actions", "sku": "Actions Linux", "quantity": 100, "unitType": "minutes", "pricePerUnit": 0.008, "grossAmount": 0.8, "discountAmount": 0, "netAmount": 0.8, "organizationName": "GitHub", "repositoryName": "github/example"} ] }
```
To get the same values from the new response data:
{% rowheaders %}
| Previous property | Calculate from new API response |
|------ |----------- |
| `total_minutes_used` | <ul><li>Filter results by `"product": "Actions"` and `"unitType": "minutes"`</li><li>Sum `quantity`</li></ul>|
| `total_paid_minutes_used`| This is now represented as a $ amount via `netAmount`.<ul><li>Filter results by `"product": "Actions"` and `"unitType": "minutes"`</li><li>Sum `netAmount`</li></ul>|
| `included_minutes` | This is now represented as a $ amount via `discountAmount`.<ul><li>Filter results by `"product": "Actions"` and `"unitType": "minutes"`</li><li>Sum `discountAmount`</li></ul>|
| `minutes_used_breakdown` | <ul><li>Filter results by `"product": "Actions"` and `"unitType": "minutes"`</li><li>Sum `quantity` grouped by `sku`</li></ul>|
{% endrowheaders %}
### Getting GitHub Packages billing data from the new response data
Example of the previous response
```json
{ "total_gigabytes_bandwidth_used": 50, "total_paid_gigabytes_bandwidth_used": 40, "included_gigabytes_bandwidth": 10 }
```
Example of the new response
```json
{ "usageItems": [ { "date": "2023-08-01", "product": "Packages", "sku": "Packages data transfer", "quantity": 100, "unitType": "gigabytes", "pricePerUnit": 0.008, "grossAmount": 0.8, "discountAmount": 0, "netAmount": 0.8, "organizationName": "GitHub", "repositoryName": "github/example" } ] }
```
{% rowheaders %}
| Previous property | Calculate from new API response |
|------ |----------- |
| `total_gigabytes_bandwidth_used` | <ul><li>Filter results by `"product": "Packages"` and `"unitType": "gigabytes"` </li><li>Sum `quantity`</li></ul> |
| `total_paid_gigabytes_bandwidth_used`| This is now represented as a $ amount via `netAmount`. <ul><li>Filter results by `"product": "Packages"` and `"unitType": "gigabytes"`</li><li>Sum `netAmount`</li></ul> |
| `included_gigabytes_bandwidth` | This is now represented as a $ amount via `discountAmount`.<ul><li>Filter results by `"product": "Packages"` and `"unitType": "gigabytes"`</li><li>Sum `discountAmount`</li></ul> |
{% endrowheaders %}
### Getting shared storage billing from the new response data
Example of the previous response
```json
{ "days_left_in_billing_cycle": 20, "estimated_paid_storage_for_month": 15, "estimated_storage_for_month": 40 }
```
Example of the new response
```json
{ "usageItems": [ { "date": "2023-08-01", "product": "Packages", "sku": "Packages storage", "quantity": 100, "unitType": "GigabyteHours", "pricePerUnit": 0.008, "grossAmount": 0.8, "discountAmount": 0, "netAmount": 0.8, "organizationName": "GitHub", "repositoryName": "github/example" } ] }
```
{% rowheaders %}
| Previous property | Calculate from new API response |
|------ |----------- |
| `days_left_in_billing_cycle` | Not available. This information can be inferred by subtracting the current day of the month from the number of days in the current month. |
| `estimated_paid_storage_for_month`| This is now represented as a $ amount via `netAmount`. <br><br> Prerequisite: pass the `month` and `year` query parameters. <br><br> <i> For Actions storage </i> <ul><li> Filter results by `"product": "Actions"` and `"unitType": "GigabyteHours"`</li><li> Sum `netAmount`</li></ul> <i> For Packages storage </i> <ul><li> Filter results by `"product": "Packages"` and `"unitType": "GigabyteHours"`</li><li> Sum `netAmount`</li></ul>|
| `estimated_storage_for_month` | Prerequisite: pass the `month` and `year` query parameters. <br><br> <i> For Actions storage </i> <ul><li> Filter results by `"product": "Actions"` and `"unitType": "GigabyteHours"`</li><li> Sum `quantity`</li></ul> <i> For Packages storage </i> <ul><li> Filter results by `"product": "Packages"` and `"unitType": "GigabyteHours"`</li><li> Sum `quantity`</li></ul>|
{% endrowheaders %}
<!-- end expires 2025-07-01 -->

Просмотреть файл

@ -20,5 +20,6 @@ children:
- /charging-business-units - /charging-business-units
- /preventing-overspending - /preventing-overspending
- /managing-your-payment-and-billing-information - /managing-your-payment-and-billing-information
- /automating-usage-reporting
- /about-billing-for-git-large-file-storage - /about-billing-for-git-large-file-storage
--- ---

Просмотреть файл

@ -164,11 +164,11 @@ import (
) )
func main() { func main() {
payload := `[{"token":"some_token","type":"some_type","url":"some_url","source":"some_source"}]` payload := `[{"source":"commit","token":"some_token","type":"some_type","url":"https://example.com/base-repo-url/"}]`
kID := "f9525bf080f75b3506ca1ead061add62b8633a346606dc5fe544e29231c6ee0d" kID := "bcb53661c06b4728e59d897fb6165d5c9cda0fd9cdf9d09ead458168deb7518c"
kSig := "MEUCIFLZzeK++IhS+y276SRk2Pe5LfDrfvTXu6iwKKcFGCrvAiEAhHN2kDOhy2I6eGkOFmxNkOJ+L2y8oQ9A2T9GGJo6WJY=" kSig := "MEQCIQDaMKqrGnE27S0kgMrEK0eYBmyG0LeZismAEz/BgZyt7AIfXt9fErtRS4XaeSt/AO1RtBY66YcAdjxji410VQV4xg=="
// Fetch the list of GitHub Public Keys // Fetch the list of GitHub Public Keys
req, err := http.NewRequest("GET", "https://api.github.com/meta/public_keys/secret_scanning", nil) req, err := http.NewRequest("GET", "https://api.github.com/meta/public_keys/secret_scanning", nil)
@ -284,14 +284,14 @@ require 'json'
require 'base64' require 'base64'
payload = <<-EOL payload = <<-EOL
[{"token":"some_token","type":"some_type","url":"some_url","source":"some_source"}] [{"source":"commit","token":"some_token","type":"some_type","url":"https://example.com/base-repo-url/"}]
EOL EOL
payload = payload payload = payload
signature = "MEUCIFLZzeK++IhS+y276SRk2Pe5LfDrfvTXu6iwKKcFGCrvAiEAhHN2kDOhy2I6eGkOFmxNkOJ+L2y8oQ9A2T9GGJo6WJY=" signature = "MEQCIQDaMKqrGnE27S0kgMrEK0eYBmyG0LeZismAEz/BgZyt7AIfXt9fErtRS4XaeSt/AO1RtBY66YcAdjxji410VQV4xg=="
key_id = "f9525bf080f75b3506ca1ead061add62b8633a346606dc5fe544e29231c6ee0d" key_id = "bcb53661c06b4728e59d897fb6165d5c9cda0fd9cdf9d09ead458168deb7518c"
url = URI.parse('https://api.github.com/meta/public_keys/secret_scanning') url = URI.parse('https://api.github.com/meta/public_keys/secret_scanning')

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: About building Extensions
type: overview type: overview
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
## About {% data variables.product.prodname_copilot_extensions_short %} ## About {% data variables.product.prodname_copilot_extensions_short %}
@ -45,6 +45,12 @@ type: overview
* Integrate their tool into the developer workflow on {% data variables.product.company_short %} and the IDE * Integrate their tool into the developer workflow on {% data variables.product.company_short %} and the IDE
* Leverage the {% data variables.product.company_short %} ecosystem to raise awareness for their product * Leverage the {% data variables.product.company_short %} ecosystem to raise awareness for their product
### About skillsets and agents
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-1 %}
For more information about skillsets, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/about-copilot-skillsets)."
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-2 %}
### Resources for building {% data variables.product.prodname_copilot_extensions %} ### Resources for building {% data variables.product.prodname_copilot_extensions %}
{% data variables.product.company_short %} provides a comprehensive toolkit for extension builders, with code samples, a CLI debugging tool, quickstart SDKs, and a user feedback repository. For more information, see the [copilot-extensions](https://github.com/orgs/copilot-extensions/) organization on {% data variables.product.company_short %}. {% data variables.product.company_short %} provides a comprehensive toolkit for extension builders, with code samples, a CLI debugging tool, quickstart SDKs, and a user feedback repository. For more information, see the [copilot-extensions](https://github.com/orgs/copilot-extensions/) organization on {% data variables.product.company_short %}.

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: About Copilot agents
type: overview type: overview
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data variables.product.prodname_copilot_agents_short %} are custom tools embedded in {% data variables.product.prodname_copilot_extensions_short %}. They integrate with {% data variables.product.prodname_copilot_chat_short %} to provide additional functionalities tailored to specific needs. {% data variables.product.prodname_copilot_agents_short %} can perform various tasks such as querying documentation, retrieving data, executing specific actions, or providing AI-assisted coding suggestions. They enhance the capabilities of {% data variables.product.prodname_copilot %} by allowing developers to build and integrate custom features directly into the {% data variables.product.prodname_copilot_chat_short %} interface. {% data variables.product.prodname_copilot_agents_short %} are custom tools embedded in {% data variables.product.prodname_copilot_extensions_short %}. They integrate with {% data variables.product.prodname_copilot_chat_short %} to provide additional functionalities tailored to specific needs. {% data variables.product.prodname_copilot_agents_short %} can perform various tasks such as querying documentation, retrieving data, executing specific actions, or providing AI-assisted coding suggestions. They enhance the capabilities of {% data variables.product.prodname_copilot %} by allowing developers to build and integrate custom features directly into the {% data variables.product.prodname_copilot_chat_short %} interface.

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: Communicate with GitHub
type: reference type: reference
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
## Prerequisites ## Prerequisites

Просмотреть файл

@ -10,7 +10,7 @@ type: reference
layout: inline layout: inline
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data variables.product.prodname_copilot_agents_short %} communicate with the {% data variables.product.prodname_copilot_short %} platform in the form of server-sent events (SSEs). Rather than waiting for the {% data variables.product.prodname_copilot_short %} platform to request an update from your agent, or vice versa, you can use SSEs to send and receive updates to and from the platform in real time. {% data variables.product.prodname_copilot_agents_short %} communicate with the {% data variables.product.prodname_copilot_short %} platform in the form of server-sent events (SSEs). Rather than waiting for the {% data variables.product.prodname_copilot_short %} platform to request an update from your agent, or vice versa, you can use SSEs to send and receive updates to and from the platform in real time.

Просмотреть файл

@ -10,7 +10,7 @@ type: reference
allowTitleToDifferFromFilename: true allowTitleToDifferFromFilename: true
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
## About {% data variables.product.prodname_copilot_short %}'s Language Learning Model (LLM) ## About {% data variables.product.prodname_copilot_short %}'s Language Learning Model (LLM)

Просмотреть файл

@ -0,0 +1,56 @@
---
title: About Copilot skillsets
intro: 'Learn what {% data variables.product.prodname_copilot_skillsets %} are and how they simplify integrating third-party tools and functions into your {% data variables.product.prodname_copilot_short %} experience.'
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: About {% data variables.product.prodname_copilot_skillsets_short %}
type: overview
---
{% data reusables.copilot.copilot-extensions.public-preview-note %}
A skill within {% data variables.product.prodname_copilot %} is a tool that the model calls to perform a specific task in response to a user query. A skillset is a collection of these skills (up to five per skillset). {% data variables.product.prodname_copilot_skillsets %} provide a streamlined way to extend {% data variables.product.prodname_copilot_short %}s functionality, allowing builders to integrate external services or custom API endpoints into their {% data variables.product.prodname_copilot_short %} workflow. With skillsets, builders can enable {% data variables.product.prodname_copilot_short %} to perform tasks—such as retrieving data or executing actions in third-party services—without needing to manage complex workflows or architecture.
For a quickstart example of a skillset, see the "[skillset-example](https://github.com/copilot-extensions/skillset-example)" repository. For information on building a skillset, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/building-copilot-skillsets)."
## How skillsets and agents differ
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-1 %}
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-2 %}
## The extensibility platform
Skillsets and agents both operate on the {% data variables.product.prodname_copilot_extensibility_platform %}, which manages the flow of user requests and function evaluations. With {% data variables.product.prodname_copilot_skillsets_short %}, the platform handles routing, prompt crafting, function calls and prompt generation.
### Workflow overview
The extensibility platform follows a structured workflow to process user requests and generate responses:
1. **User request**
A user issues a request in the {% data variables.product.prodname_copilot_chat_short %} interface, such as asking for data or executing a specific action.
1. **Routing**
The request is routed to the appropriate extension. For skillsets, this means the platform agent identifies and invokes the corresponding skillset based on the users intent. Each skills inference description helps the platform determine which skill to call.
1. **Dynamic Prompt Crafting**
{% data variables.product.prodname_copilot %} generates a prompt using:
* The users query.
* Relevant thread history.
* Available functions within the skillset.
* Results from any prior function calls.
1. **LLM Completion**
The language model (LLM) processes the prompt and determines:
* Whether the users intent matches a skillset function.
* Which function(s) to call and with what arguments.
* If required, the LLM may send additional function calls to gather more context.
1. **Function Evaluation**
The extension invokes the selected function(s), which may involve:
* Gathering relevant context, such as {% data variables.product.prodname_copilot_skillsets_short %} repository or user metadata.
* Making an API call to an external service to retrieve data or execute an action.
1. **Response generation**
The platform iteratively refines the output, looping through prompt crafting, LLM completion, and function evaluation as needed. Once the process is complete, {% data variables.product.prodname_copilot_short %} streams a final response back to the user in the chat interface.

Просмотреть файл

@ -0,0 +1,82 @@
---
title: Building Copilot skillsets
intro: 'Learn the steps to build {% data variables.product.prodname_copilot_skillsets %} and integrate custom tools and functions into your Copilot environment.'
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Build {% data variables.product.prodname_copilot_skillsets_short %}
type: how_to
---
{% data reusables.copilot.copilot-extensions.public-preview-note %}
## Introduction
{% data variables.product.prodname_copilot_skillsets %} are a streamlined way to extend {% data variables.product.prodname_copilot %}'s functionality by defining API endpoints that {% data variables.product.prodname_copilot_short %} can call. When you create a skillset, {% data variables.product.prodname_copilot_short %} handles all the AI interactions while your endpoints provide the data or functionality. This guide walks you through configuring and deploying a skillset within your {% data variables.product.prodname_github_app %}.
## Prerequisites
Before you begin, make sure you have the following:
1. **A configured {% data variables.product.prodname_github_app %}**: Youll need a {% data variables.product.prodname_github_app %} to act as the container for your skillset. If you havent already set one up, refer to "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension)" and "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-extension)".
1. **API endpoints**: You need one endpoint per skill. Each endpoint must:
* Accept POST requests with the `application/json` MIME type
* Be able to verify the signature of requests from {% data variables.product.github %} to authenticate their origin and prevent unauthorized access
* Be publicly accessible via HTTPS
For more information about signature verification, see "[Verifying that payloads are coming from Github](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-github#verifying-that-payloads-are-coming-from-github)".
## Configuration requirements
Each skillset is defined within a {% data variables.product.prodname_github_app %}. A single{% data variables.product.prodname_github_app %} can contain up to five skills. Each individual skill needs:
* **Name**: A clear and descriptive name (for example, "Get Issues").
* **Inference description**: A detailed explanation of what the skill does and when to use it (for example, "Searches for external issues matching specific criteria like status and labels").
* **API endpoint**: A POST endpoint that accepts JSON requests.
* **JSON schema**: The structure of data your endpoint expects.
### Example JSON schema
This example demonstrates a skill that requires two parameters: a status string and a label string. If no parameters are provided, an empty object with the type 'object' must be passed in as the request body.
```json
{
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "filter issues by status (open, closed)",
"enum": ["open", "closed"]
},
"label": {
"type": "string",
"description": "filter issues by label"
}
}
}
```
This format lets users make natural-language requests like `find open security issues` and {% data variables.product.prodname_copilot_short %} will structure the appropriate API call.
## Using your skillset
To use your skillset:
1. Type `@` followed by your extension's name.
1. Type your prompt in natural language.
For example:
* `@skillset-example generate a lorem ipsum`
* `@skillset-example give me sample data with 100 words`
Copilot interprets your request and calls the appropriate skill with the right parameters. There's no need to specify which skill to use—{% data variables.product.prodname_copilot_short %} determines this from your natural-language request and the inference descriptions provided.
## Setting up a skillset
{% data reusables.apps.settings-step-personal-orgs %}
{% data reusables.user-settings.developer_settings %}
{% data reusables.user-settings.github_apps %}
1. In the list of {% data variables.product.prodname_github_apps %}, click the {% data variables.product.prodname_github_app %} you want to configure for your skillset.
1. In the navigation menu on the left, select **{% data variables.product.prodname_copilot_short %}**.
1. Under **App Type**, select **Skillset** from the dropdown menu.
1. Optionally, in the **Pre-authorization URL** field, enter the URL where users will be redirected to start the authentication process. This step is necessary if your API requires users to connect their GitHub account to access certain features or data.
{% data reusables.copilot.copilot-extensions.skillsets-configuration-steps %}

Просмотреть файл

@ -0,0 +1,13 @@
---
title: Building a Copilot skillset for your Copilot Extension
shortTitle: Build a Copilot skillset
intro: 'Learn how to build a custom {% data variables.product.prodname_copilot_skillset_short %} to combine custom skills and extend the capabilities of {% data variables.product.prodname_copilot_short %}.'
versions:
feature: copilot
topics:
- Copilot
children:
- /about-copilot-skillsets
- /building-copilot-skillsets
---

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: Extensions Glossary
type: reference type: reference
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
The following terms are used in the context of {% data variables.product.prodname_copilot_extensions_short %}, and are defined here for clarity. The following terms are used in the context of {% data variables.product.prodname_copilot_extensions_short %}, and are defined here for clarity.
@ -55,7 +55,11 @@ An extension that is visible and installable by any {% data variables.product.co
#### Skill #### Skill
A piece of code that retrieves context or executes an action in response to a users prompt (e.g., "findIssueByID(id: number)"). A piece of code that retrieves context or executes an action in response to a users prompt (for example, "findIssueByID(id: number)"). For a list of a skills, see "[Currently available skills](/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide#currently-available-skills)".
#### Skillset
A collection of skills in the form of an implementation in {% data variables.product.prodname_copilot_extensions %} that allows developers to connect external services or custom API endpoints to Copilot with minimal complexity. The {% data variables.product.prodname_copilot_extensibility_platform_short %} handles prompt crafting, function evaluation, and response generation. The developer handles only the API call.
#### Tool/Function Calling #### Tool/Function Calling

Просмотреть файл

@ -1,50 +0,0 @@
---
title: Configuring your GitHub App for your Copilot agent
intro: 'Learn how to configure your {% data variables.product.prodname_github_app %} so that it is associated with your {% data variables.product.prodname_copilot_agent_short %}.'
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Configure App for agent
type: how_to
---
{% data reusables.copilot.copilot-extensions.beta-note %}
Once you have configured your server and created your {% data variables.product.prodname_github_app %}, you need to configure your {% data variables.product.prodname_github_app %} for use with your {% data variables.product.prodname_copilot_short %} agent.
## Prerequisites
* You have configured your server to deploy your {% data variables.product.prodname_copilot_agent_short %}, and you have your hostname (aka forwarding endpoint). For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent).
* You have created a {% data variables.product.prodname_github_app %} for your {% data variables.product.prodname_copilot_short %} agent. For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension).
## Configuring your {% data variables.product.prodname_github_app %}
{% data reusables.apps.settings-step %}
{% data reusables.apps.enterprise-apps-steps %}
1. To the right of the {% data variables.product.prodname_github_app %} you want to configure for your {% data variables.product.prodname_copilot_extension_short %}, click **Edit**.
1. In the "Identifying and authorizing users" section, under "Callback URL", enter your server's hostname, then click **Save changes**.
> [!NOTE] This step is only required if you intend to request user authorization (OAuth) during installation.
>
> Your server's hostname is the forwarding endpoint that you copied from your terminal when you configured your server. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent)."
>
> If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. In the left sidebar, click **Permissions & events**.
1. To expand the "Account permissions" section, click anywhere in the section.
1. In the "{% data variables.product.prodname_copilot_chat %}" row, select the **Access:** dropdown menu, then click **Read-only**. Click **Save changes**.
1. In the left sidebar, click **{% data variables.product.prodname_copilot_short %}**.
1. Read the {% data variables.product.prodname_marketplace %} Developer Agreement and the {% data variables.product.github %} Pre-release License Terms, then accept the terms for creating a {% data variables.product.prodname_copilot_extension_short %}.
1. In the "App type" section, select the dropdown menu, then click **Agent**.
1. Under "URL," enter your server's hostname (aka forwarding endpoint) that you copied from your terminal.
> [!NOTE] If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. Under "Inference description", type a brief description of your agent, then click **Save**. This will be the description users see when they hover over your agent's slug in the chat window.
1. Your pre-authorization URL is a link on your website that starts the authorization process for your extension. Users will be redirected to this URL when they decide to authorize your extension. If you are using a pre-authorization URL, under "Pre-authorization URL," enter the URL, then click **Save changes**.
1. In your {% data variables.product.prodname_github_app %} settings, in the left sidebar, click **Install App**, then, next to the account you want to install your app on, click **Install**.
{% data reusables.copilot.go-to-copilot-page %}
1. Invoke your extension by typing `@EXTENSION-NAME`, replacing any spaces in the extension name with `-`, then press `Enter`.
1. If this is your first time using the extension, you will be prompted to authenticate. Follow the steps on screen to authenticate your extension.
1. Ask your extension a question in the chat window. For example, `What is the software development lifecycle?`.

Просмотреть файл

@ -0,0 +1,88 @@
---
title: Configuring your GitHub App for your Copilot extension
intro: 'Learn how to configure your {% data variables.product.prodname_github_app %} so that it is associated with your {% data variables.product.prodname_copilot_extension_short %}.'
defaultTool: agents
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Configure App for extension
type: how_to
redirect_from:
- /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-agent
---
{% data reusables.copilot.copilot-extensions.public-preview-note %}
Once you have configured your server and created your {% data variables.product.prodname_github_app %}, you need to configure your {% data variables.product.prodname_github_app %} for use with your {% data variables.product.prodname_copilot_short %} extension.
## Prerequisites
* You have configured your server to deploy your {% data variables.product.prodname_copilot_extension_short %}, and you have your hostname (aka forwarding endpoint). For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent).
* You have created a {% data variables.product.prodname_github_app %} for your {% data variables.product.prodname_copilot_short %} extension. For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension).
## Configuring your {% data variables.product.prodname_github_app %}
{% agents %}
{% data reusables.apps.settings-step %}
{% data reusables.apps.enterprise-apps-steps %}
1. To the right of the {% data variables.product.prodname_github_app %} you want to configure for your {% data variables.product.prodname_copilot_extension_short %}, click **Edit**.
1. In the "Identifying and authorizing users" section, under "Callback URL", enter your server's hostname, then click **Save changes**.
> [!NOTE] This step is only required if you intend to request user authorization (OAuth) during installation.
>
> Your server's hostname is the forwarding endpoint that you copied from your terminal when you configured your server. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent)."
>
> If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. In the left sidebar, click **Permissions & events**.
1. To expand the "Account permissions" section, click anywhere in the section.
1. In the "{% data variables.product.prodname_copilot_chat %}" row, select the **Access:** dropdown menu, then click **Read-only**. Click **Save changes**.
1. In the left sidebar, click **{% data variables.product.prodname_copilot_short %}**.
1. Read the {% data variables.product.prodname_marketplace %} Developer Agreement and the {% data variables.product.github %} Pre-release License Terms, then accept the terms for creating a {% data variables.product.prodname_copilot_extension_short %}.
1. In the "App type" section, select the dropdown menu, then click **Agent**.
1. Under "URL," enter your server's hostname (aka forwarding endpoint) that you copied from your terminal.
> [!NOTE] If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. Under "Inference description", type a brief description of your agent, then click **Save**. This will be the description users see when they hover over your extension's slug in the chat window.
1. Your pre-authorization URL is a link on your website that starts the authorization process for your extension. Users will be redirected to this URL when they decide to authorize your extension. If you are using a pre-authorization URL, under "Pre-authorization URL," enter the URL, then click **Save changes**.
1. In your {% data variables.product.prodname_github_app %} settings, in the left sidebar, click **Install App**, then, next to the account you want to install your app on, click **Install**.
{% data reusables.copilot.go-to-copilot-page %}
1. Invoke your extension by typing `@EXTENSION-NAME`, replacing any spaces in the extension name with `-`, then press `Enter`.
1. If this is your first time using the extension, you will be prompted to authenticate. Follow the steps on screen to authenticate your extension.
1. Ask your extension a question in the chat window. For example, `What is the software development lifecycle?`.
{% endagents %}
{% skillsets %}
{% data reusables.apps.settings-step %}
{% data reusables.apps.enterprise-apps-steps %}
1. To the right of the {% data variables.product.prodname_github_app %} you want to configure for your {% data variables.product.prodname_copilot_extension_short %}, click **Edit**.
1. In the "Identifying and authorizing users" section, under "Callback URL", enter your server's hostname, then click **Save changes**.
> [!NOTE] This step is only required if you intend to request user authorization (OAuth) during installation.
>
> Your server's hostname is the forwarding endpoint that you copied from your terminal when you configured your server. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent)."
>
> If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. In the left sidebar, click **Permissions & events**.
1. To expand the "Account permissions" section, click anywhere in the section.
1. In the "{% data variables.product.prodname_copilot_chat %}" row, select the **Access:** dropdown menu, then click **Read-only**. Click **Save changes**.
1. In the left sidebar, click **{% data variables.product.prodname_copilot_short %}**.
1. Read the {% data variables.product.prodname_marketplace %} Developer Agreement and the {% data variables.product.github %} Pre-release License Terms, then accept the terms for creating a {% data variables.product.prodname_copilot_extension_short %}.
1. In the "App type" section, select the dropdown menu, then click **Skillset**.
1. Your pre-authorization URL is a link on your website that starts the authorization process for your extension. Users will be redirected to this URL when they decide to authorize your extension. If you are using a pre-authorization URL, under "Pre-authorization URL," enter the URL, then click **Save changes**.
{% data reusables.copilot.copilot-extensions.skillsets-configuration-steps %}
1. In your {% data variables.product.prodname_github_app %} settings, in the left sidebar, click **Install App**, then, next to the account you want to install your app on, click **Install**.
{% data reusables.copilot.go-to-copilot-page %}
1. Invoke your extension by typing `@EXTENSION-NAME`, replacing any spaces in the extension name with `-`, then press `Enter`.
1. If this is your first time using the extension, you will be prompted to authenticate. Follow the steps on screen to authenticate your extension.
1. Ask your extension a question in the chat window. For example, `What is the software development lifecycle?`.
{% endskillsets %}

Просмотреть файл

@ -1,25 +1,26 @@
--- ---
title: Configuring your server to host your Copilot agent title: Configuring your server to host your Copilot extension
intro: 'Learn how to make your {% data variables.product.prodname_copilot_short %} agent accessible to the internet.' intro: 'Learn how to make your {% data variables.product.prodname_copilot_short %} extension accessible to the internet.'
versions: versions:
feature: copilot-extensions feature: copilot-extensions
redirect_from: redirect_from:
- /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent - /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent
- /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-host-your-copilot-agent
topics: topics:
- Copilot - Copilot
shortTitle: Host your agent shortTitle: Host your extension
type: how_to type: how_to
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
Your {% data variables.product.prodname_copilot_agent_short %} must be hosted on a server that is accessible to the internet. In this guide, we will use [ngrok](https://ngrok.com/) to create a tunnel to your local server, but you could also use a service like [localtunnel](https://localtunnel.github.io/www/) or [serveo](https://serveo.net/). Your {% data variables.product.prodname_copilot_extension_short %} must be hosted on a server that is accessible to the internet. In this guide, we will use [ngrok](https://ngrok.com/) to create a tunnel to your local server, but you could also use a service like [localtunnel](https://localtunnel.github.io/www/) or [serveo](https://serveo.net/).
Alternatively, if you are a {% data variables.product.prodname_codespaces %} user, you can use the built-in {% data variables.product.prodname_codespaces %} port forwarding. For more information, see "[AUTOTITLE](/codespaces/developing-in-a-codespace/forwarding-ports-in-your-codespace)." Alternatively, if you are a {% data variables.product.prodname_codespaces %} user, you can use the built-in {% data variables.product.prodname_codespaces %} port forwarding. For more information, see "[AUTOTITLE](/codespaces/developing-in-a-codespace/forwarding-ports-in-your-codespace)."
## Prerequisites ## Prerequisites
* You have created a {% data variables.product.prodname_copilot_agent_short %}. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension)." * You have created a {% data variables.product.prodname_copilot_extension_short %}. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension) or [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension)."
## Configuring your server ## Configuring your server
@ -28,25 +29,25 @@ Alternatively, if you are a {% data variables.product.prodname_codespaces %} use
1. Under "Agents," ensure the correct operating system is selected. 1. Under "Agents," ensure the correct operating system is selected.
1. Under "Installation," follow the instructions for your operating system to download and install ngrok. 1. Under "Installation," follow the instructions for your operating system to download and install ngrok.
1. Under "Deploy your app online," select **Ephemeral domain** or **Static domain**. 1. Under "Deploy your app online," select **Ephemeral domain** or **Static domain**.
1. Run the command provided in your terminal, replacing the port number with the port your agent is configured to run on. For example: 1. Run the command provided in your terminal, replacing the port number with the port your extension is configured to run on. For example:
* For an ephemeral domain: * For an ephemeral domain:
```shell copy ```shell copy
ngrok http http://localhost:AGENT-PORT-NUMBER ngrok http http://localhost:EXTENSION-PORT-NUMBER
``` ```
* For a static domain: * For a static domain:
```shell copy ```shell copy
ngrok http --domain=YOUR-STATIC-DOMAIN.ngrok-free.app AGENT-PORT-NUMBER ngrok http --domain=YOUR-STATIC-DOMAIN.ngrok-free.app EXTENSION-PORT-NUMBER
``` ```
1. In your terminal, next to "Forwarding," copy the URL that ngrok has assigned to your server. You will need this forwarding endpoint when you are configuring your {% data variables.product.prodname_github_app %}. 1. In your terminal, next to "Forwarding," copy the URL that ngrok has assigned to your server. You will need this forwarding endpoint when you are configuring your {% data variables.product.prodname_github_app %}.
> [!NOTE] Do not copy the `-> http://localhost:XXXX` part of the URL. > [!NOTE] Do not copy the `-> http://localhost:XXXX` part of the URL.
> >
> Keep the terminal window open while you are using your agent. > Keep the terminal window open while you are using your extension.
## Next steps ## Next steps

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: Create GitHub App
type: how_to type: how_to
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
A {% data variables.product.prodname_copilot_extension_short %} is a {% data variables.product.prodname_github_app %} that is associated with a {% data variables.product.prodname_copilot_agent_short %}. The {% data variables.product.prodname_github_app %} you associate your {% data variables.product.prodname_copilot_agent_short %} with is used to authenticate the {% data variables.product.prodname_copilot_agent_short %} with {% data variables.product.prodname_dotcom %} and to authorize the {% data variables.product.prodname_copilot_agent_short %} to access the {% data variables.product.prodname_copilot_chat_short %} API. Each {% data variables.product.prodname_copilot_agent_short %} must be associated with a unique {% data variables.product.prodname_github_app %}. A {% data variables.product.prodname_copilot_extension_short %} is a {% data variables.product.prodname_github_app %} that is associated with a {% data variables.product.prodname_copilot_agent_short %}. The {% data variables.product.prodname_github_app %} you associate your {% data variables.product.prodname_copilot_agent_short %} with is used to authenticate the {% data variables.product.prodname_copilot_agent_short %} with {% data variables.product.prodname_dotcom %} and to authorize the {% data variables.product.prodname_copilot_agent_short %} to access the {% data variables.product.prodname_copilot_chat_short %} API. Each {% data variables.product.prodname_copilot_agent_short %} must be associated with a unique {% data variables.product.prodname_github_app %}.

Просмотреть файл

@ -7,7 +7,8 @@ versions:
topics: topics:
- Copilot - Copilot
children: children:
- /configuring-your-server-to-host-your-copilot-agent - /configuring-your-server-to-host-your-copilot-extension
- /creating-a-github-app-for-your-copilot-extension - /creating-a-github-app-for-your-copilot-extension
- /configuring-your-github-app-for-your-copilot-agent - /configuring-your-github-app-for-your-copilot-extension
--- ---

Просмотреть файл

@ -8,7 +8,7 @@ topics:
shortTitle: Debug Copilot Extension shortTitle: Debug Copilot Extension
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
With the debug tool for {% data variables.product.prodname_copilot_extensions_short %}, you can chat with your {% data variables.product.prodname_copilot_agent_short %} from the command line, then view detailed logs as your agent generates a response. You can pass several flags to the tool, with the most important flags being: With the debug tool for {% data variables.product.prodname_copilot_extensions_short %}, you can chat with your {% data variables.product.prodname_copilot_agent_short %} from the command line, then view detailed logs as your agent generates a response. You can pass several flags to the tool, with the most important flags being:
* The `url` flag, which contains the URL to access your {% data variables.product.prodname_copilot_agent_short %}. This is the only required flag to start the tool. * The `url` flag, which contains the URL to access your {% data variables.product.prodname_copilot_agent_short %}. This is the only required flag to start the tool.

Просмотреть файл

@ -8,9 +8,10 @@ topics:
- Copilot - Copilot
children: children:
- /about-building-copilot-extensions - /about-building-copilot-extensions
- /quickstart-for-github-copilot-extensions - /quickstart-for-github-copilot-extensions-using-agents
- /setting-up-copilot-extensions - /setting-up-copilot-extensions
- /building-a-copilot-agent-for-your-copilot-extension - /building-a-copilot-agent-for-your-copilot-extension
- /building-a-copilot-skillset-for-your-copilot-extension
- /creating-a-copilot-extension - /creating-a-copilot-extension
- /debugging-your-github-copilot-extension - /debugging-your-github-copilot-extension
- /managing-the-availability-of-your-copilot-extension - /managing-the-availability-of-your-copilot-extension

Просмотреть файл

@ -9,7 +9,7 @@ shortTitle: Manage Extension availability
type: how_to type: how_to
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
When you build a {% data variables.product.prodname_copilot_extension_short %}, you have two options for the visibility of your {% data variables.product.prodname_github_app %}: When you build a {% data variables.product.prodname_copilot_extension_short %}, you have two options for the visibility of your {% data variables.product.prodname_github_app %}:

Просмотреть файл

@ -1,21 +1,22 @@
--- ---
title: Quickstart for GitHub Copilot Extensions title: Quickstart for GitHub Copilot Extensions using agents
defaultTool: vscode defaultTool: vscode
intro: 'Build and try out {% data variables.product.github %}''s Blackbeard extension to learn about the development process for {% data variables.product.prodname_copilot_extensions %}.' intro: 'Build and try out {% data variables.product.github %}''s Blackbeard extension to learn about the development process for {% data variables.product.prodname_copilot_extensions %}.'
versions: versions:
feature: copilot-extensions feature: copilot-extensions
redirect_from: redirect_from:
- /copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/using-a-demo-agent - /copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/using-a-demo-agent
- /copilot/building-copilot-extensions/quickstart-for-github-copilot-extensions
topics: topics:
- Copilot - Copilot
shortTitle: Extensions quickstart shortTitle: Extensions quickstart
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
The [Blackbeard extension](https://github.com/copilot-extensions/blackbeard-extension) is a {% data variables.product.prodname_copilot_extension %} built with a simple agent that responds to requests like a pirate using {% data variables.product.prodname_copilot_short %}'s large language model (LLM) API and special system prompts. The [Blackbeard extension](https://github.com/copilot-extensions/blackbeard-extension) is a {% data variables.product.prodname_copilot_extension %} built with a simple agent that responds to requests like a pirate using {% data variables.product.prodname_copilot_short %}'s large language model (LLM) API and special system prompts. This guide uses a simple agent implementation, but the process is similar for skillsets.
This quickstart is designed to help you build and chat with the Blackbeard extension as quickly as possible. To instead learn how to create a new {% data variables.product.prodname_copilot_extension %}, see "[AUTOTITLE](/copilot/building-copilot-extensions/setting-up-copilot-extensions)." This quickstart is designed to help you build and chat with the Blackbeard extension as quickly as possible, so you can develop and test your extension without deploying infrastructure. For production, you'll need to host the application for your agent or skillset's endpoints on a publicly accessible server. To instead learn how to create a new {% data variables.product.prodname_copilot_extension %}, see "[AUTOTITLE](/copilot/building-copilot-extensions/setting-up-copilot-extensions)."
## 1. Create and install a {% data variables.product.prodname_github_app %} ## 1. Create and install a {% data variables.product.prodname_github_app %}

Просмотреть файл

@ -1,6 +1,7 @@
--- ---
title: Setting up Copilot Extensions title: Setting up Copilot Extensions
intro: 'Follow these steps to start building {% data variables.product.prodname_copilot_extensions_short %}.' intro: 'Follow these steps to start building {% data variables.product.prodname_copilot_extensions_short %}.'
defaultTool: agents
versions: versions:
feature: copilot-extensions feature: copilot-extensions
topics: topics:
@ -8,10 +9,16 @@ topics:
shortTitle: Set up Copilot Extensions shortTitle: Set up Copilot Extensions
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
This article is designed to help you build an entirely new {% data variables.product.prodname_copilot_extension %}. To instead learn how to quickly build and test a demo {% data variables.product.prodname_copilot_extension_short %} created by {% data variables.product.github %}, see "[AUTOTITLE](/copilot/building-copilot-extensions/quickstart-for-github-copilot-extensions)." This article is designed to help you build an entirely new {% data variables.product.prodname_copilot_extension %}. To instead learn how to quickly build and test a demo {% data variables.product.prodname_copilot_extension_short %} created by {% data variables.product.github %}, see "[AUTOTITLE](/copilot/building-copilot-extensions/quickstart-for-github-copilot-extensions)."
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-1 %}
For more information about skillsets, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/about-copilot-skillsets)."
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-2 %}
{% agents %}
## 1. Learn about {% data variables.product.prodname_copilot_agents_short %} ## 1. Learn about {% data variables.product.prodname_copilot_agents_short %}
{% data variables.product.prodname_copilot_agents_short %} contain the custom code for your {% data variables.product.prodname_copilot_extension_short %}, and integrate with a {% data variables.product.prodname_github_app %} to form the {% data variables.product.prodname_copilot_extension_short %} itself. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/about-copilot-agents)." {% data variables.product.prodname_copilot_agents_short %} contain the custom code for your {% data variables.product.prodname_copilot_extension_short %}, and integrate with a {% data variables.product.prodname_github_app %} to form the {% data variables.product.prodname_copilot_extension_short %} itself. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/about-copilot-agents)."
@ -59,3 +66,43 @@ To learn how to change the visibility of your {% data variables.product.prodname
## Next steps ## Next steps
To learn how to use your {% data variables.product.prodname_copilot_extension_short %}, see "[AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat)." To learn how to use your {% data variables.product.prodname_copilot_extension_short %}, see "[AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat)."
{% endagents %}
{% skillsets %}
## 1. Learn about {% data variables.product.prodname_copilot_skillsets %}
{% data variables.product.prodname_copilot_skillsets %} contain the custom code for your {% data variables.product.prodname_copilot_extension_short %}, and integrate with a {% data variables.product.prodname_github_app %} to form the {% data variables.product.prodname_copilot_extension_short %} itself.
Unlike {% data variables.product.prodname_copilot_agents_short %}, {% data variables.product.prodname_copilot_skillsets_short %} handle the logic behind prompt crafting, function evaluation, and response generation, making them an ideal choice for developers seeking quick and effective integrations with minimal effort. For more information, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/about-copilot-skillsets)."
## 2. Build a {% data variables.product.prodname_copilot_skillset_short %}
To explore an example of a skillset implementation, see the [skillset-example](https://github.com/copilot-extensions/skillset-example) repository in the [`copilot-extensions`](https://github.com/copilot-extensions) organization.
To build a skillset, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/building-copilot-skillsets)."
## 3. Deploy your {% data variables.product.prodname_copilot_skillset_short %}
To make your {% data variables.product.prodname_copilot_skillset_short %} accessible to the {% data variables.product.prodname_copilot_short %} platform and {% data variables.product.github %}, you need to deploy it to a server that is reachable by HTTP request. See "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent)."
## 4. Create a {% data variables.product.prodname_github_app %} and integrate it with your {% data variables.product.prodname_copilot_skillset_short %}
To create a {% data variables.product.prodname_copilot_extension_short %}, you need to create and configure a {% data variables.product.prodname_github_app %}, then integrate it with your {% data variables.product.prodname_copilot_skillset_short %}. See "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension)" and "[AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-agent)."
## 5. Choose the availability of your {% data variables.product.prodname_copilot_skillset_short %}
Choose one of two visibility levels for your {% data variables.product.prodname_copilot_extension_short %}:
* **Public**: Any user or organization account with the installation page link for the extension can install it.
* **Private**: Only the user or organization account that created the extension can install it.
If you make your {% data variables.product.prodname_copilot_extension_short %} public, you can then choose to list it on the {% data variables.product.prodname_marketplace %}.
To learn how to change the visibility of your {% data variables.product.prodname_copilot_extension_short %} and list it on the {% data variables.product.prodname_marketplace %}, see "[AUTOTITLE](/copilot/building-copilot-extensions/managing-the-availability-of-your-copilot-extension)."
## Next steps
To learn how to use your {% data variables.product.prodname_copilot_extension_short %}, see "[AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat)."
{% endskillsets %}

Просмотреть файл

@ -16,7 +16,7 @@ redirect_from:
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/enhancing-copilot-for-your-organization/installing-github-copilot-extensions-for-your-organization - /copilot/managing-copilot/managing-github-copilot-in-your-organization/enhancing-copilot-for-your-organization/installing-github-copilot-extensions-for-your-organization
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
## About {% data variables.product.prodname_copilot_extensions %} for your organization ## About {% data variables.product.prodname_copilot_extensions %} for your organization

Просмотреть файл

@ -12,7 +12,7 @@ redirect_from:
- /copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/installing-github-copilot-extensions-for-your-personal-account - /copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/installing-github-copilot-extensions-for-your-personal-account
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
## About {% data variables.product.prodname_copilot_extensions %} for your personal account ## About {% data variables.product.prodname_copilot_extensions %} for your personal account

Просмотреть файл

@ -61,7 +61,7 @@ You can chat with {% data variables.product.prodname_copilot %} in your IDE to g
### {% data variables.product.prodname_copilot_extensions %} ### {% data variables.product.prodname_copilot_extensions %}
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data variables.product.prodname_copilot_extensions %} integrate external tools with {% data variables.product.prodname_copilot_chat %}, helping members of your enterprise reduce context switching, interact with tools using natural language, and customize their {% data variables.product.prodname_copilot_chat_short %} experience. {% data variables.product.prodname_copilot_extensions %} integrate external tools with {% data variables.product.prodname_copilot_chat %}, helping members of your enterprise reduce context switching, interact with tools using natural language, and customize their {% data variables.product.prodname_copilot_chat_short %} experience.

Просмотреть файл

@ -64,7 +64,7 @@ If an organization member is assigned a seat by multiple organizations with diff
## Setting a policy for {% data variables.product.prodname_copilot_extensions %} in your organization ## Setting a policy for {% data variables.product.prodname_copilot_extensions %} in your organization
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data variables.product.prodname_copilot_extensions %} integrate external tools with {% data variables.product.prodname_copilot_chat %}. See "[AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat)." {% data variables.product.prodname_copilot_extensions %} integrate external tools with {% data variables.product.prodname_copilot_chat %}. See "[AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat)."

Просмотреть файл

@ -67,7 +67,7 @@ Chat participants include:
In addition to the built-in {% data variables.product.prodname_vscode %} chat participants, you can also install {% data variables.product.prodname_copilot_extensions_short %} that provide chat participants. You can install these extensions from [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=apps&copilot_app=true) and from [{% data variables.product.prodname_vscode_marketplace %}](https://marketplace.visualstudio.com/search?target=VSCode&category=Chat&sortBy=Installs). For information about extensions from {% data variables.product.prodname_marketplace %} that provide chat participants, see "[AUTOTITLE](/copilot/github-copilot-chat/github-copilot-extensions/about-github-copilot-extensions)." In addition to the built-in {% data variables.product.prodname_vscode %} chat participants, you can also install {% data variables.product.prodname_copilot_extensions_short %} that provide chat participants. You can install these extensions from [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=apps&copilot_app=true) and from [{% data variables.product.prodname_vscode_marketplace %}](https://marketplace.visualstudio.com/search?target=VSCode&category=Chat&sortBy=Installs). For information about extensions from {% data variables.product.prodname_marketplace %} that provide chat participants, see "[AUTOTITLE](/copilot/github-copilot-chat/github-copilot-extensions/about-github-copilot-extensions)."
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
To see all available chat participants, type `@` in the chat prompt box. To see all available chat participants, type `@` in the chat prompt box.

Просмотреть файл

@ -14,7 +14,7 @@ redirect_from:
- /copilot/github-copilot-chat/github-copilot-extensions - /copilot/github-copilot-chat/github-copilot-extensions
--- ---
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
## About {% data variables.product.prodname_copilot_extensions %} ## About {% data variables.product.prodname_copilot_extensions %}

Просмотреть файл

@ -53,7 +53,7 @@ To see what each header might look like in a webhook payload, see "[Example webh
You can choose to have payloads delivered in JSON format (`application/json`) or as URL-encoded data (`x-www-form-urlencoded`). Following is an example of a webhook POST request that uses the JSON format. You can choose to have payloads delivered in JSON format (`application/json`) or as URL-encoded data (`x-www-form-urlencoded`). Following is an example of a webhook POST request that uses the JSON format.
```shell ```shell
> POST /payload HTTP/2 > POST /payload HTTP/1.1
> X-GitHub-Delivery: 72d3162e-cc78-11e3-81ab-4c9367dc0958{% ifversion ghes %} > X-GitHub-Delivery: 72d3162e-cc78-11e3-81ab-4c9367dc0958{% ifversion ghes %}
> X-GitHub-Enterprise-Version: 2.15.0 > X-GitHub-Enterprise-Version: 2.15.0

Просмотреть файл

@ -0,0 +1,2 @@
Skillsets and agents are the two ways to extend {% data variables.product.prodname_copilot_short %}'s capabilities and context through the {% data variables.product.prodname_copilot_extensibility_platform_short %}. They let you integrate external services and APIs into {% data variables.product.prodname_copilot_chat_short %}, but each one serves different use cases and offers different levels of control and complexity:
* **Skillsets** are lightweight and streamlined, designed for developers who need {% data variables.product.prodname_copilot_short %} to perform specific tasks (e.g., data retrieval or simple operations) with minimal setup. They handle routing, prompt crafting, function evaluation, and response generation automatically, making them ideal for quick and straightforward integrations.

Просмотреть файл

@ -0,0 +1 @@
* **Agents** are for complex integrations that need full control over how requests are processed and responses are generated. They let you implement custom logic, integrate with other LLMs and/or the Copilot API, manage conversation context, and handle all aspects of the user interaction. While Agents require more engineering and maintenance, they offer maximum flexibility for sophisticated workflows. For more information about agents, see "[AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/about-copilot-agents)."

Просмотреть файл

@ -1,4 +1,4 @@
{% data reusables.copilot.copilot-extensions.beta-note %} {% data reusables.copilot.copilot-extensions.public-preview-note %}
{% data variables.product.prodname_copilot_extensions %} integrate the power of external tools into {% data variables.product.prodname_copilot_chat_short %}, helping you reduce context switching and receive responses with domain-specific context. You can install {% data variables.product.prodname_copilot_extensions_short %} from the {% data variables.product.prodname_marketplace %} or build private ones within your organization, then type `@` in a chat window to see a list of your available extensions. To use an extension, select the extension from the list or type the full slug name, then type your prompt. {% data variables.product.prodname_copilot_extensions %} integrate the power of external tools into {% data variables.product.prodname_copilot_chat_short %}, helping you reduce context switching and receive responses with domain-specific context. You can install {% data variables.product.prodname_copilot_extensions_short %} from the {% data variables.product.prodname_marketplace %} or build private ones within your organization, then type `@` in a chat window to see a list of your available extensions. To use an extension, select the extension from the list or type the full slug name, then type your prompt.

Просмотреть файл

@ -0,0 +1,8 @@
1. For each skill you want to add (maximum 5):
1. Click **Add new skill**.
1. Enter a clear **Name** for the skill (e.g., "Generate Lorem Ipsum Data").
1. Write a detailed **Inference description** to help {% data variables.product.prodname_copilot_short %} understand when to use this skill.
1. Add your **API endpoint URL** that will receive the POST requests.
1. In the **Parameter** field, add the JSON schema defining the expected request format.
1. Click **Add Definition** to save your skill.
1. Click **Save** to save your skillset.

Просмотреть файл

@ -285,10 +285,16 @@ prodname_copilot_extensions_short: 'Copilot Extensions'
prodname_copilot_extension_short: 'Copilot Extension' prodname_copilot_extension_short: 'Copilot Extension'
prodname_copilot_extensions_vsc: 'Copilot-enabled Visual Studio Code extensions' prodname_copilot_extensions_vsc: 'Copilot-enabled Visual Studio Code extensions'
prodname_copilot_extension_vsc: 'Copilot-enabled Visual Studio Code extension' prodname_copilot_extension_vsc: 'Copilot-enabled Visual Studio Code extension'
prodname_copilot_extensibility_platform: 'GitHub Copilot Extensibility Platform'
prodname_copilot_extensibility_platform_short: 'Copilot Extensibility Platform'
prodname_copilot_agent: 'GitHub Copilot agent' prodname_copilot_agent: 'GitHub Copilot agent'
prodname_copilot_agent_short: 'Copilot agent' prodname_copilot_agent_short: 'Copilot agent'
prodname_copilot_agents: 'GitHub Copilot agents' prodname_copilot_agents: 'GitHub Copilot agents'
prodname_copilot_agents_short: 'Copilot agents' prodname_copilot_agents_short: 'Copilot agents'
prodname_copilot_skillset: 'Github Copilot skillset'
prodname_copilot_skillset_short: 'Copilot skillset'
prodname_copilot_skillsets: 'Github Copilot skillsets'
prodname_copilot_skillsets_short: 'Copilot skillsets'
prodname_copilot_cli: 'GitHub Copilot in the CLI' prodname_copilot_cli: 'GitHub Copilot in the CLI'
prodname_copilot_cli_short: 'Copilot in the CLI' prodname_copilot_cli_short: 'Copilot in the CLI'
prodname_copilot_for_prs: 'Copilot pull request summaries' prodname_copilot_for_prs: 'Copilot pull request summaries'

Просмотреть файл

@ -31,6 +31,7 @@
"create-acr-token": "tsx src/workflows/acr-create-token.js", "create-acr-token": "tsx src/workflows/acr-create-token.js",
"debug": "cross-env NODE_ENV=development ENABLED_LANGUAGES=en nodemon --inspect src/frame/server.ts", "debug": "cross-env NODE_ENV=development ENABLED_LANGUAGES=en nodemon --inspect src/frame/server.ts",
"delete-orphan-translation-files": "tsx src/workflows/delete-orphan-translation-files.ts", "delete-orphan-translation-files": "tsx src/workflows/delete-orphan-translation-files.ts",
"deleted-assets-pr-comment": "tsx src/assets/scripts/deleted-assets-pr-comment.ts",
"deleted-features-pr-comment": "tsx src/data-directory/scripts/deleted-features-pr-comment.ts", "deleted-features-pr-comment": "tsx src/data-directory/scripts/deleted-features-pr-comment.ts",
"dev": "cross-env npm start", "dev": "cross-env npm start",
"find-orphaned-assets": "tsx src/assets/scripts/find-orphaned-assets.ts", "find-orphaned-assets": "tsx src/assets/scripts/find-orphaned-assets.ts",

Просмотреть файл

@ -3,5 +3,5 @@
"apiOnlyEvents": "This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", "apiOnlyEvents": "This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.",
"apiRequestEvent": "This event is only available via audit log streaming." "apiRequestEvent": "This event is only available via audit log streaming."
}, },
"sha": "bdaa03ca82e58489a9009c05ff02feb6dee01eb9" "sha": "331ad672f7b1e388933dc4491e0f4a539fd58496"
} }

Просмотреть файл

@ -1,5 +1,6 @@
// all the tools available for the Tool Picker // all the tools available for the Tool Picker
export const allTools = { export const allTools = {
agents: 'Agents',
api: 'API', api: 'API',
azure_data_studio: 'Azure Data Studio', azure_data_studio: 'Azure Data Studio',
bash: 'Bash', bash: 'Bash',
@ -11,6 +12,7 @@ export const allTools = {
javascript: 'JavaScript', javascript: 'JavaScript',
jetbrains: 'JetBrains IDEs', jetbrains: 'JetBrains IDEs',
jetbrains_beta: 'JetBrains IDEs (Beta)', jetbrains_beta: 'JetBrains IDEs (Beta)',
skillsets: 'Skillsets',
vimneovim: 'Vim/Neovim', vimneovim: 'Vim/Neovim',
powershell: 'PowerShell', powershell: 'PowerShell',
visualstudio: 'Visual Studio', visualstudio: 'Visual Studio',