azure/report-feedback
Retrieve negative feedback on AI-generated APIView comments. Use for: feedback report, comment feedback, show feedback, feedback for March, what feedback, downvotes, deleted comments, bad comments.
npx skills add https://github.com/Azure/azure-sdk-tools --skill report-feedback
Feedback describes why a bad AI comment is bad. Each feedback entry includes a reason (e.g., FactuallyIncorrect, AcceptedSDKPattern, RenderingBug) and an optional free-text comment. There are no upvotes in the feedback data — upvotes on comments exist in APIView but are not surfaced through this report. All feedback returned by this command is negative.
Do NOT state that feedback is "100% bad" or highlight that all feedback is negative in your summary. This is always the case by design — the report only surfaces negative feedback. Treat it as a given and focus the summary on the count, reasons, themes, and actionable insights.
Unless the user says otherwise, always apply these defaults:
production--language unless user specifies one)--exclude unless user asks to filter out certain feedback types--include-implicit by default. Only omit it if the user explicitly asks to exclude implicit bad comments.--format)The --include-implicit flag also returns implicit bad comments: AI comments on approved revisions that were never upvoted, downvoted, resolved, and have no Feedback entries. The inference is that the reviewer ignored them and approved anyway, suggesting they were unhelpful.
> Date semantics differ: Explicit feedback is filtered by feedback submission time (Feedback[].SubmittedOn / ChangeHistory[].ChangedOn), but implicit bad is filtered by comment creation time (CreatedOn). A comment created in January with no interaction will appear in January's implicit bad results, not March's.
This skill always passes --include-implicit (the CLI flag defaults to off, but the skill includes it for completeness). It has a weaker signal than explicit feedback because there is no reason or confirmation — just silence. Only omit --include-implicit if the user explicitly asks to exclude them (e.g., "only explicit feedback", "exclude implicit bad").
The output will contain items with "FeedbackTypes": ["implicit_bad"].
When presenting results, break out implicit bad themes separately from explicit feedback:
bad, delete).This separation helps the user understand the strength of signal behind each theme.
The user will typically specify a calendar month by name (e.g. "March", "January 2025"). Resolve to the full month date range:
| User says | start_date | end_date |
|-----------|-----------|----------|
| "March" (current year) | YYYY-03-01 | YYYY-03-31 |
| "January 2025" | 2025-01-01 | 2025-01-31 |
| "March 1 to March 15" | YYYY-03-01 | YYYY-03-15 |
When only a month name is given without a year, use the current year. Be careful with month lengths (28/29/30/31 days).
Show the resolved command and run it immediately in a foreground terminal with a 120-second timeout (timeout: 120000). Redirect to a file since feedback output can be very large.
Full terminal command (cleanup + run):
New-Item -ItemType Directory -Path output -Force | Out-Null; if (Test-Path output/feedback_output.json) { Remove-Item output/feedback_output.json }; python cli.py report feedback -s <start_date> -e <end_date> --include-implicit | Out-File -Encoding UTF8 output/feedback_output.json
After the command completes, read the output file with read_file to get the JSON results. Summarize the findings for the user (total count, breakdown by feedback reason, common themes, etc.).
For follow-up questions about the same data (filtering, counting, searching), read the output file with read_file instead of re-running the command. The file is at output/feedback_output.json.
# All feedback for March 2025 (implicit bad included by default)
python cli.py report feedback -s 2025-03-01 -e 2025-03-31 --include-implicit
# Python feedback only
python cli.py report feedback -s 2025-03-01 -e 2025-03-31 -l python --include-implicit
# Exclude implicit bad (only explicit feedback)
python cli.py report feedback -s 2025-03-01 -e 2025-03-31
# Exclude good feedback (show only bad and deleted)
python cli.py report feedback -s 2025-03-01 -e 2025-03-31 --include-implicit --exclude good
# YAML output
python cli.py report feedback -s 2025-03-01 -e 2025-03-31 --include-implicit --format yaml
# Staging environment
python cli.py report feedback -s 2025-03-01 -e 2025-03-31 --include-implicit --environment staging
| Flag | Type | Default | Description |
|------|------|---------|-------------|
| --start-date / -s | string | required | Start date (YYYY-MM-DD) |
| --end-date / -e | string | required | End date (YYYY-MM-DD) |
| --language / -l | string | all | Language to filter by (e.g., python, Go, C#) |
| --environment | string | production | production or staging |
| --exclude | list | none | Feedback types to exclude: good, bad, delete, implicit_bad |
| --include-implicit | flag | off | Include implicit bad comments (unresolved, unvoted on approved revisions) |
| --format / -f | string | json | Output format: json or yaml |
read_file rather than relying on terminal output.python cli.py not .\avc: The avc.bat script may resolve to system Python.2>&1: Merges stderr into stdout, corrupting JSON. Only redirect stdout.>: Produces UTF-16 in PowerShell 5.1. Use | Out-File -Encoding UTF8.Take azure/report-feedback from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.