1
0
mirror of synced 2025-12-19 18:10:59 -05:00

Update issues with Copilot via Copilot Creates Issues [Public Preview] (#58311)

Co-authored-by: Robert Sese <734194+rsese@users.noreply.github.com>
This commit is contained in:
Vanessa
2025-11-04 10:59:32 +10:00
committed by GitHub
parent a906b4f938
commit 73fdb6ebcb
5 changed files with 63 additions and 31 deletions

View File

@@ -7,7 +7,7 @@ versions:
topics: topics:
- Copilot - Copilot
children: children:
- /use-copilot-to-create-issues - /use-copilot-to-create-or-update-issues
- /create-a-pr-summary - /create-a-pr-summary
- /use-copilot-in-the-cli - /use-copilot-in-the-cli
redirect_from: redirect_from:

View File

@@ -1,10 +1,10 @@
--- ---
title: Using GitHub Copilot to create issues title: Using GitHub Copilot to create or update issues
shortTitle: Use Copilot to create issues shortTitle: Use Copilot to create or update issues
intro: 'Use {% data variables.product.prodname_copilot_short %} to quickly generate structured, high-quality issues from natural language or images, without filling out every field manually.' intro: Use {% data variables.product.prodname_copilot_short %} to quickly generate structured, high-quality issues from natural language or images, without filling out every field manually.
permissions: 'Anyone with a {% data variables.product.prodname_copilot_short %} license can use {% data variables.product.prodname_copilot_short %} to create issues. <br> <a href="https://github.com/copilot?ref_product=copilot&ref_type=engagement&ref_style=button&ref_plan=free" target="_blank" class="btn btn-primary mt-3 mr-3 no-underline"><span>Try {% data variables.product.prodname_copilot_short %} for free</span> {% octicon "link-external" height:16 %}</a>' permissions: Anyone with a {% data variables.product.prodname_copilot_short %} license can use {% data variables.product.prodname_copilot_short %} to create issues or update existing issues. <br> <a href="https://github.com/copilot?ref_product=copilot&ref_type=engagement&ref_style=button&ref_plan=free" target="_blank" class="btn btn-primary mt-3 mr-3 no-underline"><span>Try {% data variables.product.prodname_copilot_short %} for free</span> {% octicon "link-external" height:16 %}</a>
versions: versions:
feature: copilot feature: copilot-create-issues
topics: topics:
- Copilot - Copilot
- Issues - Issues
@@ -13,17 +13,18 @@ redirect_from:
- /copilot/using-github-copilot/using-github-copilot-to-create-issues - /copilot/using-github-copilot/using-github-copilot-to-create-issues
- /copilot/how-tos/github-flow/using-github-copilot-to-create-issues - /copilot/how-tos/github-flow/using-github-copilot-to-create-issues
- /copilot/how-tos/github-flow/use-copilot-to-create-issues - /copilot/how-tos/github-flow/use-copilot-to-create-issues
- /copilot/how-tos/use-copilot-for-common-tasks/use-copilot-to-create-issues
contentType: how-tos contentType: how-tos
category: category:
- Author and optimize with Copilot - Author and optimize with Copilot
--- ---
> [!NOTE] > [!NOTE]
> This feature is in {% data variables.release-phases.public_preview %} and subject to change. > This feature is in {% data variables.release-phases.public_preview %} and subject to change.
Creating issues manually can be repetitive and time-consuming. With {% data variables.product.prodname_copilot_short %}, you can create issues faster by prompting in natural language, or even by uploading a screenshot. {% data variables.product.prodname_copilot_short %} fills out the title, body, labels, assignees, and more, using your repositorys issue forms or templates. Creating or updating issues manually can be repetitive and time-consuming. With {% data variables.product.prodname_copilot_short %}, you can create or update issues faster by prompting in natural language, or even by uploading a screenshot. {% data variables.product.prodname_copilot_short %} fills out the title, body, labels, assignees, and more, using your repositorys issue forms or templates.
You stay in control of the process. You can review and refine what {% data variables.product.prodname_copilot_short %} suggests before you submit the new issue. You stay in control of the process. You can review and refine what {% data variables.product.prodname_copilot_short %} suggests before you submit the new or updated issue.
## Creating an issue with {% data variables.product.prodname_copilot_short %} ## Creating an issue with {% data variables.product.prodname_copilot_short %}
@@ -88,26 +89,36 @@ For example:
{% data variables.product.prodname_copilot_short %} generates a draft issue tree, with a parent issue at the top level and sub-issues beneath it. {% data variables.product.prodname_copilot_short %} generates a draft issue tree, with a parent issue at the top level and sub-issues beneath it.
You can review the issue tree, expand or collapse sub-issues, and edit the details of each issue. You can review the issue tree, expand or collapse sub-issues, and edit the details of each issue.
Click the parent issue to view its details in the workbench. The parent issue displays a list of sub-issues, and you can click each one to view and edit its details in the workbench. From a sub-issue, use the "Parent" dropdown to navigate through the issue tree. You can also click **Review and create** at the top of the workbench to see the full issue tree and navigate directly to any issue. Click the parent issue to view its details in the workbench. The parent issue displays a list of sub-issues, and you can click each one to view and edit its details in the workbench. From a sub-issue, use the "Parent" dropdown to navigate through the issue tree. You can also click **Review and create** at the top of the workbench to see the full issue tree and navigate directly to any issue.
{% data variables.product.prodname_copilot_short %} can modify the tree, by unlinking issues or by attaching new drafts. {% data variables.product.prodname_copilot_short %} can modify the tree, by unlinking issues or by attaching new drafts.
For example, you can: For example, you can:
* Remove a sub-issue from the issue tree: * Remove a sub-issue from the issue tree:
`Remove sub-issue NAME_OF_ISSUE from the issue tree` `Remove sub-issue NAME_OF_ISSUE from the issue tree`
* Add an additional sub-issue to the issue tree: * Add an additional sub-issue to the issue tree:
`Add an additional sub-issue with ISSUE_DETAILS to the issue tree` `Add an additional sub-issue with ISSUE_DETAILS to the issue tree`
Once you've finished editing the drafts and are ready to publish the issues, click **Review and create** then click **Create issues**. Once you've finished editing the drafts and are ready to publish the issues, click **Review and create** then click **Create issues**.
## Working with existing issues ## Updating an existing issue
You can use {% data variables.product.prodname_copilot_short %} to update existing issues in your repository.
For example:
`In octo-org/octo-repo, update issue #123 to add more details about the bug and steps to reproduce it. Also, change the label to "bug" and assign it to @username.`
{% data variables.product.prodname_copilot_short %} drafts the updated issue, which you can review and edit in the workbench. To publish the changes, click **Update**.
## Working with existing parent issues and sub-issues
You can use {% data variables.product.prodname_copilot_short %} to connect new issues with issues that already exist in your repository. You can use {% data variables.product.prodname_copilot_short %} to connect new issues with issues that already exist in your repository.
For example, you can: For example, you can:
* Add a sub-issue to an existing parent issue: * Add a sub-issue to an existing parent issue:
`Create a sub-issue for octo-org/octo-repo issue #456.` `Create a sub-issue for octo-org/octo-repo issue #456.`
* Add a parent issue to an existing issue: * Add a parent issue to an existing issue:
`Create a parent issue for octo-org/octo-repo issue #456.` `Create a parent issue for octo-org/octo-repo issue #456.`

View File

@@ -53,7 +53,7 @@ With the repository set up, you can use {% data variables.product.prodname_copil
### Create an epic issue ### Create an epic issue
1. Enter a detailed project description as your prompt. For example: 1. Enter a detailed project description as your prompt. For example:
```Im planning to create a shopping website in React and Node.js. The site should allow users to browse products by category, search for items, add products to a cart, and complete checkout. Please help me plan the project by creating issues and breaking it down into epics, features, and tasks.``` ```Im planning to create a shopping website in React and Node.js. The site should allow users to browse products by category, search for items, add products to a cart, and complete checkout. Please help me plan the project by creating issues and breaking it down into epics, features, and tasks.```
1. Submit your prompt. {% data variables.product.prodname_copilot_short %} will generate an issue tree, typically with an epic at the top and sub-issues for each main feature or task 1. Submit your prompt. {% data variables.product.prodname_copilot_short %} will generate an issue tree, typically with an epic at the top and sub-issues for each main feature or task
@@ -62,14 +62,14 @@ With the repository set up, you can use {% data variables.product.prodname_copil
## Navigate the issue tree ## Navigate the issue tree
1. Click the epic to view its details in the workbench. Navigate through the workbench to explore the issue tree. 1. Click the epic to view its details in the workbench. Navigate through the workbench to explore the issue tree.
1. Each issue typically includes a title and description. Additional metadata such as labels or assignees, can be edited directly in the workbench. 1. Each issue typically includes a title and description. Additional metadata such as labels or assignees, can be edited directly in the workbench.
1. You can expand or collapse sub-issues to focus on specific parts of the project. 1. You can expand or collapse sub-issues to focus on specific parts of the project.
The issue tree provides a clear overview of your project structure, making it easy to navigate between epics, features, and tasks. The issue tree provides a clear overview of your project structure, making it easy to navigate between epics, features, and tasks.
1. In this first iteration of the draft, {% data variables.product.prodname_copilot_short %} may generate only high-level issues. You can refine these issues further by breaking them down into smaller tasks or features. Let's refine the issue "Feature: UI Skeleton and Navigation". 1. In this first iteration of the draft, {% data variables.product.prodname_copilot_short %} may generate only high-level issues. You can refine these issues further by breaking them down into smaller tasks or features. Let's refine the issue "Feature: UI Skeleton and Navigation".
Prompt {% data variables.product.prodname_copilot_short %} with: Prompt {% data variables.product.prodname_copilot_short %} with:
```Can you break down the issue "Feature: UI Skeleton and Navigation" into smaller tasks?``` ```Can you break down the issue "Feature: UI Skeleton and Navigation" into smaller tasks?```
{% data variables.product.prodname_copilot_short %} will generate multiple new sub-issues such as: {% data variables.product.prodname_copilot_short %} will generate multiple new sub-issues such as:
@@ -79,7 +79,7 @@ With the repository set up, you can use {% data variables.product.prodname_copil
* Task: Integrate navigation with routing * Task: Integrate navigation with routing
* Task: Add basic responsive layout * Task: Add basic responsive layout
1. Repeat this process for the remaining feature issues in the epic. 1. Repeat this process for the remaining feature issues in the epic.
![Screenshot of the Copilot Chat workbench. The workbench displays an issue tree with an epic at the top and several sub-issues beneath it.](/assets/images/help/copilot/copilot-creates-sub-issues-workbench.png) ![Screenshot of the Copilot Chat workbench. The workbench displays an issue tree with an epic at the top and several sub-issues beneath it.](/assets/images/help/copilot/copilot-creates-sub-issues-workbench.png)
@@ -87,12 +87,12 @@ With the repository set up, you can use {% data variables.product.prodname_copil
After you finish generating the issue tree you may notice that {% data variables.product.prodname_copilot_short %}s issue descriptions may be brief or unclear. To make them actionable, refine each issue as needed. After you finish generating the issue tree you may notice that {% data variables.product.prodname_copilot_short %}s issue descriptions may be brief or unclear. To make them actionable, refine each issue as needed.
1. Start with the newly generated issue such as "Task: Create placeholder pages for main routes". 1. Start with the newly generated issue such as "Task: Create placeholder pages for main routes".
Prompt {% data variables.product.prodname_copilot_short %} with: Prompt {% data variables.product.prodname_copilot_short %} with:
```Can you improve the description for “Task: Create placeholder pages for main routes”? Please provide a detailed technical summary, list the main routes to be included, outline the steps for implementation, and specify what should be delivered for this task. Please add any relevant code snippets.``` ```Can you improve the description for “Task: Create placeholder pages for main routes”? Please provide a detailed technical summary, list the main routes to be included, outline the steps for implementation, and specify what should be delivered for this task. Please add any relevant code snippets.```
1. {% data variables.product.prodname_copilot_short %} will generate a new version of the draft issue "Task: Create placeholder pages for main routes." 1. {% data variables.product.prodname_copilot_short %} will generate a new version of the draft issue "Task: Create placeholder pages for main routes."
At the top-left of the issue, click the versioning drop-down and select **Version 2** to review the new changes. At the top-left of the issue, click the versioning drop-down and select **Version 2** to review the new changes.
1. Review and decide whether to keep {% data variables.product.prodname_copilot_short %}s revised version, edit further, or prompt again for more detail. {% data variables.product.prodname_copilot_short %} can add code snippets into the draft to improve clarity and provide immediate context for these issues. 1. Review and decide whether to keep {% data variables.product.prodname_copilot_short %}s revised version, edit further, or prompt again for more detail. {% data variables.product.prodname_copilot_short %} can add code snippets into the draft to improve clarity and provide immediate context for these issues.
@@ -112,7 +112,7 @@ Now that youve generated and refined your project issues, you can assign them
## Further reading ## Further reading
* [AUTOTITLE](/copilot/how-tos/use-copilot-for-common-tasks/use-copilot-to-create-issues) * [AUTOTITLE](/copilot/how-tos/use-copilot-for-common-tasks/use-copilot-to-create-or-update-issues)
* [AUTOTITLE](/copilot/tutorials/coding-agent/pilot-coding-agent) * [AUTOTITLE](/copilot/tutorials/coding-agent/pilot-coding-agent)
* [AUTOTITLE](/copilot/tutorials/coding-agent/get-the-best-results) * [AUTOTITLE](/copilot/tutorials/coding-agent/get-the-best-results)
* [AUTOTITLE](/copilot/tutorials/speed-up-development-work) * [AUTOTITLE](/copilot/tutorials/speed-up-development-work)

View File

@@ -0,0 +1,7 @@
# Reference: #19182
# Copilot create issues public beta
versions:
fpt: '*'
ghec: '*'
ghes: '>= 3.20'

View File

@@ -8,6 +8,21 @@ interface DataSchemas {
[key: string]: string [key: string]: string
} }
// Helper function to resolve schema paths based on runtime context
function resolveSchemaPath(filename: string): string {
// Check if we're in a test context
const isTest = process.env.NODE_ENV === 'test'
if (isTest) {
// Use relative paths that work for vitest and 4.x compatibility with
// dynamic imports in particular
return `../lib/data-schemas/${filename}`
} else {
// Use absolute paths that work for content linter and other contexts
return `@/data-directory/lib/data-schemas/${filename}`
}
}
// Auto-discover table schemas from data/tables/ directory // Auto-discover table schemas from data/tables/ directory
function loadTableSchemas(): DataSchemas { function loadTableSchemas(): DataSchemas {
const tablesDir = path.join(process.cwd(), 'data/tables') const tablesDir = path.join(process.cwd(), 'data/tables')
@@ -22,8 +37,8 @@ function loadTableSchemas(): DataSchemas {
const schemaPath = path.join(schemasDir, `${name}.ts`) const schemaPath = path.join(schemasDir, `${name}.ts`)
if (fs.existsSync(schemaPath)) { if (fs.existsSync(schemaPath)) {
// Use relative path from test file for vitest 4.x compatibility with dynamic imports // Use the resolver for consistent path handling
tableSchemas[`data/tables/${yamlFile}`] = `../lib/data-schemas/tables/${name}.ts` tableSchemas[`data/tables/${yamlFile}`] = resolveSchemaPath(`tables/${name}.ts`)
} }
} }
} }
@@ -32,15 +47,14 @@ function loadTableSchemas(): DataSchemas {
} }
// Manual schema registrations for non-table data // Manual schema registrations for non-table data
// Use relative paths from the test file for vitest 4.x compatibility with dynamic imports
const manualSchemas: DataSchemas = { const manualSchemas: DataSchemas = {
'data/features': '../lib/data-schemas/features.ts', 'data/features': resolveSchemaPath('features.ts'),
'data/variables': '../lib/data-schemas/variables.ts', 'data/variables': resolveSchemaPath('variables.ts'),
'data/learning-tracks': '../lib/data-schemas/learning-tracks.ts', 'data/learning-tracks': resolveSchemaPath('learning-tracks.ts'),
'data/release-notes': '../lib/data-schemas/release-notes.ts', 'data/release-notes': resolveSchemaPath('release-notes.ts'),
'data/code-languages.yml': '../lib/data-schemas/code-languages.ts', 'data/code-languages.yml': resolveSchemaPath('code-languages.ts'),
'data/glossaries/candidates.yml': '../lib/data-schemas/glossaries-candidates.ts', 'data/glossaries/candidates.yml': resolveSchemaPath('glossaries-candidates.ts'),
'data/glossaries/external.yml': '../lib/data-schemas/glossaries-external.ts', 'data/glossaries/external.yml': resolveSchemaPath('glossaries-external.ts'),
} }
// Combine manual registrations with auto-discovered table schemas // Combine manual registrations with auto-discovered table schemas