jingbong
An imaginary friend for Linear and GitHub. It surfaces the consequences of a product change and the decisions it forces, and your team decides together in Linear, on the record.
github · guide · full install instructions
curl -fsSL https://jingbong.dev/ging_gang_gong_already.sh | sh
## what it does
Iterative, collaborative decision-making in Linear. jingbong runs the process and does the legwork, you and your team make the decisions.
## commands
@jingbong cpCheckpoint. Suggested title, what's been decided, open questions. React ✅ to write it into the issue.
@jingbong optEvery reasonable option with trade-offs, no recommendation. 👍 the one you pick. Reacting 🤔 on any comment does the same.
@jingbong buildImplements on a new branch, runs the checks, opens one PR per changed repo. Never merges.
@jingbong <text>Ask about the code or request work in plain words.
## examples
### ask in plain words
ENG-207 CSV download on reports sam reports page needs a download button, people keep copying the table into spreadsheets maya @jingbong how does the reports table get its rows? 👀 jingbong ReportsTable asks /api/reports for 50 rows at a time. filters and sort are query params, so the server already knows what's on screen.
### checkpoint
sam @jingbong cp 👀
jingbong suggested title: Export reports as CSV
what the issue is: a button on the reports page
that downloads the table as a CSV.
done looks like:
- a download button above the reports table
jingbong open question · from checkpoint
export only the 50 rows on screen, or every row
matching the current filters?
### answer, then react 🤔 for options
↳ sam every row with the filters applied. but some teams
have 200k rows, can a browser even do that? and
doesn't excel mangle accented names?
🤔 1
jingbong > every row with the filters applied. but some...
question: where the CSV gets built, so it stays
fast for big teams and opens cleanly in excel.
what decides it:
- how many rows the biggest exports have
- whether people will wait, or want it sent later
↳ jingbong A. build it in the browser from paged requests
no server work; slow and memory-hungry at 200k
↳ jingbong B. stream it from a new /api/reports.csv
fast at any size; one new endpoint
👍 1
↳ jingbong C. background job, email a link when done
handles any size; people wait, needs storage
↳ jingbong D. export .xlsx with a spreadsheet library
no excel encoding trouble; new dependency
### checkpoint until it's settled
sam @jingbong cp 👀 jingbong suggested title: Export reports as CSV done looks like: - a download button above the reports table - every row matching the current filters and sort - streamed from a new /api/reports.csv jingbong open question · from checkpoint write a UTF-8 byte order mark, so excel shows accented names correctly? ↳ sam yes maya @jingbong cp 👀 jingbong suggested title: Export reports as CSV done looks like: - a download button above the reports table - every row matching the current filters and sort - streamed from a new /api/reports.csv - UTF-8 with a byte order mark open questions: none ✅ 1 jingbong ✅ applied to the title and description (previous version kept in this comment)
### build
maya @jingbong build 👀
jingbong 🔨 building on jingbong/eng-207-export-reports-as-csv
jingbong opened #412, checks pass
- GET /api/reports.csv streams every matching row,
using the same filters and sort as the table
- "download CSV" button above ReportsTable
assumptions:
- file is named reports-<date>.csv
- button is disabled while the table is loading
## install
Bring your own agent CLI: OpenCode, Claude Code, Codex, Gemini or Cursor.
curl -fsSL https://jingbong.dev/ging_gang_gong_already.sh | sh
Needs git and Node.js 18+. Clones to ~/jingbong, builds it and puts jingbong on your PATH (read the script). Then run /jingbong-setup in your agent from that folder, or follow SELF_HOSTING.md and SETUP_COMMENT_MODE.md to connect Linear and GitHub.