Overview
Transform messy, unstructured input—pasted error logs, voice dictation, screenshots, support notes—into clean, actionable GitHub issue markdown files. Each issue includes a one-line summary, environment, numbered reproduction steps, expected vs. actual behavior, error details, visual evidence references, severity-rated impact, and additional context.
When to Use
Use this skill when the user provides unstructured bug input and wants a structured GitHub issue. Trigger keywords and signals:
- Pasted stack traces, error messages, or HTTP status codes
- Voice dictation describing a bug ("so I was trying to… and it just failed")
- Screenshots or GIFs of a failure
- Support tickets, Slack threads, or rough notes needing triage
- Explicit requests: "create an issue", "file a bug", "log this on GitHub", "write up this bug"
Do not use this skill for feature requests, RFCs, or design docs—only bug/defect reports.
Prerequisites
- A local repo root where the
/issues/ directory will be created or already exists.
- On Windows host (PowerShell), the repo root is typically
~\agent-skills\library\github-issue-creator or the active project folder.
- If the user references a screenshot or GIF, confirm the file path or attachment name before referencing it inline.
- If required inputs are missing (product/service, at least one repro step, or expected behavior), stop and ask for clarification.
Procedure
1. Gather and parse raw input
- Collect all raw material from the user: error text, voice dictation transcript, screenshot paths, conversation context.
- Extract facts buried in casual language. Voice notes often contain the real sequence of events behind informal phrasing.
- Infer missing context from conversation or memory only when the user explicitly references it ("same project", "the dashboard", "that error from before"). Otherwise, use placeholders.
2. Determine environment and impact
- Identify Product/Service, Region/Version, and Browser/OS from the input or conversation context.
- If unknown, insert
[UNKNOWN] or [REGION] placeholders—never fabricate.
- Assign severity using the rubric below.
3. Assign severity
| Severity |
Criteria |
| Critical |
Service down, data loss, security issue |
| High |
Major feature broken, no workaround |
| Medium |
Feature impaired, workaround exists |
| Low |
Minor inconvenience, cosmetic |
4. Write the issue file
- Create the
/issues/ directory at the repo root if it does not exist.New-Item -ItemType Directory -Path ".\issues" -Force
- Name the file using the convention
YYYY-MM-DD-short-description.md.$date = Get-Date -Format "yyyy-MM-dd"
$slug = "agent-deployment-silent-failure"
New-Item -ItemType File -Path ".\issues\$date-$slug.md" -Force
- Write the issue using the exact output template below.
5. Output Template
## Summary
[One-line description of the issue]
## Environment
- **Product/Service**:
- **Region/Version**:
- **Browser/OS**: (if relevant)
## Reproduction Steps
1. [Step]
2. [Step]
3. [Step]
## Expected Behavior
[What should happen]
## Actual Behavior
[What actually happens]
## Error Details
[Error message/code if applicable]
## Visual Evidence
[Reference to attached screenshots/GIFs]
## Impact
[Severity: Critical/High/Medium/Low + brief explanation]
## Additional Context
[Any other relevant details]
6. Placeholder sensitive data
Replace any potentially sensitive values with bracketed placeholders:
[PROJECT_NAME]
[USER_ID]
[API_KEY]
[TENANT_ID]
[EMAIL]
Never include live secrets, tokens, or credentials in the issue file.
7. Reference attachments inline
For screenshots or GIFs, reference them inline using the format:

