GitHub's own bug form leaves Steps To Reproduce optional, so "it doesn't work" reports walk straight through the form and land on a maintainer. Issue Gate writes the same native files with that gap closed.
GitHub enforces a required form field at submit time, before the issue exists. No comment bot telling someone their issue is invalid — one polite form, asked once.
Chooses blank_issues_enabled: false so contributors get a form instead of an empty editor, plus a question form or a Discussions link so nothing is left unrouted.
Reads your repo and prefills the environment block with the right fields — Node, Python, Rust, Go, JVM, Ruby, PHP — so reporters fill in versions that matter to you.
An existing template is reported and left untouched, and --dry-run prints a unified diff with POSIX paths, ready to paste into a pull request.
pip install issue-gate — zero dependencies, Python standard library only.issuegate ~/code/my-lib --dry-run — see the diff, write nothing.issuegate ~/code/my-lib — write .github/ISSUE_TEMPLATE/, then push and open /issues/new/choose.issuegate --self-check — verify the tool works on your machine.