Testimonial harvester
Skill megandmartin/agent-skills-repo/skills/business-ops/testimonial-harvester
Mines customer feedback for testimonial-worthy quotes, drafts permission-ask messages, and structures approved quotes with usage rights recorded. Use when the user says "get testimonials", "find quotes from customers", "who said nice things", "social proof for the landing page", or wants to turn praise into marketing assets. Don't use for handling support complaints — use customer-support-inbox — or for cold outreach to strangers — use cold-outreach-sequencer.From its SKILL.md
npx -y skills add megandmartin/agent-skills-repo --skill testimonial-harvesterAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
6.2 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Testimonial Harvester
Turns scattered praise — support threads, DMs, community posts, feedback forms — into a structured testimonial library the user can legally and confidently publish. Three stages: find the candidates, ask permission (drafts only), record the approved quote with its usage rights. The standard: no quote is ever published without explicit permission on record, and no permission-ask is ever sent by the agent.
When to Use
- User wants social proof for a landing page, deck, or launch post.
- A pile of feedback exists (inbox export, community channel, form responses) and nobody has mined it.
- A customer just said something great and the user wants to capture it properly.
- Not for: working complaints — use
customer-support-inbox. Not for messaging people with no prior relationship — usecold-outreach-sequencer.
Quick Reference
| Action | Command / Call |
|---|---|
| Sweep feedback for praise signals | `grep -n -i -E "love |
| Testimonial library | testimonials.md in the marketing folder — one entry per quote with status + rights |
| Check for duplicates | grep -i "{customer name}" testimonials.md |
| Count approved quotes | grep -c "Status: approved" testimonials.md |
| Check for pending asks going stale | grep -B2 "Status: pending" testimonials.md — nudge once after ~10 days, then let it go |
| Never re-ask list | grep -B2 "Status: declined" testimonials.md |
Procedure
- Precheck — locate the feedback source(s) and
testimonials.md(create it with a header if missing). Confirm with the user which channels are fair game to mine — private messages are only usable with the sender's permission anyway, but don't even harvest from channels the user says are off-limits. - Mine candidates — read the source, then run the grep sweep to catch anything missed. A candidate needs: a specific outcome or feeling (not just "great product"), the customer's name/handle, and where/when they said it. Rank by specificity — "cut my invoicing from 3 hours to 20 minutes" beats "love it!".
- Draft permission asks (drafts only) — for each candidate, draft a short personal message: quote back exactly what they said, ask permission to use it, and offer the choice of name + title/company, first name only, or anonymous. One message per person, warm not legalese. The agent never sends these — the user copies and sends personally; personal asks convert better anyway.
- Record responses — when the user reports back, update each entry's status:
approved,approved-with-edits(store their edited version verbatim),anonymous-only, ordeclined(keep the entry so nobody re-asks — mark it clearly and never surface the quote again). - Structure approved quotes — for each approval, finalize the library entry per the template: exact quote, attribution level granted, where it may be used (web/social/deck/ads — as granted, not assumed), date, and source link/reference. Tighten quotes for length only with the customer's OK; never change meaning.
- Deliver — output new candidates, permission-ask drafts, and the current library scoreboard (approved / pending / declined).
Output Template
# Testimonial Harvest — {Date}
## New candidates ({n})
1. {Name} — "{exact quote}" — {source, date} — specificity: high/med
## Permission-ask drafts (you send these — I don't)
### To {Name}
> {draft message quoting their words, asking permission + attribution preference}
## Library entry format (testimonials.md)
### {Name} — {Title, Company | first name | anonymous}
Quote: "{final approved text}"
Rights: {web / social / deck / ads} · Attribution: {level granted}
Status: approved · Asked: {date} · Approved: {date} · Source: {link/ref}
## Scoreboard
Approved {n} · Pending {n} · Declined {n} (never re-ask)
Pitfalls
- Quote used before permission lands — a "pending" quote ends up on the landing page; trust and possibly law broken. Recovery: only
Status: approvedentries are publishable; audit any live copy against the library and pull anything unapproved. - Attribution beyond what was granted — customer approved "first name only" and the site shows full name + company. Recovery: the Rights and Attribution lines are the contract; check them before every use and fix the live copy immediately.
- Polished quote no longer sounds human — over-editing turns "honestly this saved my launch" into marketing mush. Recovery: keep the customer's exact words; if you must trim, show them the trimmed version and get a fresh OK.
- Re-asking someone who declined — feels pushy, burns the relationship. Recovery: declined entries stay in the library as tombstones; grep for the name before drafting any ask.
- Agent sends the permission asks — never; personal asks from the founder convert and the rail is drafts-only. Recovery: output text drafts, no send calls of any kind.
Verification
- Every candidate has name, exact quote, source, and date — nothing paraphrased
- Permission-ask drafts exist as text only; zero messages sent by the agent
-
testimonials.mdentries carry Status, Rights, and Attribution fields - No approved-count mismatch:
grep -c "Status: approved"equals the scoreboard number - Declined entries preserved and excluded from all publishable output
- Candidates ranked by specificity, with the outcome-bearing quotes on top
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most customer support skills give in ~1.3k tokens
Counted across 123 of the 124 authors here whose files we hold, read 2026-08-07
- Call RUBE_SEARCH_TOOLS first to get current schemasin 12 of 123, across 4 files
- Confirm connection status is ACTIVE before running workflowsin 12 of 123, across 4 files
- Stop and ask for clarification if required inputs are missingin 9 of 123, across 2 files
- Call RUBE_MANAGE_CONNECTIONS with the helpdesk toolkitin 9 of 123, across 2 files
- Use both timestamp and ID for cursor navigationin 8 of 123, across 1 file
- Implement backoff on 429 responsesin 8 of 123, across 1 file
- Parse response data defensively with fallback patternsin 8 of 123, across 1 file
- Use this skill only when the task clearly matches the scopein 8 of 123, across 1 file
- Pass a JSON file as the positional argumentin 7 of 123, across 1 file
- Specify output format with the --format flagin 7 of 123, across 1 file
- Run health, churn, and expansion scripts togetherin 7 of 123, across 1 file
- Verify output files contain expected records before continuingin 7 of 123, across 1 file
Said here and by no other author read
- locate the feedback sources
- confirm which channels are allowed
- create the testimonial library if missing
- grep the feedback for praise signals
- rank candidates by specificity
- draft a permission-ask for each candidate
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.