issue-writing
Open-source issue creation: bug reports, feature requests, and structured contribution communication. Invoke whenever task involves any interaction with issues in external repositories — filing bugs, proposing features, reporting problems, or preparing issue content for open-source projects.
What this skill does
# Issue Writing
**Every issue you file costs maintainer time. Earn that time with evidence, not prose.**
Open-source maintainers are volunteers. A single low-quality issue engages 3-4 people for up to 3 hours each. AI-
generated "slop" — vague, unverified, polished-but-empty reports — has driven projects to shut down bug bounties, ban
reporters, and implement strict contribution policies. You are an AI agent — the exact actor these policies target. The
only way to contribute without causing harm is to hold yourself to a higher standard than any human contributor.
## References
- **Bug report structure** — `${CLAUDE_SKILL_DIR}/references/bug-report-structure.md` Title formulas, body template, MRE
construction, regression info, supporting evidence guidelines
- **Feature request structure** — `${CLAUDE_SKILL_DIR}/references/feature-request-structure.md` Problem-first framing,
proposed solution, alternatives, research on what drives developer engagement
- **Anti-slop patterns** — `${CLAUDE_SKILL_DIR}/references/anti-slop.md` How maintainers detect AI slop, stylistic and
structural markers, project policies against AI contributions, verification checklist
## Preparation Pipeline
Before writing a single word of an issue, complete every step.
<preparation>
### 1. Read Project Guidelines
- Read `CONTRIBUTING.md` (check root, `docs/`, and `.github/` directories)
- Read issue templates in `.github/ISSUE_TEMPLATE/` — if templates exist, you must use them
- Read `CODE_OF_CONDUCT.md` if present
- Check for AI contribution policies. Projects like LLVM, Selenium, and Django require human review and explanation of
all AI-generated content. Some ban autonomous agent contributions entirely. If the project prohibits AI-generated
contributions, **stop and inform the user** — do not file the issue.
- Do not file issues against items labeled "good first issue" — these are reserved for humans learning the project
- Note the project's communication norms: formal vs. casual, expected detail level
### 2. Search for Duplicates
Search the project's issue tracker for both **open and closed** issues. Use multiple search terms — the same problem is
often described differently by different people.
```bash
# GitHub CLI duplicate search
gh issue list -R owner/repo --search "keyword" --state all --limit 30
```
If you find a related issue:
- **Exact duplicate (open)** — do not create a new issue. Add useful new information as a comment if you have it.
- **Exact duplicate (closed)** — check why it was closed. If the fix didn't work or the problem recurred, reference the
closed issue in your new one.
- **Related but different** — proceed, but reference the related issue to show awareness.
### 3. Verify the Problem
- Confirm you are using the latest release or the development branch
- Reproduce the bug with precise steps — if you cannot reproduce it, you cannot report it
- Eliminate local environment issues: test in a clean environment, default configuration, fresh profile
- For feature requests: verify the feature doesn't already exist in documentation or configuration
### 4. Gather Evidence
Collect concrete evidence before writing:
- Exact error messages, stack traces, or log output
- Version numbers (software version, OS, runtime, relevant dependencies)
- Screenshots or screen recordings for visual issues
- A minimal reproducible example if reporting a bug
</preparation>
## Writing the Issue
### Issue Type: Bug Report
Follow the project's issue template if one exists. If not, use this structure:
**Title:** Concise description of the observable problem (~10 words). Describe what breaks, not what you think causes
it.
- Good: "`--output json` flag produces invalid JSON when input contains unicode"
- Bad: "JSON output is broken"
- Bad: "Bug in the parser"
**Body:**
1. **Description** — one paragraph expanding the title. Include software version and environment.
2. **Steps to reproduce** — numbered, precise steps. Each step describes action and intent.
3. **Expected result** — what should happen. Be concrete.
4. **Actual result** — what happens instead. Include exact error messages. Separate facts from speculation.
5. **Environment** — OS, version, runtime, relevant configuration.
6. **Minimal reproducible example** — if applicable, the smallest possible code/config that triggers the bug.
For detailed structural guidance, read the bug report reference.
### Issue Type: Feature Request
**Title:** Describe the desired capability, not a vague wish.
- Good: "Add SAML 2.0 support alongside existing OIDC authentication"
- Bad: "Better authentication"
**Body:**
1. **Problem or motivation** — what you're trying to accomplish and why you can't today. Developers assess project
alignment from your problem statement, not your proposed solution.
2. **Proposed solution** — concrete description of the desired behavior.
3. **Alternatives considered** — what else you tried or considered, and why those are insufficient.
4. **Additional context** — mockups, code snippets, links to similar implementations in other projects.
For detailed structural guidance and research on what drives developer engagement, read the feature request reference.
## Verification Gate
Before submitting, every item must pass.
<verification>
**Factual accuracy:**
- Every file, function, or API you reference exists in the current version of the project — verified by reading the
source, not recalled from memory
- Every reproduction step works when followed literally in a clean environment
- Version numbers and environment details are accurate and current
- Error messages are copied verbatim, not paraphrased
**Completeness:**
- The issue follows the project's template if one exists
- The title is specific enough that a maintainer can triage without reading the body
- Expected and actual results are both stated explicitly (for bugs)
- The problem statement explains motivation, not just the desired feature (for feature requests)
**Anti-slop:**
- The issue contains project-specific evidence, not generic descriptions
- You are not reporting documented or intended behavior as a bug
- You have not included analysis or root-cause speculation you cannot verify
- The tone is factual and direct — no filler, no excessive politeness, no alarmism
- No AI-typical markers: avoid em-dash heavy prose, "delve", "robust", "comprehensive", "It's worth noting"
- You are not answering questions nobody asked or explaining things the maintainer already knows
</verification>
## User Approval Gate
**Do not create the issue until the user explicitly approves it.** After completing the verification gate, present the
full draft to the user — title, body, labels, and target repository. Wait for explicit approval before executing
`gh issue create` or any equivalent action. The user may request changes; iterate until approved.
## GitHub CLI Mechanics
When creating issues via `gh`:
```bash
# Create with template (preferred — respects project conventions)
gh issue create -R owner/repo --template "bug_report.md"
# Create with explicit fields
gh issue create -R owner/repo \
--title "concise problem description" \
--body "structured body content" \
--label "bug"
# Create from a file (for longer issues)
gh issue create -R owner/repo \
--title "concise problem description" \
--body-file issue-body.md
```
Use `--template` when the project has issue templates — this provides information in the structure maintainers expect.
Some projects use YAML-based issue forms (`.github/ISSUE_TEMPLATE/*.yml`) which enforce structured fields — fill every
required field.
List available templates:
```bash
# List issue templates via GitHub API
gh api repos/OWNER/REPO/contents/.github/ISSUE_TEMPLATE --jq '.[].name' 2>/dev/null
# Or browse the repository directory directly
gh browse -R OWNER/REPO -- .github/ISSUE_TEMPLATE
```
## Communication Principles
- **Be factual, not dramatic.** "The function returns null" —Related in Productivity
gitea-workflow
IncludedOrchestrate agile development workflows for Gitea repositories using the tea CLI. Use when working with Gitea-hosted repos and asking to 'run the workflow', 'continue working', 'what's next', 'complete the task cycle', 'start my day', 'end the sprint', 'implement the next task', or wanting guided step-by-step development assistance. Keywords: workflow, orchestrate, agile, task cycle, sprint, daily, implement, review, PR, standup, retrospective, gitea, tea.
microsoft-graph-gateway
IncludedRoute Microsoft Graph work in this workspace. Use when users want to read or write Outlook mail, calendar events, contacts, OneDrive or SharePoint files, Teams, Planner, To Do, users, groups, directory data, or arbitrary Microsoft Graph endpoints from VS Code. Prefer WorkIQ for common read scenarios. Use Microsoft Graph for write actions and gap-read scenarios that need exact Graph properties, filters, permissions, or endpoints.
copilotkit
IncludedUse when building with CopilotKit — setup, development, integrations, debugging, upgrading, or contributing. Routes to the appropriate specialized skill based on the task.
wordly-wisdom
IncludedProvides calibrated decision analysis using Charlie Munger-style multiple mental models, inversion, incentive mapping, circle-of-competence checks, misjudgment audits, second-order effects, and forecast updates. Use when the user asks for an oracle take, a hard call, a decision memo, a premortem, an outside view, a red-team, a sanity-check, what am I missing, think this through, or wants a strategy, hire, investment, plan, product, partnership, or major life choice analysed. Avoid for simple factual lookups or time-sensitive legal, medical, or market questions without fresh evidence.
swain-session
IncludedSession management and project status dashboard. Owns the full session lifecycle (start/work/close/resume), focus lane, bookmarks, worktree detection, and tab naming. Also serves as the project status dashboard — shows active epics, progress, actionable next steps, blocked items, tasks, GitHub issues, and recommendations. Worktree creation is deferred to swain-do task dispatch (SPEC-195). Triggers on: 'session', 'status', 'what's next', 'dashboard', 'overview', 'where are we', 'what should I work on', 'show me priorities', 'bookmark', 'focus on', 'session info'.
gandi
IncludedComprehensive Gandi domain registrar integration for domain and DNS management. Register and manage domains, create/update/delete DNS records (A, AAAA, CNAME, MX, TXT, SRV, and more), configure email forwarding and aliases, check SSL certificate status, create DNS snapshots for safe rollback, bulk update zone files, and monitor domain expiration. Supports multi-domain management, zone file import/export, and automated DNS backups. Includes both read-only and destructive operations with safety controls.