Skip to content

feat(github): add issue forms and a PR template - #1847

Open
clay-good wants to merge 1 commit into
mainfrom
feat/issue-and-pr-templates
Open

clay-good wants to merge 1 commit into
mainfrom
feat/issue-and-pr-templates

Conversation

@clay-good

@clay-good clay-good commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

Status: Ready for review. Step 1 of #1834.github/-only, no code and no spec touched.

What was missing

CONTRIBUTING.md asks every change to start with an issue or a discussion. That only works if filing one is the path of least resistance, and for a contributor who clones this repo it currently isn't: there is no .github/ISSUE_TEMPLATE/ and no PR template. They get a blank box, and later a review comment asking them to go file the issue they didn't know they needed. That's the contributor we're most likely to lose.

What it does

File Asks for
ISSUE_TEMPLATE/bug_report.yml what happened, what was expected, a minimal repro, openspec --version (required); agent + model, OS/Node (optional)
ISSUE_TEMPLATE/feature_request.yml the problem in a sentence or two, who it affects (required); what was tried, what they have in mind (optional)
ISSUE_TEMPLATE/config.yml routes core-design topics to Discussions per CONTRIBUTING step 1, plus Q&A and Discord
PULL_REQUEST_TEMPLATE.md Closes # on the first line, with the "no issue yet?" path directly under it

Two details worth calling out:

  • The bug form points users who already have OpenSpec installed at openspec feedback "..." rather than at the form. They have the version, the platform and the failing command already; the form is for people who don't.
  • blank_issues_enabled: true is deliberate. The pre-filled URL that openspec feedback prints when gh is missing or unauthenticated (generateManualSubmissionUrl() in src/commands/feedback.ts) points at /issues/new?title=…&body=…. Turning blank issues off would break that path for every user without gh. Teaching that URL to prefill the form itself is step 3 of feat(contributing): make filing a good issue the default path before a PR #1834 and needs a change proposal; until then, this keeps it working.

The PR template deliberately carries no bot and no CI gate. It catches the PR-first contributor at the exact moment they need it, which per #1834 should make an enforcement gate mostly unnecessary.

Proof it works

  • All three YAML files parse and satisfy GitHub's issue-form schema (every non-markdown block has a unique, valid id and an attributes.label; markdown blocks carry no id/validations; config.yml has a boolean blank_issues_enabled and complete contact_links). Verified by parsing with the repo's own yaml dependency.
  • Every label the forms apply already exists in this repository: bug, enhancement, needs-triage (checked against gh label list).
  • No source, spec, test, or workflow file changes, so nothing in the build or the test suite can regress. ISSUE_TEMPLATE and PULL_REQUEST_TEMPLATE appear nowhere else in the repo, and neither path is in any tool's detectionPaths in src/core/config.ts, so OpenSpec's own .github-based GitHub Copilot detection is unaffected.
  • No changeset: this changes nothing for users of the published package.

Notes

Written by Claude Code (Opus 5); YAML schema validation and label existence checked locally.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation

    • Added structured templates for reporting bugs and requesting features, helping contributors provide clearer reproduction details, context, and proposed solutions.
    • Added pull request guidance covering issue references, change descriptions, verification steps, and optional contributor information.
  • Chores

    • Added issue configuration with links for design discussions, setup questions, and community support.
    • Enabled blank issue creation alongside the guided templates.

CONTRIBUTING asks every change to start with an issue or a discussion, but
the repository had no `.github/ISSUE_TEMPLATE/` and no PR template, so a
contributor who clones the repo and opens a PR meets a blank box and, later,
a review comment asking them to go file the issue they did not know they
needed.

- `ISSUE_TEMPLATE/bug_report.yml` asks for expected, actual, a minimal repro,
  `openspec --version`, and the agent and model, and points users who already
  have OpenSpec installed at `openspec feedback`.
- `ISSUE_TEMPLATE/feature_request.yml` asks for the problem, who it affects,
  and what was tried, and routes core-design topics to Discussions.
- `ISSUE_TEMPLATE/config.yml` keeps blank issues enabled, so the pre-filled
  URL that `openspec feedback` prints when `gh` is unavailable still works,
  and links Discussions and Discord.
- `PULL_REQUEST_TEMPLATE.md` puts `Closes #` on the first line with the
  "no issue yet?" path directly under it, catching the PR-first contributor
  at the moment they need it — no bot and no CI gate.

Labels referenced by the forms (`bug`, `enhancement`, `needs-triage`) all
exist in this repository.

Part of #1834

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@clay-good
clay-good requested a review from a team as a code owner September 11, 2026 14:40
@clay-good
clay-good requested review from TabishB and removed request for a team September 11, 2026 14:40
@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 7deabe03-cc3e-44f4-acc8-b17012e85d01

📥 Commits

Reviewing files that changed from the base of the PR and between 9d4e597 and 7431ebb.

📒 Files selected for processing (4)
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/ISSUE_TEMPLATE/feature_request.yml
  • .github/PULL_REQUEST_TEMPLATE.md

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

Added GitHub issue forms for bug reports and feature requests, contact links for discussions and Discord, and a pull request template with issue-link, verification, changeset, and coding-agent prompts.

Changes

Contribution intake

Layer / File(s) Summary
Issue intake forms and routing
.github/ISSUE_TEMPLATE/bug_report.yml, .github/ISSUE_TEMPLATE/feature_request.yml, .github/ISSUE_TEMPLATE/config.yml
Adds structured bug and feature request forms with required and optional fields, labels, blank-issue support, discussion links, and a Discord link.
Pull request contribution guidance
.github/PULL_REQUEST_TEMPLATE.md
Adds prompts for issue links, change descriptions, verification commands, optional notes, changeset creation, and coding-agent details.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Feature

Merge Risk: ⚪ Minimal · up to 7431e

Issue and pull request guidance is ready to merge without identified functional risk.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main changes: adding GitHub issue forms and a pull request template.
Linked Issues check ✅ Passed The PR satisfies the coding requirements in issue #1834 step 1. .github/ISSUE_TEMPLATE/bug_report.yml collects actual and expected behavior, reproduction steps, openspec --version, agent/model, an…
Out of Scope Changes check ✅ Passed All changed files are under .github/ and implement the step 1 contribution templates required by issue #1834. No unrelated source, specification, test, workflow, or changeset files are changed.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/issue-and-pr-templates

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

design-review Needs product/design decision

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(contributing): make filing a good issue the default path before a PR

1 participant