Help us improve
Share bugs, ideas, or general feedback.
From synthteam
Build or refresh a distilled persona doc for a colleague from their Slack history — dump channel messages, then run multi-agent distillation into a structured persona file consumed by ask-colleague/ask-team skills.
npx claudepluginhub nickwinder/synthteam --plugin synthteamHow this skill is triggered — by the user, by Claude, or both
Slash command
/synthteam:distill-slack-personaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn a colleague's Slack history into a distilled **persona doc** — a natural-language description of *what they know, what they believe, and how they decide*. The persona docs produced here are the sole input to the `ask-colleague` and `ask-team` skills.
Simulates a colleague's likely take, critique, or pushback on an idea using locally stored persona files. Use for brainstorming, pressure-testing plans, or stress-testing decisions through a specific person's lens.
Distills AI agent personality patterns from conversation into a Tech Persona Card, validates schema and voice consistency, and routes contributions through a submission portal. Use for crystallizing a recurring voice, forking an existing persona, or sharing one with the community.
Discovers team structure, terminology, goals, performance frameworks, values, and ways of working by crawling Slack, Notion, Google Drive, Gmail, Calendar; validates with manager before persisting.
Share bugs, ideas, or general feedback.
Turn a colleague's Slack history into a distilled persona doc — a natural-language description of what they know, what they believe, and how they decide. The persona docs produced here are the sole input to the ask-colleague and ask-team skills.
A persona doc captures substance, not voice. No verbatim message text, no tone/style mimicry — patterns and positions only.
Everything lives under ~/.synthteam/ (override with the SYNTHTEAM_HOME env var). This directory is intentionally outside any skill folder so personas and raw dumps survive plugin reinstalls and stay reachable by whichever ask-* skills are installed:
~/.synthteam/
├── assets/<slug>/ # raw Slack dumps — local-only, never commit
│ ├── raw-messages.jsonl
│ └── metadata.json
└── personas/<slug>.md # the distilled persona doc — the deliverable
<slug> is the colleague's lowercase first name (e.g. alex).
Step 1 is mechanical (a script). Step 2 is the agent-driven distillation. Step 3 is human review. Do them in order — distillation needs the dump, review needs the doc.
The dump script lives in this skill at scripts/dump-user-messages.js. It needs SLACK_USER_TOKEN in a .env file (see the repo .env.example; loadEnv walks up from the cwd to find it).
First install its runtime deps once:
cd <this-skill>/ && npm install
Then run the dump:
node scripts/dump-user-messages.js <slug> [--months=12]
The script resolves <slug> to a Slack user, runs search.messages with from:@<username> over the time window, expands every thread the user touched, and writes raw-messages.jsonl + metadata.json into ~/.synthteam/assets/<slug>/. DMs and multi-person DMs are excluded by design — personas are grounded in public/channel conversation only. It only reads what the authenticating token can already see.
references/distillation-facets.md is the full operational spec for this step — the multi-agent pipeline, the five facet definitions, the persona doc format, and the quality checks. Read it in full before starting; it is the authority for everything below.
In short: the current session is the orchestrator. It splits raw-messages.jsonl into chunks, fans out worker subagents to extract per-facet findings, runs one reducer subagent per facet to synthesize sections, optionally runs a critic pass, then assembles ~/.synthteam/personas/<slug>.md with frontmatter and the fixed five-facet structure. The pipeline follows the ed3d-basic-agents:doing-a-simple-two-stage-fanout pattern.
Do not improvise the persona from general knowledge of the company or the person — every claim in the doc must be defensible from the dump.
Read the finished ~/.synthteam/personas/<slug>.md before relying on it. Spot-check a few claims against raw-messages.jsonl. If a section feels uncanny — putting words in their mouth that aren't grounded — re-run that facet or trim it. Run the verbatim-leak sweep described in the facets spec: any distinctive 4–6-word substring shared between the persona doc and the raw JSONL is a leak and must be rewritten in indirect prose.
Same three steps. The dump script overwrites raw-messages.jsonl (the time window slides forward). The distillation rewrites the persona doc from scratch. Diff against the previous version to see what changed. Monthly is a reasonable cadence.
~/.synthteam/assets/ should never be committed to a repo. Verbatim message text never belongs in the persona doc.~/.synthteam/personas/ as private notes about colleagues. Before adding anyone, consider whether they'd be comfortable with the persona existing.search.messages is user-token only and capped at ~10,000 results per query. A highly active person may hit the cap; the script reports if it did.