github-issue-writing

v2026.09.24

GitHub issue body and `[Type] Component:` title — bug/feature templates, repro steps, acceptance criteria. Use when filing a bug or feature request with gh.

GitHub
安装命令
npx skhub add laurigates/github-issue-writing
Markdown
SKILL.md

GitHub Issue Writing

Create well-structured, actionable GitHub issues.

When to Use This Skill

Use this skill when...Use the alternative when...
Filing a new bug, feature, or chore issue with clear title and acceptance criteriaUse git-issue to start working on existing issues end-to-end
Structuring an issue body with reproduction steps, scope, and definition of doneUse github-issue-autodetect to link existing issues from staged diffs
Choosing the [Type] Component: Description title formatUse github-pr-title to author the conventional title for the PR that fixes it
Designing a feature-request issue before implementation beginsUse git-issue-manage for transfer/pin/lock/develop-branch admin operations
Assembling the GitHub issue itself — title format, templates, gh issue createUse communication-plugin:ticket-drafting-guidelines for the What/Why/How prose structure and house tone of the body text

Issue Title Format

[Type] Component: Brief description
TypeExample
Bug[Bug] Auth: Login fails with valid credentials
Feature[Feature] API: Add rate limiting support
Docs[Docs] README: Add installation instructions
Chore[Chore] CI: Update Node.js version

Guidelines:

  • Be specific (not "Bug" but "Login fails with OAuth")
  • Include component for triage
  • Keep under 72 characters

Bug Report Template

## Summary
Brief description of the bug.

## Steps to Reproduce
1. Go to '...'
2. Click on '...'
3. See error

## Expected Behavior
What should happen.

## Actual Behavior
What actually happens.

## Environment
- OS: macOS 14.0
- Browser: Chrome 120
- Version: 2.1.0

Feature Request Template

## Summary
What this feature does.

## Motivation
Why this is needed. What problem does it solve?

## Proposed Solution
Description of desired behavior.

## Acceptance Criteria
- [ ] Criterion 1
- [ ] Criterion 2
- [ ] Criterion 3

Issue Types

GitHub supports first-class issue types. Use --type when creating issues:

TypeUse For
BugSomething broken that needs fixing
FeatureNew functionality request
TaskGeneral work item

Note: Available types depend on repository/org configuration. Use gh issue create --type "Bug" to leverage them.

Body Content: Use --body-file

For any non-trivial body — anything containing backticks, code fences, or multi-line content — use --body-file <path>, never --body "<text>". This applies to all gh commands that accept a body: gh issue create, gh issue edit, gh issue comment, gh pr create, gh pr edit, gh pr comment.

When to use which

Body shapePattern
Trivially short, single line, no backticks--body "Short text" is fine
Contains backticks (inline code, code fences)--body-file /tmp/body.md — required
Multi-line--body-file /tmp/body.md — required
Contains shell metacharacters ($, ", ', \)--body-file /tmp/body.md — required

Why

Shell-quoted --body strings escape backticks (` becomes \`), breaking inline code spans and triple-backtick code fences in the rendered issue. Bash heredocs interact unpredictably with the agent's argument escaping. Writing the markdown to a file with the Write tool sidesteps shell quoting entirely — the file content is preserved byte-for-byte.

Pattern

1. Write tool → /tmp/issue-body.md   (markdown body, no shell escaping)
2. gh issue create --title "..." --body-file /tmp/issue-body.md

The same --body-file <path> form is supported by every gh command that accepts a body.

CLI Commands

# Create issue with a body file (preferred for any non-trivial body)
gh issue create --title "[Bug] Auth: Login fails" --body-file /tmp/issue-body.md

# Trivially short body — inline --body is acceptable
gh issue create --title "[Chore] Bump dep" --body "See renovate PR"

# With labels
gh issue create --title "..." --body-file /tmp/body.md --label "bug" --label "priority: high"

# With assignee
gh issue create --title "..." --body-file /tmp/body.md --assignee "@me"

# With issue type
gh issue create --title "..." --body-file /tmp/body.md --type "Bug"

# As sub-issue of a parent
gh issue create --title "..." --body-file /tmp/body.md
gh api repos/{owner}/{repo}/issues/{parent}/sub_issues -f sub_issue_id={new_id}

# Search before creating
gh issue list --search "login error" --state all

Linking Issues

Pick the mechanism that matches the relationship — GitHub surfaces each one differently and only the native APIs trigger "Blocked" badges on project boards.

RelationshipHow to recordWhy
Hard dependency (must happen before)Native dependencies/blocked_by API — see /git:issue-hierarchy --blocked-by NSidebar "Relationships" entry + Blocked badge on boards
Composition (part-of scope)Sub-issue API — see /git:issue-hierarchy --add NProgress bar on parent, tracked separately from dependencies
Soft reference ("related to")Plain markdown Related to #789 in the bodyCross-link only; no lifecycle coupling
Auto-close on mergeFixes #N / Closes #N footer in commit or PR bodyCloses issue when the PR merges

Do not write Blocks #123 or Blocked by #456 in issue bodies any more — those strings used to be GitHub's workaround for missing dependency APIs, but they are no longer parsed. Call /git:issue-hierarchy (or the REST endpoints at issues/{N}/dependencies/blocked_by) so the relationship shows up in the sidebar and on project boards.

Quick Reference

ActionCommand
Creategh issue create --title "..." --body-file /tmp/body.md
Create with typegh issue create --title "..." --body-file /tmp/body.md --type "Bug"
Searchgh issue list --search "keyword"
Viewgh issue view N
Edit bodygh issue edit N --body-file /tmp/body.md
Commentgh issue comment N --body-file /tmp/comment.md
Labelsgh label list

Agentic Optimizations

ContextCommand
Create issuegh issue create --title "..." --body-file /tmp/body.md
Create with typegh issue create --title "..." --type "Bug" --body-file /tmp/body.md
List labelsgh label list --json name
Search issuesgh issue list --search "keyword" --state all --json number,title
View issuegh issue view N --json title,body,labels
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

git-plugin/skills/github-issue-writing

默认分支

main

最新提交

1668324

Tree SHA

b2d4cc3