Publish one paragraph about a hunt that landed
post_storyPut this review in the public OhMyBug feed: what the hunt found, plus the transferable lesson. Requires a confirmed REAL bug on the review. A story is also how a free hunt is earned: it is the STORIES that count, not the bugs behind them, and only stories about a hunt that found a real bug of medium severity or higher (private stories count too). How many publications that takes comes from the server – free_review_rule in get_balance, and share.ask_user in the confirm_findings answer; never quote a number for it from memory or from this description. NEVER post without showing the user the exact text and getting their approval: it is published publicly under their GitHub handle (signed "a hunter", "via API" or "via CI" instead when the account, the key or the channel signs anonymously; if the user wants THIS story without their name, call post_story_anonymous instead) — unless the account or key keeps stories private, when it is stored off every public page and the answer says visibility: "private". With the story check on, the answer can instead say published: false, status: "checking" with a /me/stories url and a note: the story reaches the feed only if the check passes it. Draft to the format below WITHOUT being asked and without asking the user to shorten or redact it for you. Set rounds_survived to the number of review passes (human or agent) this bug slipped through before OhMyBug caught it – that number, not bug count, is what the leaderboard ranks. FORMAT – write it ONCE to these budgets; never ask the user to shorten it for you. text: exactly 2 sentences, 220 characters max. Sentence 1 = the trap, concretely. Sentence 2 = what happens when it fires. lesson: up to 2 rules, ONE line each, 200 characters total – bold imperative rule then half a sentence of why. A rule an engineer could paste into their own guidelines unchanged. VOICE: plain short words, active, present tense. No hedging ("may potentially"), no filler ("it is important to note"), no adverbs propping up a verb, no words a junior would have to look up. Name the failure so a reader can see it happen. ENGLISH ONLY: the feed is one public wall, and a post in the language of your chat is unreadable to most of it. Translate it, do not transliterate. EXAMPLE (this length, this register): text = "A catch keyed on an interface with two members, and the tests only ever drove one of them through it. Narrow the catch to that member and every test stays green while the other error is swallowed." lesson = "Run the last net first. The pass that catches what others missed pays most on the earliest diff.
Never hand a reviewer a skip-this list. They trust it, so your blind spot becomes theirs." ANONYMISE: the reader has no context on this project and must not learn anything private from it. NO NAMES OF ANY KIND: no repo, project, company, customer, vendor, model or tool; no file, module, class, function, table, column, field, config key, env var, route or endpoint; no infrastructure by name (pods, clusters, queues, databases); no code in backticks, no URLs, ticket numbers or test counts, nothing that says what the product does or for whom. NO RECIPE: tell the class of defect, never the steps that exploit it – nothing on how to skip a payment, quota, limit, check or gate, nothing on how keys, credentials or accounts are issued, stored, rotated or routed, no prices or thresholds. A reader with none of your context must find it useful; a competitor or an attacker must learn nothing about the project.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"review_id": "<review_id>",
"text": "<text>"
},
"name": "post_story"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The defect, in English: exactly 2 sentences, 40-220 chars, approved by the user. What could break and why nothing caught it. Anonymised – no repo, paths, routes, vendors, ticket numbers or test counts. | |
| lesson | No | In English, at most 2 lines and 200 chars, each stated as a RULE another engineer or agent could paste into their own guidelines: the principle, then what follows from it. This is the half people keep – write it. | |
| review_id | Yes | ||
| rounds_survived | No | How many review rounds this bug survived before the hunt caught it (0 if it was the first review). Be honest: this is the score. |