зеркало из https://github.com/github/docs.git
Коммит
455788234a
|
@ -9,6 +9,7 @@ on:
|
|||
paths:
|
||||
- 'contributing/content-*.md'
|
||||
- 'content/contributing/**.md'
|
||||
- .github/workflows/codeowners-content-systems.yml
|
||||
|
||||
jobs:
|
||||
codeowners-content-systems:
|
||||
|
|
|
@ -25,6 +25,7 @@ on:
|
|||
- '.github/**'
|
||||
- '**Dockerfile'
|
||||
- 'package*.json'
|
||||
- .github/workflows/codeowners-docs-engineering.yml
|
||||
|
||||
jobs:
|
||||
codeowners-docs-engineering:
|
||||
|
|
|
@ -15,6 +15,7 @@ on:
|
|||
- synchronize
|
||||
paths:
|
||||
- 'content/**'
|
||||
- .github/workflows/codeowners-legal.yml
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
|
|
@ -8,6 +8,7 @@ on:
|
|||
- opened
|
||||
paths:
|
||||
- data/release-notes/enterprise-server/**
|
||||
- .github/workflows/comment-release-note-info.yml
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
|
|
@ -17,6 +17,7 @@ on:
|
|||
- main
|
||||
paths:
|
||||
- 'assets/**'
|
||||
- '.github/workflows/dont-delete-assets.yml'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
@ -37,7 +38,7 @@ jobs:
|
|||
id: comment
|
||||
env:
|
||||
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
|
||||
if: ${{ steps.comment.outputs.markdown != '' }}
|
||||
|
|
|
@ -17,6 +17,7 @@ on:
|
|||
- main
|
||||
paths:
|
||||
- 'data/features/**'
|
||||
- .github/workflows/dont-delete-features.yml
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
|
|
@ -9,6 +9,7 @@ on:
|
|||
types:
|
||||
- opened
|
||||
paths:
|
||||
- .github/workflows/hubber-contribution-help.yml
|
||||
- 'content/**'
|
||||
- 'data/**'
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ on:
|
|||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/orphaned-assets-check.yml
|
||||
- .github/workflows/orphaned-files-check.yml
|
||||
# In case any of the dependencies affect the script
|
||||
- 'package*.json'
|
||||
- src/assets/scripts/find-orphaned-assets.js
|
||||
|
@ -96,7 +97,7 @@ jobs:
|
|||
The first responder should just spot-check some of the unused assets
|
||||
to make sure they aren't referenced anywhere
|
||||
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).
|
||||
EOM
|
||||
)
|
||||
|
|
|
@ -14,6 +14,7 @@ on:
|
|||
- closed
|
||||
paths:
|
||||
- 'content/site-policy/**'
|
||||
- '.github/workflows/site-policy-sync.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
|
|
|
@ -14,6 +14,7 @@ on:
|
|||
- main
|
||||
paths:
|
||||
- 'content/**'
|
||||
- .github/workflows/test-changed-content.yml
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
|
|
@ -9,6 +9,7 @@ on:
|
|||
pull_request:
|
||||
paths:
|
||||
- 'assets/**'
|
||||
- '.github/workflows/validate-asset-images.yml'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
@ -24,4 +25,4 @@ jobs:
|
|||
- uses: ./.github/actions/node-npm-setup
|
||||
|
||||
- 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 reusables.copilot.copilot-extensions.beta-note %}
|
||||
{% data reusables.copilot.copilot-extensions.public-preview-note %}
|
||||
|
||||
{% 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
|
||||
- /preventing-overspending
|
||||
- /managing-your-payment-and-billing-information
|
||||
- /automating-usage-reporting
|
||||
- /about-billing-for-git-large-file-storage
|
||||
---
|
||||
|
|
|
@ -164,11 +164,11 @@ import (
|
|||
)
|
||||
|
||||
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
|
||||
req, err := http.NewRequest("GET", "https://api.github.com/meta/public_keys/secret_scanning", nil)
|
||||
|
@ -284,14 +284,14 @@ require 'json'
|
|||
require 'base64'
|
||||
|
||||
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
|
||||
|
||||
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')
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ shortTitle: About building Extensions
|
|||
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 %}
|
||||
|
||||
|
@ -45,6 +45,12 @@ type: overview
|
|||
* 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
|
||||
|
||||
### 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 %}
|
||||
|
||||
{% 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
|
||||
---
|
||||
|
||||
{% 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.
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ shortTitle: Communicate with GitHub
|
|||
type: reference
|
||||
---
|
||||
|
||||
{% data reusables.copilot.copilot-extensions.beta-note %}
|
||||
{% data reusables.copilot.copilot-extensions.public-preview-note %}
|
||||
|
||||
## Prerequisites
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ type: reference
|
|||
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.
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ type: reference
|
|||
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)
|
||||
|
||||
|
|
|
@ -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 user’s intent. Each skill’s inference description helps the platform determine which skill to call.
|
||||
|
||||
1. **Dynamic Prompt Crafting**
|
||||
{% data variables.product.prodname_copilot %} generates a prompt using:
|
||||
* The user’s 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 user’s 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 %}**: You’ll need a {% data variables.product.prodname_github_app %} to act as the container for your skillset. If you haven’t 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
|
||||
---
|
||||
|
||||
{% 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.
|
||||
|
||||
|
@ -55,7 +55,11 @@ An extension that is visible and installable by any {% data variables.product.co
|
|||
|
||||
#### Skill
|
||||
|
||||
A piece of code that retrieves context or executes an action in response to a user’s prompt (e.g., "findIssueByID(id: number)").
|
||||
A piece of code that retrieves context or executes an action in response to a user’s 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
|
||||
|
||||
|
|
|
@ -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
|
||||
intro: 'Learn how to make your {% data variables.product.prodname_copilot_short %} agent accessible to the internet.'
|
||||
title: Configuring your server to host your Copilot extension
|
||||
intro: 'Learn how to make your {% data variables.product.prodname_copilot_short %} extension accessible to the internet.'
|
||||
versions:
|
||||
feature: copilot-extensions
|
||||
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-host-your-copilot-agent
|
||||
topics:
|
||||
- Copilot
|
||||
shortTitle: Host your agent
|
||||
shortTitle: Host your extension
|
||||
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)."
|
||||
|
||||
## 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
|
||||
|
||||
|
@ -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 "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. 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:
|
||||
|
||||
```shell copy
|
||||
ngrok http http://localhost:AGENT-PORT-NUMBER
|
||||
ngrok http http://localhost:EXTENSION-PORT-NUMBER
|
||||
```
|
||||
|
||||
* For a static domain:
|
||||
|
||||
```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 %}.
|
||||
|
||||
> [!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
|
||||
|
|
@ -9,7 +9,7 @@ shortTitle: Create GitHub App
|
|||
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 %}.
|
||||
|
||||
|
|
|
@ -7,7 +7,8 @@ versions:
|
|||
topics:
|
||||
- Copilot
|
||||
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
|
||||
- /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
|
||||
---
|
||||
|
||||
{% 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:
|
||||
* 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
|
||||
children:
|
||||
- /about-building-copilot-extensions
|
||||
- /quickstart-for-github-copilot-extensions
|
||||
- /quickstart-for-github-copilot-extensions-using-agents
|
||||
- /setting-up-copilot-extensions
|
||||
- /building-a-copilot-agent-for-your-copilot-extension
|
||||
- /building-a-copilot-skillset-for-your-copilot-extension
|
||||
- /creating-a-copilot-extension
|
||||
- /debugging-your-github-copilot-extension
|
||||
- /managing-the-availability-of-your-copilot-extension
|
||||
|
|
|
@ -9,7 +9,7 @@ shortTitle: Manage Extension availability
|
|||
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 %}:
|
||||
|
||||
|
|
|
@ -1,21 +1,22 @@
|
|||
---
|
||||
title: Quickstart for GitHub Copilot Extensions
|
||||
title: Quickstart for GitHub Copilot Extensions using agents
|
||||
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 %}.'
|
||||
versions:
|
||||
feature: copilot-extensions
|
||||
redirect_from:
|
||||
- /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:
|
||||
- Copilot
|
||||
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,6 +1,7 @@
|
|||
---
|
||||
title: Setting up Copilot Extensions
|
||||
intro: 'Follow these steps to start building {% data variables.product.prodname_copilot_extensions_short %}.'
|
||||
defaultTool: agents
|
||||
versions:
|
||||
feature: copilot-extensions
|
||||
topics:
|
||||
|
@ -8,10 +9,16 @@ topics:
|
|||
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)."
|
||||
|
||||
{% 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 %}
|
||||
|
||||
{% 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
|
||||
|
||||
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
|
||||
---
|
||||
|
||||
{% 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
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ redirect_from:
|
|||
- /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
|
||||
|
||||
|
|
|
@ -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 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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
{% 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)."
|
||||
|
||||
|
|
|
@ -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)."
|
||||
|
||||
{% 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.
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ redirect_from:
|
|||
- /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 %}
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
```shell
|
||||
> POST /payload HTTP/2
|
||||
> POST /payload HTTP/1.1
|
||||
|
||||
> X-GitHub-Delivery: 72d3162e-cc78-11e3-81ab-4c9367dc0958{% ifversion ghes %}
|
||||
> 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.
|
||||
|
||||
|
|
|
@ -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_extensions_vsc: 'Copilot-enabled Visual Studio Code extensions'
|
||||
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_short: 'Copilot agent'
|
||||
prodname_copilot_agents: 'GitHub 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_short: 'Copilot in the CLI'
|
||||
prodname_copilot_for_prs: 'Copilot pull request summaries'
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
"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",
|
||||
"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",
|
||||
"dev": "cross-env npm start",
|
||||
"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.",
|
||||
"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
|
||||
export const allTools = {
|
||||
agents: 'Agents',
|
||||
api: 'API',
|
||||
azure_data_studio: 'Azure Data Studio',
|
||||
bash: 'Bash',
|
||||
|
@ -11,6 +12,7 @@ export const allTools = {
|
|||
javascript: 'JavaScript',
|
||||
jetbrains: 'JetBrains IDEs',
|
||||
jetbrains_beta: 'JetBrains IDEs (Beta)',
|
||||
skillsets: 'Skillsets',
|
||||
vimneovim: 'Vim/Neovim',
|
||||
powershell: 'PowerShell',
|
||||
visualstudio: 'Visual Studio',
|
||||
|
|
Загрузка…
Ссылка в новой задаче