Report Bug
Reply in Russian. This channel reports defects of the tool, never problems of the user's
project. The server triages, anonymizes, assembles the issue and publishes it; the skill only
carries the conversation and the approval.
The plugin runs on commercial codebases. Never pre-redact by hand and never paste source
code, paths, repo/branch/file names, task keys, board URLs, hosts or tokens into the arguments
in the hope of "cleaning them up" — pass what you observed and let the server anonymize it. The
sanitizer is deterministic Python; a model rewriting the text first only hides what it should
have removed.
- Decide whether it is ours. Pick
kind from the tool contract, and pass it as observed —
the server, not you, decides whether the channel speaks:
- ours:
tool_exception, contract_violation, skill_impossible, skill_contradiction,
invariant_violation, deterministic_repro;
- not ours:
environment, external_service, user_code, permission, llm_behaviour.
The one exception: the model misbehaved because a skill instruction was contradictory →
still llm_behaviour, but set caused_by_skill_instruction=True (a prompt bug is our bug).
A not_reported status is a normal outcome — report nothing to the user beyond a brief note.
- Pick severity.
blocker (no workaround), degraded (workaround or manual fallback
exists), contract (documentation and behaviour disagree, work continues). Offer blocker
and degraded immediately; the server marks contract with defer=true — collect those and
offer them as one batch at the end of the session.
- Preview (never skip). Call
report_bug(kind=<kind>, summary=…, expected=…, actual=…, steps=[…], severity=<level>,
tool=<mcp tool name>, skill_step=<skill and step>, error_class=<exception class>,
details=…, repo=<owner/name>, branch=<branch>,
client_environment={"orchestrator_model": …, "subagent_models": …,
"mode": "subagent|inline", "cli": …, "cli_version": …},
scale={"clusters": N, "files": N, "findings": N, "tasks": N},
index_drift=<int or null>)
without confirmed. Nothing is published. Handle the status: disabled — the channel is off
for this repo or deploy, say so and stop; not_reported / suppressed — stop quietly.
- Show and ask. Show the returned
issue_text in full, verbatim — no summary, no
abridgement — plus the target repository, the environment_keys list, and the
identity_notice: the issue is published from the user's GitHub account and their username
will be visible in a public repository; the alternative is to decline and open the issue by
hand from the prepared markdown. Offer to trim the Environment block: any lines, or the whole
block. Then ask for an explicit yes.
- Publish only on an explicit yes. Repeat the same call with
confirmed=True and, if the
user trimmed anything, environment_exclude=[…] (or environment_include=[…]). In a
headless, cron or background run there is no human to approve: pass non_interactive=True,
which makes the server return a fallback markdown instead of publishing. Never publish
autonomously in any mode.
published — report the issue URL.
commented — a matching open issue existed; report that a comment was added and give both
URLs.
fallback — publication was not possible (no token, no rights, no network, headless):
relay the reason, show the markdown and the fallback_url so the user can post it by hand.
This is not a session failure — continue the work that was interrupted.
- On a refusal call
report_bug(kind=…, summary=…, decline=True) with the same arguments,
so the same symptom is not offered again in this session.
Every read is fail-open, and the confirmed=True call is the only write. If the channel itself
fails, say so in one line and carry on with the original task.
1---2name: report-bug3description: Report a defect of reviewer or its plugin as an anonymized GitHub issue in mimfort/rag_for_git, after explicit user approval. Use when a reviewer tool breaks its own contract, a skill prescribes an impossible step, a stated invariant fails, or the user asks to report a reviewer bug.4---56# Report Bug78Reply in Russian. This channel reports defects **of the tool**, never problems of the user's9project. The server triages, anonymizes, assembles the issue and publishes it; the skill only10carries the conversation and the approval.1112**The plugin runs on commercial codebases.** Never pre-redact by hand and never paste source13code, paths, repo/branch/file names, task keys, board URLs, hosts or tokens into the arguments14in the hope of "cleaning them up" — pass what you observed and let the server anonymize it. The15sanitizer is deterministic Python; a model rewriting the text first only hides what it should16have removed.17181. **Decide whether it is ours.** Pick `kind` from the tool contract, and pass it as observed —19 the server, not you, decides whether the channel speaks:20 - ours: `tool_exception`, `contract_violation`, `skill_impossible`, `skill_contradiction`,21 `invariant_violation`, `deterministic_repro`;22 - not ours: `environment`, `external_service`, `user_code`, `permission`, `llm_behaviour`.23 The one exception: the model misbehaved **because a skill instruction was contradictory** →24 still `llm_behaviour`, but set `caused_by_skill_instruction=True` (a prompt bug is our bug).25 A `not_reported` status is a normal outcome — report nothing to the user beyond a brief note.262. **Pick severity.** `blocker` (no workaround), `degraded` (workaround or manual fallback27 exists), `contract` (documentation and behaviour disagree, work continues). Offer `blocker`28 and `degraded` immediately; the server marks `contract` with `defer=true` — collect those and29 offer them as one batch at the end of the session.303. **Preview (never skip).** Call31 ```32 report_bug(kind=<kind>, summary=…, expected=…, actual=…, steps=[…], severity=<level>,33 tool=<mcp tool name>, skill_step=<skill and step>, error_class=<exception class>,34 details=…, repo=<owner/name>, branch=<branch>,35 client_environment={"orchestrator_model": …, "subagent_models": …,36 "mode": "subagent|inline", "cli": …, "cli_version": …},37 scale={"clusters": N, "files": N, "findings": N, "tasks": N},38 index_drift=<int or null>)39 ```40 without `confirmed`. Nothing is published. Handle the status: `disabled` — the channel is off41 for this repo or deploy, say so and stop; `not_reported` / `suppressed` — stop quietly.424. **Show and ask.** Show the returned `issue_text` **in full, verbatim** — no summary, no43 abridgement — plus the target repository, the `environment_keys` list, and the44 `identity_notice`: the issue is published from the user's GitHub account and their username45 will be visible in a public repository; the alternative is to decline and open the issue by46 hand from the prepared markdown. Offer to trim the Environment block: any lines, or the whole47 block. Then ask for an explicit yes.485. **Publish only on an explicit yes.** Repeat the same call with `confirmed=True` and, if the49 user trimmed anything, `environment_exclude=[…]` (or `environment_include=[…]`). In a50 headless, cron or background run there is no human to approve: pass `non_interactive=True`,51 which makes the server return a `fallback` markdown instead of publishing. Never publish52 autonomously in any mode.53 - `published` — report the issue URL.54 - `commented` — a matching open issue existed; report that a comment was added and give both55 URLs.56 - `fallback` — publication was not possible (no token, no rights, no network, headless):57 relay the reason, show the markdown and the `fallback_url` so the user can post it by hand.58 This is not a session failure — continue the work that was interrupted.596. **On a refusal** call `report_bug(kind=…, summary=…, decline=True)` with the same arguments,60 so the same symptom is not offered again in this session.6162Every read is fail-open, and the `confirmed=True` call is the only write. If the channel itself63fails, say so in one line and carry on with the original task.