Skip to content

Encourage Agents to Proactively Offer Sent Feedback - #17

Merged
sent-dm merged 1 commit into
mainfrom
feedback-tool-enhancements
Oct 9, 2026
Merged

sent-dm merged 1 commit into
mainfrom
feedback-tool-enhancements

Conversation

@sent-dm

@sent-dm sent-dm commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator

Changes / Fixes / Features included

This PR includes changes / features as below:

  • The sent-feedback skill was only activated when a user explicitly asked to pass feedback on, so most friction agents and users hit during Sent workflows never reached us.
  • Updated the skill description so agents also discover it proactively when meaningful Sent friction occurs (missing functionality, errors unresolved after diagnosis, confusing results, repeated workarounds, user frustration).
  • Added a short "Offer feedback after meaningful friction" workflow: diagnose and try to resolve first, keep the user's task first, offer once in one sentence at a natural pause, and drop it if declined or ignored. Agents should not offer for routine or expected errors, problems unrelated to Sent, or an issue already offered.
  • Accepting an offer only authorizes a draft. Agents must preview the exact sanitized report and call feedback.send only after explicit approval. Agent-offered reports set source to agent.
  • No changes to MCP tool schemas, auth, the daily quota, PII minimization, retry rules, or untrusted-data handling. Existing safety rules in the skill are preserved.
  • Expanded evals/sent-feedback.yaml from 5 to 14 cases, covering proactive triggers, non-triggers (fresh, routine, expected, unrelated, already-declined), and overlap with sent-messaging.
  • Regenerated the distributed adapter copies (skills/, plugins/sent/, claude-plugins/sent/).

How to test?

In order to test changes included in the PR follow steps as below:

  • Run python3 scripts/generate_adapters.py --check. Generated adapters should match the canonical package.
  • Run python3 scripts/validate.py, python3 scripts/test_validation_gates.py, python3 scripts/test_fixtures.py, python3 scripts/test_contracts.py, and python3 scripts/test_live_contract.py. All should pass.
  • Run claude plugin validate . --strict and claude plugin validate ./claude-plugins/sent --strict. Both should pass.
  • With OPENAI_API_KEY set, run python3 scripts/run_model_routing_eval.py. It should report at least 95% routing accuracy and 100% hard-negative success.
  • Install the plugin from this branch, connect the Sent MCP server, and cause an unresolvable gap, e.g. ask to cancel a scheduled send. The agent should address the request first, offer once to report the gap, show the exact sanitized report, and call feedback.send only after you approve it.
  • Cause a routine error and fix it, e.g. leave out a required template variable. The agent should not offer feedback.

@sent-dm
sent-dm merged commit 5bfddac into main Oct 9, 2026
2 checks passed

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, straightforward documentation/eval change.

What was reviewed: the trigger-condition rewording and new "Offer feedback after meaningful friction" guardrails in the four duplicated sent-feedback SKILL.md copies (claude-plugins/, packages/, plugins/, skills/) — confirmed byte-for-byte identical across all four; the new eval/sent-feedback.yaml trigger/no_trigger/ambiguous cases, which read consistent with the stated rules; checked for a CODEOWNERS/ANTOWNERS file restricting these paths — none found.

Extended reasoning...

The change is a documentation/prompt update to the sent-feedback skill (broadening when it proactively offers a feedback report) duplicated in lockstep across four adapter copies, plus corresponding additions to the eval YAML test file; no code, auth, schema, or data-handling logic is touched. I verified the four SKILL.md copies are textually identical and the new eval cases are well-formed and consistent with the described rules. No CODEOWNERS/ANTOWNERS restricts these paths, the bug hunter found no issues, and the one ruled-out candidate (meta-dispatcher not inheriting the new proactive-offer wording) is a pre-existing design question unrelated to correctness of this diff, so this is simple enough to approve without further human review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant