ask-colleague
Consult a distilled persona of a colleague for their likely take, critique, or pushback on an idea — locally, without involving…
Build or refresh a distilled persona doc for a colleague from their Slack history — dump their channel messages, then run a multi-agent distillation into a structured persona file that the ask-colleague and ask-team skills consume. Use when the user wants to "dump <name>'s
$ npx -y skills add nickwinder/synthteam --skill distill-slack-persona --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/distill-slack-personaContext preview
The summary Claude sees to decide when to auto-load this skill.
Build or refresh a distilled persona doc for a colleague from their Slack history — dump their channel messages, then run a multi-agent distillation into a structured persona file that the ask-colleague and ask-team skills consume. Use when the user wants to "dump <name>'s
name: distill-slack-persona description: Build or refresh a distilled persona doc for a colleague from their Slack history — dump their channel messages, then run a multi-agent distillation into a structured persona file that the ask-colleague and ask-team skills consume. Use when the user wants to "dump <name>'s Slack", "distill <name>'s persona", "build a persona for <name>", "add <name> as a colleague", "refresh <name>'s persona", or otherwise create/update the source files behind ask-colleague. This is the ingestion-side skill; ask-colleague and ask-team only read what this produces. compatibility: Requires Node.js and a Slack user token (SLACK_USER_TOKEN, xoxp-) with search:read, users:read, channels:history, groups:history, channels:read, groups:read scopes. Writes to ~/.synthteam/ (override with SYNTHTEAM_HOME).
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.
A plugin for consulting distilled personas of colleagues — locally, without involving them. Useful for pressure-testing plans, anticipating pushback, or stress-testing decisions through someone else's lens. Personas are simulations, not the real people.
Consult a distilled persona of a colleague for their likely take, critique, or pushback on an idea — locally, without involving…
Convene a simulated panel of colleague personas to deliberate a question together — each persona becomes its own research agent,…