Contract for capturing in-app product feedback as labeled GitHub issues and linking fixes via changelog fragments.
Copilot ✓Cursor ✓Kilo ✓
AuthorNeexoCore
Updated
feedbackgithubsaas
Overview
Pattern for SaaS apps that let users submit bug reports or feature requests from the product UI, tracked as GitHub issues, then closed when a fix ships.
This cookbook is a process contract, not a UI kit. Implement capture UI in the consuming app.
Flow
User capture (context + description [+ media])
→ GitHub issue (labels e.g. feedback / from-app)
→ Engineering fix on a branch
→ Changelog fragment links the issue number (when the repo supports it)
→ Merge to main → close the issue
Capture payload (minimum)
Type: bug | feature | other (repo-defined)
Description (user language)
Optional: route/URL, app version, org id (never secrets), screenshots
When the repository's changelog schema supports it, set an integer field such as fixesGithubIssue on the user-facing fragment so reporters can correlate “what's new” with their report.
On merge to the default branch:
Confirm the fragment built and passed changelog:check
Close the GitHub issue (or let Fixes #N in the PR do it)
Do not leave feedback issues open after the fix is on main
Do not
Put PII or secrets in issue bodies or changelog fragments
Treat this cookbook as permission to invent product routes or copy from another app
Skip the changelog link when the repo's commit skill requires it for feedback fixes
Copy into your project — e.g. .instructions.md, .agent.md, or SKILL.md
## Overview
Pattern for SaaS apps that let users submit bug reports or feature requests from the product UI, tracked as GitHub issues, then closed when a fix ships.
This cookbook is a **process contract**, not a UI kit. Implement capture UI in the consuming app.
## Flow
```text
User capture (context + description [+ media])
→ GitHub issue (labels e.g. feedback / from-app)
→ Engineering fix on a branch
→ Changelog fragment links the issue number (when the repo supports it)
→ Merge to main → close the issue
```
## Capture payload (minimum)
- Type: bug | feature | other (repo-defined)
- Description (user language)
- Optional: route/URL, app version, org id (never secrets), screenshots
Create the issue with `gh` when possible:
```bash
gh issue create --title "..." --body "..." --label feedback --label from-app
```
## Linking a fix
When the repository's changelog schema supports it, set an integer field such as `fixesGithubIssue` on the user-facing fragment so reporters can correlate “what's new” with their report.
On merge to the default branch:
1. Confirm the fragment built and passed `changelog:check`
2. Close the GitHub issue (or let `Fixes #N` in the PR do it)
3. Do not leave feedback issues open after the fix is on main
## Do not
- Put PII or secrets in issue bodies or changelog fragments
- Treat this cookbook as permission to invent product routes or copy from another app
- Skip the changelog link when the repo's commit skill requires it for feedback fixes
## Related
- [Product Changelog Fragments](/cookbook/product-changelog-fragments)
- [GitHub CLI](/tools/github-cli)
- [product-changelog](/skills/product-changelog) skill