> **github-issue-creator** — chapter 8 of 23 in [google-gemini/gemini-cli](https://skillsdocs.com/google-gemini/gemini-cli).
>
> Book (all chapters, one file): https://skillsdocs.com/google-gemini/gemini-cli.md
> Machine manifest: https://skillsdocs.com/google-gemini/gemini-cli/.well-known/agent-skills/index.json
> Install the book: `npx skills add google-gemini/gemini-cli`
> Upstream: https://github.com/google-gemini/gemini-cli/blob/main/.gemini/skills/github-issue-creator/SKILL.md @ `main`
> Raw bytes, no header: https://raw.githubusercontent.com/google-gemini/gemini-cli/main/.gemini/skills/github-issue-creator/SKILL.md
> Base for relative paths: https://raw.githubusercontent.com/google-gemini/gemini-cli/main/.gemini/skills/github-issue-creator/
> Licence: Apache-2.0 — https://spdx.org/licenses/Apache-2.0.html
>
> Content © its authors, served unmodified. Takedown: https://github.com/DreambaseAI/skillsdocs/issues/new?labels=takedown&title=Takedown+request

<!-- Verbatim upstream SKILL.md follows, YAML frontmatter included. -->

---
name: github-issue-creator
description:
  Use this skill when asked to create a GitHub issue. It handles different issue
  types (bug, feature, etc.) using repository templates and ensures proper
  labeling.
---

# GitHub Issue Creator

This skill guides the creation of high-quality GitHub issues that adhere to the
repository's standards and use the appropriate templates.

## Workflow

Follow these steps to create a GitHub issue:

1.  **Identify Issue Type**: Determine if the request is a bug report, feature
    request, or other category.

2.  **Locate Template**: Search for issue templates in
    `.github/ISSUE_TEMPLATE/`.
    - `bug_report.yml`
    - `feature_request.yml`
    - `website_issue.yml`
    - If no relevant YAML template is found, look for `.md` templates in the same
      directory.

3.  **Read Template**: Read the content of the identified template file to
    understand the required fields.

4.  **Draft Content**: Draft the issue title and body/fields.
    - If using a YAML template (form), prepare values for each `id` defined in
      the template.
    - If using a Markdown template, follow its structure exactly.
    - **Default Label**: Always include the `🔒 maintainer only` label unless the
      user explicitly requests otherwise.

5.  **Create Issue**: Use the `gh` CLI to create the issue.
    - **CRITICAL:** To avoid shell escaping and formatting issues with
      multi-line Markdown or complex text, ALWAYS write the description/body to
      a temporary file first.

    **For Markdown Templates or Simple Body:**
    ```bash
    # 1. Write the drafted content to a temporary file
    # 2. Create the issue using the --body-file flag
    gh issue create --title "Succinct title" --body-file <temp_file_path> --label "🔒 maintainer only"
    # 3. Remove the temporary file
    rm <temp_file_path>
    ```

    **For YAML Templates (Forms):**
    While `gh issue create` supports `--body-file`, YAML forms usually expect
    key-value pairs via flags if you want to bypass the interactive prompt.
    However, the most reliable non-interactive way to ensure formatting is
    preserved for long text fields is to use the `--body` or `--body-file` if the
    form has been converted to a standard body, OR to use the `--field` flags
    for YAML forms.

    *Note: For the `gemini-cli` repository which uses YAML forms, you can often
    submit the content as a single body if a specific field-based submission is
    not required by the automation.*

6.  **Verify**: Confirm the issue was created successfully and provide the link
    to the user.

## Principles

- **Clarity**: Titles should be descriptive and follow project conventions.
- **Defensive Formatting**: Always use temporary files with `--body-file` to
  prevent newline and special character issues.
- **Maintainer Priority**: Default to internal/maintainer labels to keep the
  backlog organized.
- **Completeness**: Provide all requested information (e.g., version info,
  reproduction steps).
