- name
- feedback
- description
- File structured feedback about TinyFish — bug reports, confusing setup steps, missing features, or a doctor diagnostic report. Creates a GitHub issue on tinyfish-io/tinyfish-cookbook with the user's approval; nothing is sent without an explicit preview.
# TinyFish Feedback
Collect the user's feedback, structure it, preview it, then file it. Nothing
leaves the machine without the user seeing the exact text first.
## Collect
Ask (briefly) for: what they were trying to do, what happened instead, and
what they expected. For anything setup-, auth-, or connectivity-shaped, run
`npx -y @tiny-fish/cli@latest doctor` and offer to attach its stdout JSON
verbatim — it is schema-versioned and already redaction-safe (undeclared
fields stripped on parse, messages authored rather than raw). Do not add
fields, summarise it, or paste config contents alongside it. On exit `2`
doctor produced no JSON — say so instead of attaching an empty report.
## Structure
```markdown
### What I was doing
…
### What happened
…
### Expected
…
### Environment
harness + version, CLI version (if known)
### Doctor report (optional)
`tinyfish doctor` stdout, verbatim
```
## Preview gate
Show the complete issue body to the user and ask for an explicit yes before
filing. Any edit they request happens before filing.
## File
- Preferred: write the body and the title to files, then `gh issue create
--repo tinyfish-io/tinyfish-cookbook --title "$(cat "$title_file")"
--body-file "$body_file"` (only if `gh` is installed and authenticated).
Both values come from the user's free-form text (the body also carries
doctor's JSON), so neither may reach the shell as literal text — including
in a `title=…` assignment, where backticks or `$(…)` are evaluated just the
same. `cat`'s output is not re-parsed. Never build the command as a string
or run it through `eval`.
- Fallback: open a prefilled issue URL
(`https://github.com/tinyfish-io/tinyfish-cookbook/issues/new?title=…&body=…`).
Percent-encode both values — an unencoded `#` truncates the body and `&`
splits it into junk parameters. URL length limits truncate long bodies
anyway — if the body was truncated, tell the user and show the full text
so they can paste the remainder.
This repo is public — remind the user of that in the preview if the report
contains anything they typed free-form.
View on GitHub