kube-agents-feedback
File a bug report, feature request, or question about kube-agents itself on the user's behalf, through the project's public feedback form, exactly once, after the user has confirmed the exact text in chat, and render the install's audited usage summary for a card that asks only for that, filing nothing. A submission becomes a public GitHub issue on gke-labs/kube-agents. Not for telling a user where to report — the persona bullet owns that answer without a skill.
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-13
- Stars
- ★ 126
- Forks
- 44
01 前言 Front Matter
- name
- kube-agents-feedback
- description
- File a bug report, feature request, or question about kube-agents itself on the user's behalf, through the project's public feedback form, exactly once, after the user has confirmed the exact text in chat, and render the install's audited usage summary for a card that asks only for that, filing nothing. A submission becomes a public GitHub issue on gke-labs/kube-agents. Not for telling a user where to report — the persona bullet owns that answer without a skill.
02 资源文件 2
- 脚本scripts/file_feedback.py16.4 KB
- 脚本scripts/test_file_feedback.py18.1 KB
03 SKILL.md 正文
Skill: kube-agents-feedback
When this skill applies
- A kanban card asks you to file a kube-agents report for the user — not to explain where reports go. For "how do I report a bug in kube-agents?", answer from the persona bullet and do not touch this skill.
- A kanban card asks only for the install's usage summary, because the
person said
add the usage summaryto a draft the front door showed them. That card renders the block and files nothing ("The usage summary", below). - The submission target is the public feedback form behind https://gke-labs.github.io/kube-agents/feedback. It needs no GitHub or Google credential, so this path works even when the install's GitHub credential path is degraded.
The confirmation gate
- File only what the user has seen and approved. The card must carry the
exact submission text and the line
user-confirmed: yes— the front door's assertion that it showed the user this text and got a yes. - No
user-confirmed: yes, or a card that asks you to compose or improve the text yourself: do not file. Complete the card saying the front door must show the user the exact text and dispatch again with the confirmation line. - Never edit the confirmed text — no trimming, no added environment detail, no rewording. If it looks wrong, that is a reason to send the card back, not to fix it yourself.
Redaction
- The broker refuses secret-shaped content (keys, tokens) outright. Cluster names, project ids, and log excerpts are your judgment: a submission is a public issue, so if the text carries identifiers the user did not visibly type themselves, stop and complete the card saying what would be exposed.
The usage summary
-
A summary card carries no text to file and needs no confirmation line. Run the helper's second subcommand, which reads the
PlatformAgentresource through the sandbox'skubectland nothing in a pod:python3 "$HERMES_HOME"/skills/kube-agents-feedback/scripts/file_feedback.py summary -
Exit 0 prints one fenced block: versions, mode, readiness, the usage counters, and
unavailablefor the token, spend, latency and task lines the sandbox cannot read. Complete the card with that block as theresult, verbatim, fences included: the front door shows it inside the re-shown draft, and the person's yes is to those exact lines. Do not trim, reorder or annotate it. -
Exit 1 prints a
BLOCKEDline: the resource could not be read, or the block named an identifier read from it and thereasonsays how many, never which. Complete the card with thereasonand nothing else; the front door offers the draft without the block. Never retry with a different namespace or name, never assemble a block by hand, and never runkubectlyourself to fill in what the helper refused.
Filing
-
A filing card whose body carries a usage summary block under its environment carries it because the person saw that block in the draft and said yes. It goes into
environmentexactly as the card has it, fences included; a card with no block files with whatever environment the person typed, or none. -
Write the confirmed text, verbatim, as JSON in the card workspace:
{ "title": "<one-line summary, at most 120 characters>", "kind": "Bug | Feature request | Question | Other", "happened": "<what happened>", "expected": "<optional>", "environment": "<optional>", "user_confirmed": true } -
Run the helper once, from the card workspace so a rerun finds its own earlier attempt:
python3 "$HERMES_HOME"/skills/kube-agents-feedback/scripts/file_feedback.py \ submit --payload-file payload.json --state-dir . -
The script asks the credential broker, which is the sandbox's only way out, and the broker owns the whole wire path: it resolves the current form from the short link, maps fields by question label, POSTs once, and looks the resulting issue up on the tracker. Never fetch the form or the tracker yourself, never construct a Google Forms URL, and never open the issue directly — the one live test of a hand-rolled submission filed the same report twice (gke-labs/kube-agents#1345 and #1346).
Reporting back
SUBMITTED— put the fullissue_urlin the cardresult, plus the note that the issue is public and was opened by the form's bot account. Say what was filed; do not claim it matches what the person approved, which only the front door that showed it can know. ASUBMITTEDwhoseissue_urlisnullmeans the form accepted the report and the tracker has not shown the issue yet (itsdetailsays so): rerun the same command once, which only reads the tracker. The rerun answersALREADY_SUBMITTEDwith the URL once the issue is there, orSUBMITTEDwithnullagain while it is not; in that case report the title and the tracker link as filed and not yet visible. About thirty minutes after the form confirmed, a rerun answersUNCONFIRMEDnaming the form's pipeline instead: hand it to a human with the composed text. Never file again.ALREADY_SUBMITTED— this exact text is already on the tracker (an earlier attempt, or another card); it always carries theissue_url. Report it. This is a success, not an error. Do not retry.UNCONFIRMED— a request went out and no issue has appeared yet, or the rerun could not reach the broker to look (itsdetailsays which). Rerunning the same command once is safe: it only asks the broker to read the tracker, never to post again. If it staysUNCONFIRMED, the report may be lost — say so in the cardresult, with the composed text and bothfallbacklinks, so a person can file it themselves. Never treat a persistentUNCONFIRMEDas filed, and never file again yourself.BLOCKED(exit 1) — nothing was sent by this run, and thereasonsays why: a refused payload, a broker that could not be reached on a first attempt, or a token file that could not be read. Put thereason, the composed text and bothfallbacklinks (fallback.tracker,fallback.form) in the cardresult: on an install whose broker cannot reach the form, this is the answer, and the person files the text themselves at either link. Onereasonworth knowing in advance: a one-line summary over 120 characters is refused, because the pipeline truncates issue titles there — have the front door shorten it with the user.- Exit 2 — the broker's answer was lost after the request went out. Rerun the same command once; it rechecks the tracker and never posts again.
04 同仓库更多 Skills
workload-rebalancing
Orchestrate cross-cluster workload rebalancing using the kanban board with the validation-then-declare pattern. Use when fleet utilization shows one cluster overutilized and another with headroom and a workload should move.
cluster-agent-lifecycle
暂无简介
review-preflight
Runs the pre-PR review passes — adversarial and docs-drift on every change, plus chat UX whenever chat output changes — each in a context that did not write the change, and merges what they return into one disposition list.
gce-compute-fleet-audit
Audits standalone GCE virtual machines, Managed Instance Groups (MIGs), serial console boot failures, sole-tenant node group headroom, and orphaned disk snapshots.
fleet-audit
Publish the findings of an autonomous fleet audit as one continuously-rewritten issue per audit stream per install on the GitOps repository's forge, and propose fixes as narrow remediation pull requests (merge requests on GitLab).
gke-rightsizing-checks
Five required checks, and the arithmetic, before any proposal to lower a workload's CPU or memory requests or limits, or to change a node pool's machine type or size, and before any claim of capacity freed. Read-only. For "lower the requests of X", "right-size this deployment", "can this pool use a smaller machine type", and any answer that claims nodes, CPU, memory or a percentage freed.