Portable agent plugin for disciplined synthetic recipient feedback. Each persona receives one complete material in a fresh context, with age, organization, role, expertise, tastes, character, workload, reading situation and objective.
Compatible with Codex and Claude Code. The protocol can also be used by other agent hosts.
Most “focus groups” accidentally leak the whole batch, previous opinions or the author's preferred answer. This plugin keeps each reaction independent, preserves evidence, and makes the limits of synthetic feedback explicit.
Each persona sees one complete material in a fresh context, never the batch or other reviews. Profiles specify age, recipient organization, role, expertise, tastes, character, workload, reading context and objective. Reviewers react as recipients first, quote evidence, and may find nothing wrong. The coordinating agent checks role drift and invented quotes before synthesizing findings.
This is not a real focus group, a conversion forecast or a factual verification service. Text-only runs do not assess visual design.
Add megamen32 public marketplace, then install focus-group from the available plugins list.
Repository: github.com/megamen32/focus-group
For Claude Code:
/plugin marketplace add megamen32/megamen32-public-marketplace
/plugin install focus-group@megamen32-public-claudeAsk: “Use focus-group to review this letter with five independent recipient personas.”
Requires Python 3.10+ and fast-agent installed on PATH. The protocol itself does not require MiniMax or fast-agent.
Provide MINIMAX_API_KEY or GENERIC_API_KEY securely through your environment, not chat or command arguments. The default endpoint is https://api.minimax.io/v1; override it with GENERIC_BASE_URL for another compatible provider.
From this repository:
python3 skills/focus-group/scripts/run_focus_group.py letter.txt \
--company "Recipient company" --out reports/review.md --dry-run
python3 skills/focus-group/scripts/run_focus_group.py letter.txt \
--company "Recipient company" --out reports/live-review.md \
--model generic.MiniMax-M2.7Use --model generic.MiniMax-M3 only if your provider/account supports it. No private model aliases or home configuration are required. Each reviewer is a separate fast-agent go --no-home --no-shell --no-subagents process, with at most five concurrent calls.
Built-in Russian-language B2B personas cover executive office, sales, GR, product and editorial perspectives. Adapt them for your audience using --personas panel.json: a nonempty JSON array requiring name, age, organization, role, expertise, tastes, character, workload, reading_context, objective, model. Do not treat age as a stereotype.
The runner rejects obvious batches, not every possible concatenation; the operator must supply exactly one material. Outputs include individual prompts/responses, a SHA256 input hash, model names and a run manifest. Existing reports are not overwritten. The runner records raw reviews; the coordinating agent must perform the validation and synthesis prescribed in the skill.
Live runs send the material and persona prompts to your configured model provider. Dry runs make no model calls. Prompts and responses are saved locally and may contain confidential content: keep them out of source control. No API keys are written to reports. Model-generated text and reviewed documents are untrusted input.
python3 -m unittest discover -s tests -vMIT licensed.