diff --git a/content/copilot/how-tos/use-copilot-for-common-tasks/index.md b/content/copilot/how-tos/use-copilot-for-common-tasks/index.md index 45e491ab47..eb572de165 100644 --- a/content/copilot/how-tos/use-copilot-for-common-tasks/index.md +++ b/content/copilot/how-tos/use-copilot-for-common-tasks/index.md @@ -7,7 +7,7 @@ versions: topics: - Copilot children: - - /use-copilot-to-create-issues + - /use-copilot-to-create-or-update-issues - /create-a-pr-summary - /use-copilot-in-the-cli redirect_from: diff --git a/content/copilot/how-tos/use-copilot-for-common-tasks/use-copilot-to-create-issues.md b/content/copilot/how-tos/use-copilot-for-common-tasks/use-copilot-to-create-or-update-issues.md similarity index 79% rename from content/copilot/how-tos/use-copilot-for-common-tasks/use-copilot-to-create-issues.md rename to content/copilot/how-tos/use-copilot-for-common-tasks/use-copilot-to-create-or-update-issues.md index 14009fd2f8..a171765720 100644 --- a/content/copilot/how-tos/use-copilot-for-common-tasks/use-copilot-to-create-issues.md +++ b/content/copilot/how-tos/use-copilot-for-common-tasks/use-copilot-to-create-or-update-issues.md @@ -1,10 +1,10 @@ --- -title: Using GitHub Copilot to create issues -shortTitle: Use Copilot to create 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.' -permissions: 'Anyone with a {% data variables.product.prodname_copilot_short %} license can use {% data variables.product.prodname_copilot_short %} to create issues.
Try {% data variables.product.prodname_copilot_short %} for free {% octicon "link-external" height:16 %}' +title: Using GitHub Copilot to create or update 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. +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.
Try {% data variables.product.prodname_copilot_short %} for free {% octicon "link-external" height:16 %} versions: - feature: copilot + feature: copilot-create-issues topics: - Copilot - Issues @@ -13,17 +13,18 @@ redirect_from: - /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/use-copilot-to-create-issues + - /copilot/how-tos/use-copilot-for-common-tasks/use-copilot-to-create-issues contentType: how-tos -category: +category: - Author and optimize with Copilot --- > [!NOTE] > 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 repository’s 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 repository’s 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 %} @@ -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. -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. {% data variables.product.prodname_copilot_short %} can modify the tree, by unlinking issues or by attaching new drafts. 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` * Add an additional sub-issue 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**. -## 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. 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.` * Add a parent issue to an existing issue: `Create a parent issue for octo-org/octo-repo issue #456.` diff --git a/content/copilot/tutorials/plan-a-project.md b/content/copilot/tutorials/plan-a-project.md index 4711fe23fb..8d462d06e5 100644 --- a/content/copilot/tutorials/plan-a-project.md +++ b/content/copilot/tutorials/plan-a-project.md @@ -53,7 +53,7 @@ With the repository set up, you can use {% data variables.product.prodname_copil ### 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: ```I’m 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 @@ -62,14 +62,14 @@ With the repository set up, you can use {% data variables.product.prodname_copil ## 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. 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. 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". - 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?``` {% 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: 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) @@ -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. -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.``` -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. 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 you’ve generated and refined your project issues, you can assign them ## 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/get-the-best-results) * [AUTOTITLE](/copilot/tutorials/speed-up-development-work) diff --git a/data/features/copilot-create-issues.yml b/data/features/copilot-create-issues.yml new file mode 100644 index 0000000000..3b5d9f0653 --- /dev/null +++ b/data/features/copilot-create-issues.yml @@ -0,0 +1,7 @@ +# Reference: #19182 +# Copilot create issues public beta + +versions: + fpt: '*' + ghec: '*' + ghes: '>= 3.20' diff --git a/src/data-directory/lib/data-schemas/index.ts b/src/data-directory/lib/data-schemas/index.ts index 3b5fd19d24..68753e4726 100644 --- a/src/data-directory/lib/data-schemas/index.ts +++ b/src/data-directory/lib/data-schemas/index.ts @@ -8,6 +8,21 @@ interface DataSchemas { [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 function loadTableSchemas(): DataSchemas { const tablesDir = path.join(process.cwd(), 'data/tables') @@ -22,8 +37,8 @@ function loadTableSchemas(): DataSchemas { const schemaPath = path.join(schemasDir, `${name}.ts`) if (fs.existsSync(schemaPath)) { - // Use relative path from test file for vitest 4.x compatibility with dynamic imports - tableSchemas[`data/tables/${yamlFile}`] = `../lib/data-schemas/tables/${name}.ts` + // Use the resolver for consistent path handling + tableSchemas[`data/tables/${yamlFile}`] = resolveSchemaPath(`tables/${name}.ts`) } } } @@ -32,15 +47,14 @@ function loadTableSchemas(): DataSchemas { } // 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 = { - 'data/features': '../lib/data-schemas/features.ts', - 'data/variables': '../lib/data-schemas/variables.ts', - 'data/learning-tracks': '../lib/data-schemas/learning-tracks.ts', - 'data/release-notes': '../lib/data-schemas/release-notes.ts', - 'data/code-languages.yml': '../lib/data-schemas/code-languages.ts', - 'data/glossaries/candidates.yml': '../lib/data-schemas/glossaries-candidates.ts', - 'data/glossaries/external.yml': '../lib/data-schemas/glossaries-external.ts', + 'data/features': resolveSchemaPath('features.ts'), + 'data/variables': resolveSchemaPath('variables.ts'), + 'data/learning-tracks': resolveSchemaPath('learning-tracks.ts'), + 'data/release-notes': resolveSchemaPath('release-notes.ts'), + 'data/code-languages.yml': resolveSchemaPath('code-languages.ts'), + 'data/glossaries/candidates.yml': resolveSchemaPath('glossaries-candidates.ts'), + 'data/glossaries/external.yml': resolveSchemaPath('glossaries-external.ts'), } // Combine manual registrations with auto-discovered table schemas