add issue template and additional labeling (#3006)

This commit is contained in:
Eduard van Valkenburg
2026-01-05 02:32:33 +01:00
committed by GitHub
Unverified
parent 8b4f7d5e29
commit 577ad4b838
3 changed files with 261 additions and 11 deletions
+8
View File
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Documentation
url: https://aka.ms/agent-framework
about: Check out the official documentation for guides and API reference.
- name: Discussions
url: https://github.com/microsoft/agent-framework/discussions
about: Ask questions and share ideas in GitHub Discussions.
+203
View File
@@ -0,0 +1,203 @@
name: Issue Report
description: Report a bug, request a feature, or ask a question about Microsoft Agent Framework
title: "[Issue]: "
labels: ["triage"]
body:
- type: dropdown
id: language
attributes:
label: Language
description: Which language/SDK are you using?
options:
- .NET
- Python
- None / Not Applicable
validations:
required: true
- type: dropdown
id: issue-type
attributes:
label: Type of Issue
description: What type of issue is this?
options:
- Bug
- Feature Request
- Question
validations:
required: true
- type: markdown
attributes:
value: |
## Version Information
Please provide the version of the package(s) you are using. Select the relevant packages below.
- type: markdown
attributes:
value: "### .NET Packages"
- type: input
id: dotnet-agents-ai
attributes:
label: Microsoft.Agents.AI
description: Version of Microsoft.Agents.AI (e.g., 1.0.0)
placeholder: "e.g., 1.0.0"
validations:
required: false
- type: input
id: dotnet-agents-ai-abstractions
attributes:
label: Microsoft.Agents.AI.Abstractions
description: Version of Microsoft.Agents.AI.Abstractions
placeholder: "e.g., 1.0.0"
validations:
required: false
- type: input
id: dotnet-agents-ai-openai
attributes:
label: Microsoft.Agents.AI.OpenAI
description: Version of Microsoft.Agents.AI.OpenAI
placeholder: "e.g., 1.0.0"
validations:
required: false
- type: input
id: dotnet-agents-ai-azureai
attributes:
label: Microsoft.Agents.AI.AzureAI
description: Version of Microsoft.Agents.AI.AzureAI
placeholder: "e.g., 1.0.0"
validations:
required: false
- type: input
id: dotnet-agents-ai-anthropic
attributes:
label: Microsoft.Agents.AI.Anthropic
description: Version of Microsoft.Agents.AI.Anthropic
placeholder: "e.g., 1.0.0"
validations:
required: false
- type: input
id: dotnet-agents-ai-hosting
attributes:
label: Microsoft.Agents.AI.Hosting
description: Version of Microsoft.Agents.AI.Hosting
placeholder: "e.g., 1.0.0"
validations:
required: false
- type: input
id: dotnet-agents-ai-workflows
attributes:
label: Microsoft.Agents.AI.Workflows
description: Version of Microsoft.Agents.AI.Workflows
placeholder: "e.g., 1.0.0"
validations:
required: false
- type: input
id: dotnet-other-packages
attributes:
label: Other .NET Packages
description: List any other Microsoft.Agents.* packages and versions you are using
placeholder: "e.g., Microsoft.Agents.AI.CopilotStudio: 1.0.0, Microsoft.Agents.AI.Purview: 1.0.0"
validations:
required: false
- type: markdown
attributes:
value: "### Python Packages"
- type: input
id: python-core
attributes:
label: agent-framework-core
description: Version of agent-framework-core
placeholder: "e.g., 1.0.0b1"
validations:
required: false
- type: input
id: python-azure-ai
attributes:
label: agent-framework-azure-ai
description: Version of agent-framework-azure-ai
placeholder: "e.g., 1.0.0b1"
validations:
required: false
- type: input
id: python-anthropic
attributes:
label: agent-framework-anthropic
description: Version of agent-framework-anthropic
placeholder: "e.g., 1.0.0b1"
validations:
required: false
- type: input
id: python-azurefunctions
attributes:
label: agent-framework-azurefunctions
description: Version of agent-framework-azurefunctions
placeholder: "e.g., 1.0.0b1"
validations:
required: false
- type: input
id: python-other-packages
attributes:
label: Other Python Packages
description: List any other agent-framework-* packages and versions you are using
placeholder: "e.g., agent-framework-mem0: 1.0.0b1, agent-framework-redis: 1.0.0b1"
validations:
required: false
- type: markdown
attributes:
value: "---"
- type: textarea
id: description
attributes:
label: Description
description: Please provide a clear and detailed description of the issue, feature request, or question.
placeholder: |
For bugs: Describe what happened, what you expected to happen, and steps to reproduce.
For features: Describe the feature you'd like and why it would be useful.
For questions: Describe what you're trying to accomplish.
validations:
required: true
- type: textarea
id: code-sample
attributes:
label: Code Sample
description: If applicable, provide a minimal code sample that demonstrates the issue or your use case.
placeholder: |
```python
# Your code here
```
or
```csharp
// Your code here
```
render: markdown
validations:
required: false
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Add any other context, screenshots, error messages, or stack traces that might be helpful.
placeholder: "Any additional information..."
validations:
required: false
+50 -11
View File
@@ -45,19 +45,58 @@ jobs:
labels.push("triage")
}
// Check if the body or the title contains the word 'python' (case-insensitive)
if ((body != null && body.match(/python/i)) || (title != null && title.match(/python/i))) {
// Add the 'python' label to the array
labels.push("python")
// Helper function to extract field value from issue form body
// Issue forms format fields as: ### Field Name\n\nValue
function getFormFieldValue(body, fieldName) {
if (!body) return null
const regex = new RegExp(`###\\s*${fieldName}\\s*\\n\\n([^\\n#]+)`, 'i')
const match = body.match(regex)
return match ? match[1].trim() : null
}
// Check if the body or the title contains the words 'dotnet', '.net', 'c#' or 'csharp' (case-insensitive)
if ((body != null && body.match(/.net/i)) || (title != null && title.match(/.net/i)) ||
(body != null && body.match(/dotnet/i)) || (title != null && title.match(/dotnet/i)) ||
(body != null && body.match(/C#/i)) || (title != null && title.match(/C#/i)) ||
(body != null && body.match(/csharp/i)) || (title != null && title.match(/csharp/i))) {
// Add the '.NET' label to the array
labels.push(".NET")
// Check for language from issue form dropdown first
const languageField = getFormFieldValue(body, 'Language')
let languageLabelAdded = false
if (languageField) {
if (languageField === 'Python') {
labels.push("python")
languageLabelAdded = true
} else if (languageField === '.NET') {
labels.push(".NET")
languageLabelAdded = true
}
// 'None / Not Applicable' - don't add any language label
}
// Fallback: Check if the body or the title contains the word 'python' (case-insensitive)
// Only if language wasn't already determined from the form field
if (!languageLabelAdded) {
if ((body != null && body.match(/python/i)) || (title != null && title.match(/python/i))) {
// Add the 'python' label to the array
labels.push("python")
}
// Check if the body or the title contains the words 'dotnet', '.net', 'c#' or 'csharp' (case-insensitive)
if ((body != null && body.match(/\.net/i)) || (title != null && title.match(/\.net/i)) ||
(body != null && body.match(/dotnet/i)) || (title != null && title.match(/dotnet/i)) ||
(body != null && body.match(/C#/i)) || (title != null && title.match(/C#/i)) ||
(body != null && body.match(/csharp/i)) || (title != null && title.match(/csharp/i))) {
// Add the '.NET' label to the array
labels.push(".NET")
}
}
// Check for issue type from issue form dropdown
const issueTypeField = getFormFieldValue(body, 'Type of Issue')
if (issueTypeField) {
if (issueTypeField === 'Bug') {
labels.push("bug")
} else if (issueTypeField === 'Feature Request') {
labels.push("enhancement")
} else if (issueTypeField === 'Question') {
labels.push("question")
}
}
// Add the labels to the issue (only if there are labels to add)