Skip to content

Commit 577ad4b

Browse files
add issue template and additional labeling (#3006)
1 parent 8b4f7d5 commit 577ad4b

File tree

3 files changed

+261
-11
lines changed

3 files changed

+261
-11
lines changed

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Documentation
4+
url: https://aka.ms/agent-framework
5+
about: Check out the official documentation for guides and API reference.
6+
- name: Discussions
7+
url: https://github.com/microsoft/agent-framework/discussions
8+
about: Ask questions and share ideas in GitHub Discussions.

.github/ISSUE_TEMPLATE/issue.yml

Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
name: Issue Report
2+
description: Report a bug, request a feature, or ask a question about Microsoft Agent Framework
3+
title: "[Issue]: "
4+
labels: ["triage"]
5+
body:
6+
- type: dropdown
7+
id: language
8+
attributes:
9+
label: Language
10+
description: Which language/SDK are you using?
11+
options:
12+
- .NET
13+
- Python
14+
- None / Not Applicable
15+
validations:
16+
required: true
17+
18+
- type: dropdown
19+
id: issue-type
20+
attributes:
21+
label: Type of Issue
22+
description: What type of issue is this?
23+
options:
24+
- Bug
25+
- Feature Request
26+
- Question
27+
validations:
28+
required: true
29+
30+
- type: markdown
31+
attributes:
32+
value: |
33+
## Version Information
34+
Please provide the version of the package(s) you are using. Select the relevant packages below.
35+
36+
- type: markdown
37+
attributes:
38+
value: "### .NET Packages"
39+
40+
- type: input
41+
id: dotnet-agents-ai
42+
attributes:
43+
label: Microsoft.Agents.AI
44+
description: Version of Microsoft.Agents.AI (e.g., 1.0.0)
45+
placeholder: "e.g., 1.0.0"
46+
validations:
47+
required: false
48+
49+
- type: input
50+
id: dotnet-agents-ai-abstractions
51+
attributes:
52+
label: Microsoft.Agents.AI.Abstractions
53+
description: Version of Microsoft.Agents.AI.Abstractions
54+
placeholder: "e.g., 1.0.0"
55+
validations:
56+
required: false
57+
58+
- type: input
59+
id: dotnet-agents-ai-openai
60+
attributes:
61+
label: Microsoft.Agents.AI.OpenAI
62+
description: Version of Microsoft.Agents.AI.OpenAI
63+
placeholder: "e.g., 1.0.0"
64+
validations:
65+
required: false
66+
67+
- type: input
68+
id: dotnet-agents-ai-azureai
69+
attributes:
70+
label: Microsoft.Agents.AI.AzureAI
71+
description: Version of Microsoft.Agents.AI.AzureAI
72+
placeholder: "e.g., 1.0.0"
73+
validations:
74+
required: false
75+
76+
- type: input
77+
id: dotnet-agents-ai-anthropic
78+
attributes:
79+
label: Microsoft.Agents.AI.Anthropic
80+
description: Version of Microsoft.Agents.AI.Anthropic
81+
placeholder: "e.g., 1.0.0"
82+
validations:
83+
required: false
84+
85+
- type: input
86+
id: dotnet-agents-ai-hosting
87+
attributes:
88+
label: Microsoft.Agents.AI.Hosting
89+
description: Version of Microsoft.Agents.AI.Hosting
90+
placeholder: "e.g., 1.0.0"
91+
validations:
92+
required: false
93+
94+
- type: input
95+
id: dotnet-agents-ai-workflows
96+
attributes:
97+
label: Microsoft.Agents.AI.Workflows
98+
description: Version of Microsoft.Agents.AI.Workflows
99+
placeholder: "e.g., 1.0.0"
100+
validations:
101+
required: false
102+
103+
- type: input
104+
id: dotnet-other-packages
105+
attributes:
106+
label: Other .NET Packages
107+
description: List any other Microsoft.Agents.* packages and versions you are using
108+
placeholder: "e.g., Microsoft.Agents.AI.CopilotStudio: 1.0.0, Microsoft.Agents.AI.Purview: 1.0.0"
109+
validations:
110+
required: false
111+
112+
- type: markdown
113+
attributes:
114+
value: "### Python Packages"
115+
116+
- type: input
117+
id: python-core
118+
attributes:
119+
label: agent-framework-core
120+
description: Version of agent-framework-core
121+
placeholder: "e.g., 1.0.0b1"
122+
validations:
123+
required: false
124+
125+
- type: input
126+
id: python-azure-ai
127+
attributes:
128+
label: agent-framework-azure-ai
129+
description: Version of agent-framework-azure-ai
130+
placeholder: "e.g., 1.0.0b1"
131+
validations:
132+
required: false
133+
134+
- type: input
135+
id: python-anthropic
136+
attributes:
137+
label: agent-framework-anthropic
138+
description: Version of agent-framework-anthropic
139+
placeholder: "e.g., 1.0.0b1"
140+
validations:
141+
required: false
142+
143+
- type: input
144+
id: python-azurefunctions
145+
attributes:
146+
label: agent-framework-azurefunctions
147+
description: Version of agent-framework-azurefunctions
148+
placeholder: "e.g., 1.0.0b1"
149+
validations:
150+
required: false
151+
152+
- type: input
153+
id: python-other-packages
154+
attributes:
155+
label: Other Python Packages
156+
description: List any other agent-framework-* packages and versions you are using
157+
placeholder: "e.g., agent-framework-mem0: 1.0.0b1, agent-framework-redis: 1.0.0b1"
158+
validations:
159+
required: false
160+
161+
- type: markdown
162+
attributes:
163+
value: "---"
164+
165+
- type: textarea
166+
id: description
167+
attributes:
168+
label: Description
169+
description: Please provide a clear and detailed description of the issue, feature request, or question.
170+
placeholder: |
171+
For bugs: Describe what happened, what you expected to happen, and steps to reproduce.
172+
For features: Describe the feature you'd like and why it would be useful.
173+
For questions: Describe what you're trying to accomplish.
174+
validations:
175+
required: true
176+
177+
- type: textarea
178+
id: code-sample
179+
attributes:
180+
label: Code Sample
181+
description: If applicable, provide a minimal code sample that demonstrates the issue or your use case.
182+
placeholder: |
183+
```python
184+
# Your code here
185+
```
186+
187+
or
188+
189+
```csharp
190+
// Your code here
191+
```
192+
render: markdown
193+
validations:
194+
required: false
195+
196+
- type: textarea
197+
id: additional-context
198+
attributes:
199+
label: Additional Context
200+
description: Add any other context, screenshots, error messages, or stack traces that might be helpful.
201+
placeholder: "Any additional information..."
202+
validations:
203+
required: false

.github/workflows/label-issues.yml

Lines changed: 50 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,58 @@ jobs:
4545
labels.push("triage")
4646
}
4747
48-
// Check if the body or the title contains the word 'python' (case-insensitive)
49-
if ((body != null && body.match(/python/i)) || (title != null && title.match(/python/i))) {
50-
// Add the 'python' label to the array
51-
labels.push("python")
48+
// Helper function to extract field value from issue form body
49+
// Issue forms format fields as: ### Field Name\n\nValue
50+
function getFormFieldValue(body, fieldName) {
51+
if (!body) return null
52+
const regex = new RegExp(`###\\s*${fieldName}\\s*\\n\\n([^\\n#]+)`, 'i')
53+
const match = body.match(regex)
54+
return match ? match[1].trim() : null
5255
}
5356
54-
// Check if the body or the title contains the words 'dotnet', '.net', 'c#' or 'csharp' (case-insensitive)
55-
if ((body != null && body.match(/.net/i)) || (title != null && title.match(/.net/i)) ||
56-
(body != null && body.match(/dotnet/i)) || (title != null && title.match(/dotnet/i)) ||
57-
(body != null && body.match(/C#/i)) || (title != null && title.match(/C#/i)) ||
58-
(body != null && body.match(/csharp/i)) || (title != null && title.match(/csharp/i))) {
59-
// Add the '.NET' label to the array
60-
labels.push(".NET")
57+
// Check for language from issue form dropdown first
58+
const languageField = getFormFieldValue(body, 'Language')
59+
let languageLabelAdded = false
60+
61+
if (languageField) {
62+
if (languageField === 'Python') {
63+
labels.push("python")
64+
languageLabelAdded = true
65+
} else if (languageField === '.NET') {
66+
labels.push(".NET")
67+
languageLabelAdded = true
68+
}
69+
// 'None / Not Applicable' - don't add any language label
70+
}
71+
72+
// Fallback: Check if the body or the title contains the word 'python' (case-insensitive)
73+
// Only if language wasn't already determined from the form field
74+
if (!languageLabelAdded) {
75+
if ((body != null && body.match(/python/i)) || (title != null && title.match(/python/i))) {
76+
// Add the 'python' label to the array
77+
labels.push("python")
78+
}
79+
80+
// Check if the body or the title contains the words 'dotnet', '.net', 'c#' or 'csharp' (case-insensitive)
81+
if ((body != null && body.match(/\.net/i)) || (title != null && title.match(/\.net/i)) ||
82+
(body != null && body.match(/dotnet/i)) || (title != null && title.match(/dotnet/i)) ||
83+
(body != null && body.match(/C#/i)) || (title != null && title.match(/C#/i)) ||
84+
(body != null && body.match(/csharp/i)) || (title != null && title.match(/csharp/i))) {
85+
// Add the '.NET' label to the array
86+
labels.push(".NET")
87+
}
88+
}
89+
90+
// Check for issue type from issue form dropdown
91+
const issueTypeField = getFormFieldValue(body, 'Type of Issue')
92+
if (issueTypeField) {
93+
if (issueTypeField === 'Bug') {
94+
labels.push("bug")
95+
} else if (issueTypeField === 'Feature Request') {
96+
labels.push("enhancement")
97+
} else if (issueTypeField === 'Question') {
98+
labels.push("question")
99+
}
61100
}
62101
63102
// Add the labels to the issue (only if there are labels to add)

0 commit comments

Comments
 (0)