Install any skill in seconds. Free to start, no credit card required.
Get Started Free →File a bug report, feature request, or feedback about Sutando to the team from any surface (chat, Discord, Telegram, or a voice-delegated task). Reuses the cloud /api/feedback API and auto-attaches diagnostic context. Use when the user says "report a bug", "something's broken, file it", "I have a feature request", etc.
.claude/skills/sonichi-report-feedback/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 322% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 10% | 0% |
When the user asks to report a bug / issue / feature request / feedback about Sutando itself — e.g. "report a bug", "something's broken, file it", "I have a feature request" — use this skill to file it.
It posts to the cloud /api/feedback route (the same one the desktop "Report an issue" form uses, which mirrors into GitHub issues) and auto-attaches diagnostic context (platform + a tail of recent workspace logs), so you don't need to gather logs yourself.
This is the single reporting path for all surfaces — chat, Discord, Telegram, and voice (which reaches it by delegating the task to the core agent). There is intentionally no separate voice tool, to avoid duplicating the same capability.
bashpython3 skills/report-feedback/report-feedback.py \ --title "<short one-line summary>" \ [--body "<what happened, steps to reproduce, what was expected>"] \ [--kind bug|feature|other] \ [--severity low|medium|high|critical] \ [--no-logs] [--auto]
kind (default bug) and severity (default medium) from context.--no-logs. This makes it an informed opt-out rather than a silent default (especially important on voice, where the user can't see what's being sent). Log excerpts are redaction-scrubbed (Bearer tokens, token=/api_key=/secret= values, common key formats, and the home-dir username are masked) as a backstop, but announcing is still required.--auto)When you (not the user) determine that a bug or error is caused by Sutando itself or AG2 Space — engine services, bridges, the desktop app, AG2 Space connectivity, or the AG2 cloud — file it automatically with --auto. Never --auto-file problems in the user's own projects or code, third-party tools/sites/APIs, or expected failures (bad input, credentials the owner simply hasn't provided).
--auto enforces the owner's Settings toggles (read from <workspace>/state/feedback-prefs.json, written by the desktop app; both default ON when the file is absent):
SKIPPED and exits 3. Respect it — do not retry or route around it.--no-logs.Auto reports are also deduped (an identical title within 24h) and rate-limited (5 per 24h) via <workspace>/state/feedback-auto-reports.json. A SKIPPED exit (3) is a normal outcome, not an error — just move on. After filing an auto report, tell the owner in one short sentence (e.g. "I've filed a bug report about this"); the Settings toggle is the consent surface, so don't ask permission first.
NOT_SIGNED_IN and exits 2 — relay that and ask them to sign in, then retry. For --auto reports, don't nag: mention it at most once.OK: filed <kind> report. On API error it prints ERROR: … — relay a brief apology and offer to retry.0 filed, 1 error, 2 not signed in, 3 skipped (auto reports disabled, duplicate, or rate-limited).Owner-tier only — it files under the owner's Sutando Cloud identity, and it reads the owner's cloud token + attaches the owner's workspace log tail. Do not run it for non-owner (team/other) Discord, Slack, or Telegram tiers.
Non-owner tasks never reach this skill: the bridges route team/other tiers to a sandboxed codex exec --sandbox read-only agent (see CLAUDE.md access-control), which has no cloud token and cannot execute this script — so a non-owner can't ship the owner's logs into an issue. Only access_tier: owner (or an unauthenticated local/voice owner task) is processed with full capabilities that can invoke this skill.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,605 | 8,619 | +54% | 1 | 1 | 0% | 710 | 1,663 | +134% | 0 | 0 | — |
case-02 | fail→fail | 7,608 | 15,355 | +102% | 1 | 1 | 0% | 991 | 2,170 | +119% | 0 | 0 | — |
case-03 | fail→fail | 10,154 | 15,743 | +55% | 1 | 1 | 0% | 1,515 | 2,112 | +39% | 0 | 0 | — |
case-04 | fail→pass | 3,596 | 5,723 | +59% | 1 | 1 | 0% | 495 | 2,090 | +322% | 0 | 0 | — |
case-19 | fail→fail | 3,812 | 19,367 | +408% | 1 | 1 | 0% | 523 | 2,952 | +464% | 0 | 0 | — |
case-05 | fail→pass | 14,777 | 4,525 | -69% | 1 | 1 | 0% | 1,888 | 1,874 | -1% | 0 | 0 | — |
case-06 | pass→pass | 6,884 | 5,686 | -17% | 1 | 1 | 0% | 951 | 2,096 | +120% | 0 | 0 | — |
case-07 | fail→fail | 10,795 | 8,127 | -25% | 1 | 1 | 0% | 1,464 | 1,551 | +6% | 0 | 0 | — |
case-08 | fail→pass | 10,276 | 11,184 | +9% | 1 | 1 | 0% | 1,435 | 1,976 | +38% | 0 | 0 | — |
case-20 | fail→fail | 8,629 | 4,485 | -48% | 1 | 1 | 0% | 1,183 | 1,808 | +53% | 0 | 0 | — |
case-09 | fail→pass | 32,454 | 4,738 | -85% | 1 | 1 | 0% | 1,248 | 1,705 | +37% | 0 | 0 | — |
case-10 | pass→pass | 13,827 | 4,846 | -65% | 1 | 1 | 0% | 2,138 | 1,744 | -18% | 0 | 0 | — |
case-11 | pass→pass | 9,592 | 3,954 | -59% | 1 | 1 | 0% | 1,373 | 1,680 | +22% | 0 | 0 | — |
case-12 | fail→pass | 10,919 | 3,651 | -67% | 1 | 1 | 0% | 1,447 | 1,588 | +10% | 0 | 0 | — |
case-13 | fail→fail | 7,357 | 28,679 | +290% | 1 | 1 | 0% | 1,140 | 6,313 | +454% | 0 | 0 | — |
case-14 | fail→fail | 7,192 | 7,395 | +3% | 1 | 1 | 0% | 851 | 1,445 | +70% | 0 | 0 | — |
case-15 | fail→fail | 11,133 | 8,644 | -22% | 1 | 1 | 0% | 1,523 | 2,293 | +51% | 0 | 0 | — |
case-16 | fail→pass | 9,787 | 4,476 | -54% | 1 | 1 | 0% | 1,547 | 1,936 | +25% | 0 | 0 | — |
case-17 | fail→fail | 10,636 | 2,319 | -78% | 1 | 1 | 0% | 1,304 | 1,452 | +11% | 0 | 0 | — |
case-18 | fail→pass | 8,061 | 4,081 | -49% | 1 | 1 | 0% | 1,300 | 1,761 | +35% | 0 | 0 | — |
case-21 | fail→fail | 4,563 | 12,328 | +170% | 1 | 1 | 0% | 706 | 1,776 | +152% | 0 | 0 | — |
case-22 | pass→pass | 7,651 | 6,596 | -14% | 1 | 1 | 0% | 1,071 | 1,563 | +46% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 16 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 16 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/24/2026 | +5% |
Other measured skills in the registry, with their headline benchmark lift.