If the file path is unknown, write [See attached: filename.png] and flag it for the user to attach manually.
Examples
Example A — Voice dictation input
Input:
so I was trying to deploy the agent and it just failed silently no error nothing the workflow ran but then poof gone from the list had to refresh and try again three times
Output file: issues/2026-02-27-agent-deployment-silent-failure.md
## Summary
Agent deployment fails silently - no error displayed, agent disappears from list
## Environment
- **Product/Service**: Azure AI Foundry
- **Region/Version**: westus2
## Reproduction Steps
1. Navigate to agent deployment
2. Configure and deploy agent
3. Observe workflow completes
4. Check agent list
## Expected Behavior
Agent appears in list with deployment status, errors shown if deployment fails
## Actual Behavior
Agent disappears from list. No error message. Requires page refresh and retry.
## Impact
**High** - Blocks agent deployment workflow, no feedback on failure cause
## Additional Context
Required 3 retry attempts before successful deployment
Example B — Error paste input
Input:
Error: PERMISSION_DENIED when publishing to Teams channel. Code: 403. Was working yesterday.
Output file: issues/2026-02-27-teams-publish-permission-denied.md
## Summary
403 PERMISSION_DENIED error when publishing to Teams channel
## Environment
- **Product/Service**: Copilot Studio → Teams integration
- **Region/Version**: [REGION]
## Reproduction Steps
1. Configure agent for Teams channel
2. Attempt to publish
## Expected Behavior
Agent publishes successfully to Teams channel
## Actual Behavior
Returns `PERMISSION_DENIED` with code 403
## Error Details
Error: PERMISSION_DENIED
Code: 403
## Impact
**High** - Blocks Teams integration, regression from previous working state
## Additional Context
Was working yesterday - possible permission/config change or service regression
Pitfalls
- Fabricating environment details: Never invent region, version, or browser/OS. Use
[UNKNOWN] placeholders and ask the user.
- Missing repro steps: If the input does not contain enough detail for at least 2 numbered repro steps, stop and ask the user for clarification.
- Including live secrets: Error logs sometimes contain API keys, tokens, or connection strings. Always scrub these to
[REDACTED] or the appropriate placeholder before writing the file.
- Vague severity: Do not default to "Medium" when unsure. Map severity strictly to the rubric. If impact is unclear, ask the user.
- Wrong file location: Issues must go in
/issues/ at the repo root, not in a subfolder or the user's home directory. On Windows, confirm the working directory with Get-Location before writing.
- Inconsistent naming: Always use
YYYY-MM-DD-short-description.md. Do not use spaces or uppercase in the slug portion.
- Over-writing existing issues: Use
New-Item without -Force on the file if you want to avoid clobbering; check first with Test-Path.
- Treating output as validated: The generated issue is a draft. It does not substitute for environment-specific validation, testing, or expert review.
Verification
After writing the issue file, verify:
File exists and is named correctly:
Get-ChildItem .\issues\*.md | Select-Object Name
Confirm the filename matches YYYY-MM-DD-short-description.md.
All required sections are present:
$content = Get-Content ".\issues\YYYY-MM-DD-short-description.md" -Raw
$sections = @("## Summary","## Environment","## Reproduction Steps","## Expected Behavior","## Actual Behavior","## Error Details","## Visual Evidence","## Impact","## Additional Context")
foreach ($s in $sections) { if ($content -notmatch [regex]::Escape($s)) { Write-Host "MISSING: $s" } }
No live secrets leaked:
$content = Get-Content ".\issues\YYYY-MM-DD-short-description.md" -Raw
if ($content -match '(?i)(sk-[a-z0-9]{20,}|Bearer\s+[A-Za-z0-9\.\-_]+|password\s*[:=]\s*\S+)') { Write-Host "WARNING: Possible secret detected" }
Repro steps are numbered: Confirm at least 2 numbered items exist under ## Reproduction Steps.
Severity is set: Confirm the Impact section contains one of Critical, High, Medium, or Low.
Related skills
- github-pr-template: For structuring pull request descriptions once a fix is ready.
- bug-triage-labeler: For assigning labels and priority after issue creation.
1---2name: github-issue-creator3description: Turns pasted errors, screenshots, voice notes, and rough tickets into dated GitHub issue markdown covering environment, numbered repro, expected vs actual, evidence, and severity. Trigger when the user asks to file, create, or log a GitHub issue from unstructured bug input. Do not use for feature RFCs, design docs, or pull-request writeups.4---5
6## Overview
7
8Transform messy, unstructured input—pasted error logs, voice dictation, screenshots, support notes—into clean, actionable GitHub issue markdown files. Each issue includes a one-line summary, environment, numbered reproduction steps, expected vs. actual behavior, error details, visual evidence references, severity-rated impact, and additional context.
9
10## When to Use
11
12Use this skill when the user provides unstructured bug input and wants a structured GitHub issue. Trigger keywords and signals:
13
14- Pasted stack traces, error messages, or HTTP status codes
15- Voice dictation describing a bug ("so I was trying to… and it just failed")
16- Screenshots or GIFs of a failure
17- Support tickets, Slack threads, or rough notes needing triage
18- Explicit requests: "create an issue", "file a bug", "log this on GitHub", "write up this bug"
19
20Do **not** use this skill for feature requests, RFCs, or design docs—only bug/defect reports.
21
22## Prerequisites
23
241. A local repo root where the `/issues/` directory will be created or already exists.
252. On Windows host (PowerShell), the repo root is typically `~\agent-skills\library\github-issue-creator` or the active project folder.
263. If the user references a screenshot or GIF, confirm the file path or attachment name before referencing it inline.
274. If required inputs are missing (product/service, at least one repro step, or expected behavior), stop and ask for clarification.
28
29## Procedure
30
31### 1. Gather and parse raw input
32
331. Collect all raw material from the user: error text, voice dictation transcript, screenshot paths, conversation context.
342. Extract facts buried in casual language. Voice notes often contain the real sequence of events behind informal phrasing.
353. Infer missing context from conversation or memory only when the user explicitly references it ("same project", "the dashboard", "that error from before"). Otherwise, use placeholders.
36
37### 2. Determine environment and impact
38
391. Identify **Product/Service**, **Region/Version**, and **Browser/OS** from the input or conversation context.
402. If unknown, insert `[UNKNOWN]` or `[REGION]` placeholders—never fabricate.
413. Assign severity using the rubric below.
42
43### 3. Assign severity
44
45| Severity | Criteria |
46|----------|----------|
47| **Critical** | Service down, data loss, security issue |
48| **High** | Major feature broken, no workaround |
49| **Medium** | Feature impaired, workaround exists |
50| **Low** | Minor inconvenience, cosmetic |
51
52### 4. Write the issue file
53
541. Create the `/issues/` directory at the repo root if it does not exist.
55 ```powershell
56 New-Item -ItemType Directory -Path ".\issues" -Force
57 ```
582. Name the file using the convention `YYYY-MM-DD-short-description.md`.
59 ```powershell
60 $date = Get-Date -Format "yyyy-MM-dd"
61 $slug = "agent-deployment-silent-failure"
62 New-Item -ItemType File -Path ".\issues\$date-$slug.md" -Force
63 ```
643. Write the issue using the exact output template below.
65
66### 5. Output Template
67
68```markdown
69## Summary
70[One-line description of the issue]
71
72## Environment
73- **Product/Service**:
74- **Region/Version**:
75- **Browser/OS**: (if relevant)
76
77## Reproduction Steps
781. [Step]
792. [Step]
803. [Step]
81
82## Expected Behavior
83[What should happen]
84
85## Actual Behavior
86[What actually happens]
87
88## Error Details
89```
90[Error message/code if applicable]
91```
92
93## Visual Evidence
94[Reference to attached screenshots/GIFs]
95
96## Impact
97[Severity: Critical/High/Medium/Low + brief explanation]
98
99## Additional Context
100[Any other relevant details]
101```
102
103### 6. Placeholder sensitive data
104
105Replace any potentially sensitive values with bracketed placeholders:
106
107- `[PROJECT_NAME]`
108- `[USER_ID]`
109- `[API_KEY]`
110- `[TENANT_ID]`
111- `[EMAIL]`
112
113Never include live secrets, tokens, or credentials in the issue file.
114
115### 7. Reference attachments inline
116
117For screenshots or GIFs, reference them inline using the format:
118
119```
120
121```
122
123If the file path is unknown, write `[See attached: filename.png]` and flag it for the user to attach manually.
124
125## Examples
126
127### Example A — Voice dictation input
128
129**Input**:
130> so I was trying to deploy the agent and it just failed silently no error nothing the workflow ran but then poof gone from the list had to refresh and try again three times
131
132**Output file**: `issues/2026-02-27-agent-deployment-silent-failure.md`
133
134```markdown
135## Summary
136Agent deployment fails silently - no error displayed, agent disappears from list
137
138## Environment
139- **Product/Service**: Azure AI Foundry
140- **Region/Version**: westus2
141
142## Reproduction Steps
1431. Navigate to agent deployment
1442. Configure and deploy agent
1453. Observe workflow completes
1464. Check agent list
147
148## Expected Behavior
149Agent appears in list with deployment status, errors shown if deployment fails
150
151## Actual Behavior
152Agent disappears from list. No error message. Requires page refresh and retry.
153
154## Impact
155**High** - Blocks agent deployment workflow, no feedback on failure cause
156
157## Additional Context
158Required 3 retry attempts before successful deployment
159```
160
161### Example B — Error paste input
162
163**Input**:
164> Error: PERMISSION_DENIED when publishing to Teams channel. Code: 403. Was working yesterday.
165
166**Output file**: `issues/2026-02-27-teams-publish-permission-denied.md`
167
168```markdown
169## Summary
170403 PERMISSION_DENIED error when publishing to Teams channel
171
172## Environment
173- **Product/Service**: Copilot Studio → Teams integration
174- **Region/Version**: [REGION]
175
176## Reproduction Steps
1771. Configure agent for Teams channel
1782. Attempt to publish
179
180## Expected Behavior
181Agent publishes successfully to Teams channel
182
183## Actual Behavior
184Returns `PERMISSION_DENIED` with code 403
185
186## Error Details
187```
188Error: PERMISSION_DENIED
189Code: 403
190```
191
192## Impact
193**High** - Blocks Teams integration, regression from previous working state
194
195## Additional Context
196Was working yesterday - possible permission/config change or service regression
197```
198
199## Pitfalls
200
2011. **Fabricating environment details**: Never invent region, version, or browser/OS. Use `[UNKNOWN]` placeholders and ask the user.
2022. **Missing repro steps**: If the input does not contain enough detail for at least 2 numbered repro steps, stop and ask the user for clarification.
2033. **Including live secrets**: Error logs sometimes contain API keys, tokens, or connection strings. Always scrub these to `[REDACTED]` or the appropriate placeholder before writing the file.
2044. **Vague severity**: Do not default to "Medium" when unsure. Map severity strictly to the rubric. If impact is unclear, ask the user.
2055. **Wrong file location**: Issues must go in `/issues/` at the repo root, not in a subfolder or the user's home directory. On Windows, confirm the working directory with `Get-Location` before writing.
2066. **Inconsistent naming**: Always use `YYYY-MM-DD-short-description.md`. Do not use spaces or uppercase in the slug portion.
2077. **Over-writing existing issues**: Use `New-Item` without `-Force` on the file if you want to avoid clobbering; check first with `Test-Path`.
2088. **Treating output as validated**: The generated issue is a draft. It does not substitute for environment-specific validation, testing, or expert review.
209
210## Verification
211
212After writing the issue file, verify:
213
2141. **File exists and is named correctly**:
215 ```powershell
216 Get-ChildItem .\issues\*.md | Select-Object Name
217 ```
218 Confirm the filename matches `YYYY-MM-DD-short-description.md`.
219
2202. **All required sections are present**:
221 ```powershell
222 $content = Get-Content ".\issues\YYYY-MM-DD-short-description.md" -Raw
223 $sections = @("## Summary","## Environment","## Reproduction Steps","## Expected Behavior","## Actual Behavior","## Error Details","## Visual Evidence","## Impact","## Additional Context")
224 foreach ($s in $sections) { if ($content -notmatch [regex]::Escape($s)) { Write-Host "MISSING: $s" } }
225 ```
226
2273. **No live secrets leaked**:
228 ```powershell
229 $content = Get-Content ".\issues\YYYY-MM-DD-short-description.md" -Raw
230 if ($content -match '(?i)(sk-[a-z0-9]{20,}|Bearer\s+[A-Za-z0-9\.\-_]+|password\s*[:=]\s*\S+)') { Write-Host "WARNING: Possible secret detected" }
231 ```
232
2334. **Repro steps are numbered**: Confirm at least 2 numbered items exist under `## Reproduction Steps`.
234
2355. **Severity is set**: Confirm the Impact section contains one of `Critical`, `High`, `Medium`, or `Low`.
236
237## Related skills
238
239- **github-pr-template**: For structuring pull request descriptions once a fix is ready.
240- **bug-triage-labeler**: For assigning labels and priority after issue creation.