Move work between Discord and the trackers - #5
Conversation
Answering was only half the job. The expensive part of a community question is rarely the answer — it is that the signal dies in chat. A bug reported at midnight, an API someone expected to exist, an idea that gets three "yes please" reactions: none of it reaches a tracker unless a maintainer happens to be reading and happens to transcribe it. Prompter is already in those conversations. /issue drafts the issue from what someone described — title, body, kind, product — routes it to the owning repository, offers likely duplicates, and shows an ephemeral preview. Nothing reaches GitHub until the button is pressed, which is what keeps filing a person's decision rather than an inference from a message. Drafts live in memory for fifteen minutes and are taken on click, so a double-click cannot file twice and an abandoned draft leaves no trace: D-13 is untouched, because nothing is persisted. POST /github/webhook verifies GitHub's HMAC against the raw body, ignores everything that is not issues.opened so a repository can point its whole webhook at it, skips bots and pull requests, honors a no-prompter label, and answers only where a repository opted in. It stays silent when it cannot ground an answer — a tracker comment is the most visible thing this bot does, and a hedged guess costs a maintainer more attention than it saves. The maintainer channel is told either way, and "nothing in the docs covers this" is the more useful of the two. Everything is off until its credentials exist, so deployments that set nothing behave exactly as before. One spec caught a real bug: eviction ordered by timestamp ties when several drafts are held in the same clock tick, so "drop the oldest" dropped an arbitrary one. Ordered by insertion sequence now. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015LV2femm3ZR47Lk2SscwJb
|
Reviewer context — none of this belongs in the release notes. Scope correction. These were planned here as a documentation feature growing out of the docs-gap flywheel. That was too narrow: the intent covers bugs, missing APIs, feature requests and ideas as much as docs. D-16 records the corrected scope — Prompter moves work between the community and the trackers, and answering is only half its job. Guardrails, since this is the first thing Prompter does that is visible outside Discord.
Anyone may file, per D-16: at this community's size an approval step costs more in missed reports than it saves in noise. Duplicate hints, the shared rate limit and the Q-7 is answered — issues go to the owning product repository. That makes the product classifier (P-30) a dependency rather than a nice-to-have; today the model names the product and the preview says so explicitly when it could not tell, rather than filing into the fallback quietly. Not built, deliberately. P-47 (handing mechanical issues to a coding agent) — Prompter files issues, GitHub's own agents act on them, behind a human-applied label, draft PRs only, opt-in repositories. It needs its own decision record first. The message context-menu entry point ("File as issue" on an existing message) also waits: NetCord's message-command context was not compile-verifiable against beta.12 in this pass. PAT or GitHub App? The playbook starts with a fine-grained PAT because it is one secret and no setup. Worth knowing what it costs: issues show the token owner's name as author, it expires, and it shares that person's rate limit. An App gives Prompter its own identity and no expiry for about an hour of setup. The code sends either as a bearer token, so switching is changing one secret. Verification. One spec caught a real bug while writing it: draft eviction ordered by timestamp ties when several drafts are held in the same clock tick, so "drop the oldest" dropped an arbitrary one. It orders by insertion sequence now. |
Summary
Prompter now moves work between Discord and the Cratis issue trackers, in both directions.
Added
/issueturns a Discord conversation into a GitHub issue on the owning repository — bugs, missing APIs, feature requests, ideas, documentation gaps — drafted by Prompter and filed only after you confirm an ephemeral preview (P-45).