docs: add typed contribution templates and tighten contributor guidelines (#1673)
Overhaul CONTRIBUTING.md and all GitHub issue/PR templates to enforce a structured, approval-gated contribution process that cuts down on drive-by feature submissions. Changes: - CONTRIBUTING.md: add Types of Contributions section defining Fix, Enhancement, and Feature with escalating requirements and explicit rejection criteria; add Issue-First Rule section making clear that enhancements require approved-enhancement and features require approved-feature label before any code is written; backport gsd-2 testing standards (t.after() per-test cleanup, array join() fixture pattern, Node 24 as primary CI target, test requirements by change type, reviewer standards) - .github/ISSUE_TEMPLATE/enhancement.yml: new template requiring current vs. proposed behavior, reason/benefit narrative, full scope of changes, and breaking changes assessment; cannot be clicked through - .github/ISSUE_TEMPLATE/feature_request.yml: full rewrite requiring solo- developer problem statement, what is being added, full file-level scope, user stories, acceptance criteria, maintenance burden assessment, and alternatives considered; incomplete specs are closed, not revised - .github/pull_request_template.md: converted from general template to a routing page directing contributors to the correct typed template; using the default template for a feature or enhancement is a rejection reason - .github/PULL_REQUEST_TEMPLATE/fix.md: new typed template requiring confirmed-bug label on linked issue and regression test confirmation - .github/PULL_REQUEST_TEMPLATE/enhancement.md: new typed template with hard gate on approved-enhancement label and scope confirmation section - .github/PULL_REQUEST_TEMPLATE/feature.md: new typed template requiring file inventory, spec compliance checklist from the issue, and scope confirmation that nothing beyond the approved spec was added Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
69
.github/pull_request_template.md
vendored
69
.github/pull_request_template.md
vendored
@@ -1,59 +1,38 @@
|
||||
## Linked Issue
|
||||
## ⚠️ Wrong template — please use the correct one for your PR type
|
||||
|
||||
> **Required.** PRs without a linked issue are closed without review.
|
||||
> Open an issue first if one doesn't exist: https://github.com/gsd-build/get-shit-done/issues/new/choose
|
||||
Every PR must use a typed template. Using this default template is a reason for rejection.
|
||||
|
||||
Closes #
|
||||
Select the template that matches your PR:
|
||||
|
||||
## What
|
||||
| PR Type | When to use | Template link |
|
||||
|---------|-------------|---------------|
|
||||
| **Fix** | Correcting a bug, crash, or behavior that doesn't match documentation | [Use fix template](?template=PULL_REQUEST_TEMPLATE/fix.md) |
|
||||
| **Enhancement** | Improving an existing feature — better output, expanded edge cases, performance | [Use enhancement template](?template=PULL_REQUEST_TEMPLATE/enhancement.md) |
|
||||
| **Feature** | Adding something new — new command, workflow, concept, or integration | [Use feature template](?template=PULL_REQUEST_TEMPLATE/feature.md) |
|
||||
|
||||
<!-- One sentence: what does this PR do? -->
|
||||
---
|
||||
|
||||
## Why
|
||||
### Not sure which type applies?
|
||||
|
||||
<!-- One sentence: why is this change needed? -->
|
||||
- If it **corrects broken behavior** → Fix
|
||||
- If it **improves existing behavior** without adding new commands or concepts → Enhancement
|
||||
- If it **adds something that doesn't exist today** → Feature
|
||||
- If you are not sure → open a [Discussion](https://github.com/gsd-build/get-shit-done/discussions) first
|
||||
|
||||
## How
|
||||
---
|
||||
|
||||
<!-- Brief description of the approach taken. Skip for trivial changes. -->
|
||||
### Reminder: Issues must be approved before PRs
|
||||
|
||||
## Testing
|
||||
For **enhancements**: the linked issue must have the `approved-enhancement` label before you open this PR.
|
||||
|
||||
### Platforms tested
|
||||
For **features**: the linked issue must have the `approved-feature` label before you open this PR.
|
||||
|
||||
- [ ] macOS
|
||||
- [ ] Windows (including backslash path handling)
|
||||
- [ ] Linux
|
||||
PRs that arrive without a labeled, approved issue are closed without review.
|
||||
|
||||
### Runtimes tested
|
||||
See [CONTRIBUTING.md](../CONTRIBUTING.md) for the full process.
|
||||
|
||||
- [ ] Claude Code
|
||||
- [ ] Gemini CLI
|
||||
- [ ] OpenCode
|
||||
- [ ] Codex
|
||||
- [ ] Copilot
|
||||
- [ ] N/A (not runtime-specific)
|
||||
---
|
||||
|
||||
### Test details
|
||||
|
||||
<!-- How did you verify this works? Manual steps, automated tests, etc. -->
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] Issue linked above (`Closes #NNN`) — **PR will be auto-closed if missing**
|
||||
- [ ] Follows GSD style (no enterprise patterns, no filler)
|
||||
- [ ] Updates CHANGELOG.md for user-facing changes
|
||||
- [ ] No unnecessary dependencies added
|
||||
- [ ] Works on Windows (backslash paths tested)
|
||||
- [ ] Templates/references updated if behavior changed
|
||||
- [ ] Existing tests pass (`npm test`)
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
<!-- List any breaking changes, or write "None" -->
|
||||
|
||||
None
|
||||
|
||||
## Screenshots / recordings
|
||||
|
||||
<!-- If this is a visual change, add before/after screenshots. Delete this section if not applicable. -->
|
||||
<!-- If you believe your PR genuinely does not fit any of the above categories (e.g., CI/tooling changes,
|
||||
dependency updates, or doc-only fixes with no linked issue), delete this file and describe your PR below.
|
||||
Add a note explaining why none of the typed templates apply. -->
|
||||
|
||||
Reference in New Issue
Block a user