About client-feedback
An agent skill that turns client feedback emails into tracked GitHub issues and helps draft professional replies. A Python script fetches and parses messages and downloads attachments, while the agent handles triage, verification, and fixes.
Key features
- 01Search Gmail by sender domain and date range
- 02Fetch message bodies and download attachments
- 03Create JSON reports with thread summaries
- 04Triage feedback into GitHub issues
- 05Draft replies grouped by email thread
Use cases
- 01Collect feedback emails from a client domain
- 02Turn distinct feedback items into separate issues
- 03Verify reports and locate code problems
- 04Prepare client replies for review
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ genericservice/ claude-skills --skill client-feedbackAfter installing, type/client-feedbackin Claude Code to confirm it loaded.
Bundled filesscripts/process_feedback.py
Details
From the project READMEClient Feedback Processor
Transform client feedback emails into tracked, investigated, and resolved GitHub issues with professional response emails.
This workflow uses a Script-First approach: a deterministic Python script handles the "labor" of fetching and parsing emails, leaving the agent to handle the "judgment" of triaging and fixing issues.
Usage
When the user asks to "process feedback", "check emails from [domain]", or "turn feedback into issues":
-
Run the processor script:
python3 ~/.agents/skills/client-feedback/scripts/process_feedback.py \ --domain "<client-domain>" \ --days 7 \ --out "./feedback-batch-$(date +%F)" -
Read the report: Load the generated
report.jsonand the full body text files to understand the feedback. -
Triage to GitHub: For each distinct piece of feedback in the report, create a GitHub issue or update an existing one.
Phase 1: Intake (Script-Driven)
The process_feedback.py script performs these tasks in seconds:
- Searches Gmail for emails from the specified domain/sender.
- Fetches full message payloads.
- Downloads attachments automatically to a local directory.
- Extracts plain-text bodies to individual files for easy reading.
- Generates a
report.jsonsummarizing threads, participants, and snippets.
Phase 2: Triage — GitHub issues
GitHub issues are the primary work board. One issue per item, not one per email.
Issue body template
## Reported by
[Person name] — [date] "[email subject]" (thread [threadId])
## Issue
[Verbatim quote if short, paraphrase if long]
## Status
[Open / awaiting client / in progress]
Apply labels based on category: feedback (always), bug, content, design, provider-data, question.
Phase 3: Investigate & Fix
Verify the feedback against the actual codebase. Grep globally for subjects of claims to ensure full removal or update.
Phase 4: Respond
Draft professional responses organized by email thread.
Key Rule: ALWAYS show the draft body text in chat before sending.
Signature policy
Keep signatures simple and professional. Avoid disclosing AI co-authorship unless the client relationship explicitly welcomes it.
Reference: Gmail multipart upload
If you need to draft a reply with inline images (e.g. before/after proofs), use the gws multipart upload flow documented in the script comments or process_feedback.py logic.