Colleague Distillation
Create an AI skill capturing a coworker's expertise and work style from your connected tools.
Installation
- Make sure Claude is on your device and in your terminal.
Skills load from
~/.claude/skills/when Claude Code starts up — so you need it on your machine first. If you don't have it yet, install it once with the command below, then runclaudein any terminal to verify.One-time setupnpm i -g @anthropic-ai/claude-codeAlready have it? Skip ahead.
- Paste into Claude Code or into your terminal.
This copies the whole skill folder into
~/.claude/skills/colleague-distillation-zhixiangluo/— the SKILL.md plus any scripts, reference docs, or templates the skill ships with. Safe default: works for every skill.Faster alternative (instruction-only skills)
Skips the clone and grabs only the SKILL.md file. Don't use this if the skill ships Python scripts, reference markdowns, or asset templates — they won't be downloaded and the skill will fail when it tries to load them.
Quick install (SKILL.md only)Sign up to copy - Restart Claude Code.
Quit and reopen Claude Code (or any other agent that loads from
~/.claude/skills/). New skills are picked up on startup. - Just ask Claude.
Skills auto-activate when your request matches the skill's description — no slash command needed. Trigger phrases live in the skill's own frontmatter; you can read them in the “What this skill does” section above.
Prefer to read the source first? Open on GitHub.
When Claude uses it
Distill a colleague into a reusable AI skill (work + persona) using tool connections — Slack, Slack AI, Jira, GHE, Bitbucket, Confluence, SharePoint, Teams, Outlook, Notion, Linear, Google Docs, and more — without manual paste. Use when the user wants a colleague skill, digital twin of a coworker, or capture of someone's technical voice from workplace systems. Requires tool_connections + 10xProductivity verified_connections (or equivalent .env).
What this skill does
Canonical copy:
~/git_repos/the-genesis/.genesis/skills/colleague-distillation/SKILL.md. This file is a mirror for Claude Code; prefer editing Genesis first, then re-copy if needed.
Colleague distillation (tool-backed)
Purpose
Produce a colleague skill: structured work knowledge (systems, standards, review style) plus persona (tone, decisions, interpersonal habits), using APIs and search already wired in tool_connections / 10xProductivity — not hand-pasted exports.
Output layout matches the open colleague-skill convention so results can coexist with that generator:
colleagues/{slug}/work.mdcolleagues/{slug}/persona.mdcolleagues/{slug}/meta.jsoncolleagues/{slug}/SKILL.md(merged invocable skill)
Optional: Clone colleague-skill for its prompts/work_analyzer.md, persona_analyzer.md, work_builder.md, persona_builder.md if you want identical extraction templates; this skill defines what to fetch and where to write.
Prerequisites
- Load
tool_connections—$GENESIS_DIRECTORY/.genesis/skills/tool_connections/SKILL.md, or ifGENESIS_DIRECTORYis unset use~/git_repos/the-genesis/.genesis/skills/tool_connections/SKILL.md. - Load
~/git_repos/10xProductivity/verified_connections.md— only call tools listed there (or documented in10xProductivity/tool_connections//personal/). - Load
jira—$GENESIS_DIRECTORY/.genesis/skills/jira/SKILL.mdor~/git_repos/the-genesis/.genesis/skills/jira/SKILL.mdfor all Jira JQL and REST. - Credentials:
sourceor load~/git_repos/10xProductivity/.env(or project.env) beforecurl/ scripts. Never commit secrets.
Cursor vs Claude Code
| Environment | Where to put generated files | How this skill is loaded |
|---|---|---|
| Cursor | Repo root: colleagues/{slug}/ (e.g. 10xProductivity or the-genesis) | .cursor/skills/colleague-distillation/SKILL.md |
| Claude Code | Same colleagues/{slug}/ under the active project | .claude/skills/colleague-distillation/SKILL.md |
Use the same slug and folder layout in both; only the skill install path differs.
Slug rules
- Slug = unique directory name:
michael_donnelly,michael_donnelly_2, … (ASCII, underscores). - Collisions: Same slug overwrites an existing colleague folder. Disambiguate with
_2,_3, or a distinct codename. - Store display name and aliases in
meta.json, not only in the slug.
Phase 1 — Resolve identity
Before searching, pin who the colleague is:
- Active Directory (if configured in tool_connections): resolve email, manager chain, department — use for Jira/Slack account mapping when IDs are unknown.
- Slack: From
verified_connections.md, use Slack API recipes to resolve@handle→ user id (U…) forfrom:@user/from:U…search syntax. - Jira: Resolve accountId (assignee, reporter, comment author) via Jira user search API — see
jiraskill.
Record: slack_user_id, jira_account_id, email, ad_cn (as available).
Phase 2 — Pull source material (priority order)
Gather raw excerpts (save under colleagues/{slug}/knowledge/raw/ as .md or .json snippets) with source + URL/ticket/channel + date in each chunk header. Cap volume per source (e.g. last 90–180 days) unless the user asks for full history.
Tier A — Highest signal for “how they work and sound”
| Source | What to fetch | Why |
|---|---|---|
| Slack | search.messages: from:user, date range, in:#relevant-channels; thread URLs they participated in | Tone, decisions, pushback, on-call voice |
| Slack AI (Slackbot DM) | Targeted questions: e.g. “Summarize how [Name] argues for design decisions in threads about [topic]” | Fast synthesis over large Slack corpus |
| Jira | JQL: assignee, reporter, comment ~, component/team filters; descriptions, comments, status transitions | Work scope, prioritization, written precision |
| GHE | PRs authored, reviewed (/pulls, review comments API); issues filed | Code review voice, technical standards |
| Bitbucket Server | Same pattern as GHE when Bitbucket Server is the primary Git host | Same |
Tier B — Depth and standards
| Source | What to fetch | Why |
|---|---|---|
| Confluence | Pages created by or substantially edited by them (CQL / search); team runbooks they own | Long-form standards, architecture voice |
| Notion | Pages they authored or commented on | Long-form async thinking, project context |
| SharePoint | Docs and wikis they own or edited | Standards docs, team handbooks |
Tier C — Optional / role-specific
| Source | When |
|---|---|
| Google Drive | Docs/slides they own (if verified in verified_connections.md) |
| PagerDuty | Oncall/incident behavior |
| Console / IAHub | Release/ops ownership if building an ops-heavy persona |
| Microsoft Teams / Outlook | If verified — email/thread tone (handle consent carefully) |
| Gmail (personal recipe) | Only if user explicitly wants email and connection is verified |
Tier D — Do not rely on for persona without extra care
- Raw git blame without PR context — noisy.
- HR systems — use only for title/team if needed, not personality inference.
Phase 3 — Synthesize (work vs persona)
Work (work.md): Systems, stacks, coding/review conventions, doc habits, Jira/workflow patterns, incident/release behavior — cite patterns, not one-off jokes.
Persona (persona.md): Use a layered structure compatible with colleague-skill:
- Layer 0 — Hard rules (non-negotiables: respect, no slurs, no real harassment simulation beyond professional friction the user explicitly asked for).
- Identity — role, scope, team context.
- Expression — vocabulary, sentence length, directness, humor.
- Decisions — risk posture, escalation, “how they say no.”
- Interpersonal — meetings, async, conflict.
Grounding: Prefer quoted paraphrases with source pointers; flag low-confidence traits when sample size is small.
Phase 4 — Write artifacts
meta.json (minimal)
{
"name": "Display Name",
"slug": "michael_donnelly",
"created_at": "<ISO8601 UTC>",
"updated_at": "<ISO8601 UTC>",
"version": "v1",
"profile": {
"company": "",
"level": "",
"role": "",
"email": ""
},
"ids": {
"slack_user_id": "",
"jira_account_id": ""
},
"knowledge_sources": ["slack", "jira", "ghe"],
"corrections_count": 0
}
SKILL.md (invocable)
YAML frontmatter:
---
name: colleague_{slug}
description: "<Name> — distilled work + persona (tool-sourced)."
user-invocable: true
---
Body: short intro + full work.md + full persona.md + run rules:
- Persona decides attitude; work block executes the task.
- Output matches persona expression.
- Layer 0 never violated.
Optional: also write work_skill.md / persona_skill.md with names colleague_{slug}_work / colleague_{slug}_persona if your host expects split invocations (see colleague-skill skill_writer.py).
Consent and safety
- Build skills only for legitimate work purposes and policy-compliant use of company tools.
- Do not exfiltrate secrets, PII bundles, or restricted content into
colleagues/— redact tokens, customer data, and health/financial identifiers. - When unsure whether content is allowed in a repo, ask the user before writing.
Outputs checklist
-
colleagues/{slug}/created withknowledge/raw/containing sourced excerpts -
work.mdandpersona.mdcomplete -
meta.jsonwith ids and source list -
SKILL.mdmerged and invocable - User told how to invoke (
/{slug}or host-specific command) and how to disambiguate duplicates (_2,_3)
Related skills
team_learner— team/domain bootstrap (similar tool sweep, different output shape).skill_creation— promote reusable methodology after validation.jira,tool_connections— all authenticated access.
Related skills
Word Document Editor
anthropics
Create, edit, and format Word documents with tables, images, and tracked changes.
Skill Template
anthropics
A template for creating and configuring new Claude skills.
Kanban TUI
Zaloog
Manage tasks, boards, and workflows in your terminal with a CLI kanban tool.
Superpowers
obra
Jesse Vincent's full Claude Code methodology — TDD, brainstorming, git worktrees, all auto-triggering.