--- name: colleague-distillation description: 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). --- > **10xProductivity skill:** This file is the Claude Code entry point for colleague distillation when working in this repo. # 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](https://github.com/titanwings/colleague-skill)** convention so results can coexist with that generator: - `colleagues/{slug}/work.md` - `colleagues/{slug}/persona.md` - `colleagues/{slug}/meta.json` - `colleagues/{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 1. Load the relevant 10xProductivity connection docs under **`tool_connections/`** and any allowed private recipes under **`$TENX_PRIVATE_DIR/personal/`**. 2. Load **`$TENX_PRIVATE_DIR/verified_connections.md`** — only call tools listed there (or documented in `10xProductivity/tool_connections/` / `personal/`). 3. For Jira, use the verified Jira connection documentation and recipes in this repo. 4. **Credentials:** `source` or load **`$TENX_PRIVATE_DIR/.env`** (or project `.env`) before `curl` / scripts. Never commit secrets. --- ## Cursor vs Claude Code | Environment | Where to put generated files | How this skill is loaded | |-------------|------------------------------|---------------------------| | **Cursor** | Repo root: `colleagues/{slug}/` | `.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: 1. **Active Directory** (if configured in tool_connections): resolve **email**, **manager chain**, **department** — use for Jira/Slack account mapping when IDs are unknown. 2. **Slack**: From `verified_connections.md`, use Slack API recipes to resolve **`@handle` → user id** (`U…`) for `from:@user` / `from:U…` search syntax. 3. **Jira**: Resolve **accountId** (assignee, reporter, comment author) via Jira user search API — see `jira` skill. 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: 1. **Layer 0 — Hard rules** (non-negotiables: respect, no slurs, no real harassment simulation beyond professional friction the user explicitly asked for). 2. **Identity** — role, scope, team context. 3. **Expression** — vocabulary, sentence length, directness, humor. 4. **Decisions** — risk posture, escalation, “how they say no.” 5. **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) ```json { "name": "Display Name", "slug": "michael_donnelly", "created_at": "", "updated_at": "", "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: ```yaml --- name: colleague_{slug} description: " — distilled work + persona (tool-sourced)." user-invocable: true --- ``` Body: short intro + full `work.md` + full `persona.md` + **run rules**: 1. Persona decides attitude; work block executes the task. 2. Output matches persona expression. 3. 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 with `knowledge/raw/` containing sourced excerpts - [ ] `work.md` and `persona.md` complete - [ ] `meta.json` with ids and source list - [ ] `SKILL.md` merged 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.