/teammate-skill
Distill a teammate into an AI Skill. Auto-collect Slack/Teams/GitHub data, generate Work Skill + 5-layer Persona, with continuous evolution. Use when: user wants to capture a colleague's knowledge before they leave, create an AI version of a teammate, distill tribal knowledge
$ npx -y skills add LeoYeAI/teammate-skill --skill teammate-skill --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/teammate-skill
Context preview
The summary Claude sees to decide when to auto-load this skill.
Distill a teammate into an AI Skill. Auto-collect Slack/Teams/GitHub data, generate Work Skill + 5-layer Persona, with continuous evolution. Use when: user wants to capture a colleague's knowledge before they leave, create an AI version of a teammate, distill tribal knowledge
SKILL.md
teammate-skill.SKILL.mdname: create-teammate
description: "Distill a teammate into an AI Skill. Auto-collect Slack/Teams/GitHub data, generate Work Skill + 5-layer Persona, with continuous evolution. Use when: user wants to capture a colleague's knowledge before they leave, create an AI version of a teammate, distill tribal knowledge into a reusable skill, or says /create-teammate."
user-invocable: true
argument-hint: "[teammate-name-or-slug]"
> **Language**: Auto-detect the user's language from their first message and respond in the same language throughout.
teammate.skill Creator
Trigger Conditions
Activate when the user says any of:
- `/create-teammate` or `/create-teammate alex-chen`
- "Help me create a teammate skill"
- "I want to distill a teammate"
- "New teammate" / "Make a skill for XX"
If the user provides a name as an argument (e.g. `/create-teammate alex-chen`), skip Q1 in intake and use it directly as the slug.
Enter evolution mode when:
- "I have new files" / "append" / "add more context"
- "That's wrong" / "They wouldn't do that"
- `/update-teammate {slug}`
List teammates: `/list-teammates`
---
Quick Start Mode
If the user provides everything in one message (e.g. "Create a teammate: Alex Chen, Google L5 backend engineer, INTJ, perfectionist"), skip the 3-question intake entirely: 1. Parse name, role, personality from the message 2. Show confirmation summary 3. Jump directly to Step 2 (Source Material Import)
This makes single-message creation possible — zero back-and-forth when the user already knows what they want.
---
Platform Detection & Tool Mapping
Detect the runtime environment and use the correct tools:
| Action | Claude Code | OpenClaw | Other AgentSkills | |--------|------------|----------|-------------------| | Read files | `Read` tool | `read` tool | `Read` tool | | Write files | `Write` tool | `write` tool | `Write` tool | | Edit files | `Edit` tool | `edit` tool | `Edit` tool | | Run scripts | `Bash` tool | `exec` tool | `Bash` / `exec` | | Fetch URLs | `Bash` → curl | `web_fetch` tool | `Bash` → curl |
Path Resolution
All script/prompt paths use `{baseDir}` — the skill's own directory, auto-resolved by the platform.
- **Claude Code**: `{baseDir}` = `${CLAUDE_SKILL_DIR}` (set by AgentSkills runtime)
- **OpenClaw**: `{baseDir}` = skill directory (auto-resolved from SKILL.md location)
- **Other agents**: resolve relative to the SKILL.md parent directory
Output Directory
Generated teammate files go to `teammates/{slug}/` under the agent's workspace:
| Platform | Default output path | |----------|-------------------| | Claude Code | `./teammates/{slug}/` (project-local) | | OpenClaw | `./teammates/{slug}/` (workspace-local, `~/.openclaw/workspace/teammates/{slug}/`) | | Other | `./teammates/{slug}/` (current working directory) |
To install the generated skill globally, copy `teammates/{slug}/SKILL.md` to the platform's skill directory.
---
Tool Reference
| Task | Command | |------|---------| | Parse Slack export | `python3 {baseDir}/tools/slack_parser.py --file {path} --target "{name}" --output /tmp/slack_out.txt` | | Slack auto-collect | `python3 {baseDir}/tools/slack_collector.py --username "{user}" --output-dir ./knowledge/{slug}` | | Parse Teams/Outlook | `python3 {baseDir}/tools/teams_parser.py --file {path} --target "{name}" --output /tmp/teams_out.txt` | | Parse Gmail .mbox | `python3 {baseDir}/tools/email_parser.py --file {path} --target "{name}" --output /tmp/email_out.txt` | | Parse Notion export | `python3 {baseDir}/tools/notion_parser.py --dir {path} --target "{name}" --output /tmp/notion_out.txt` | | GitHub auto-collect | `python3 {baseDir}/tools/github_collector.py --username "{user}" --repos "{repos}" --output-dir ./knowledge/{slug}` | | Parse JIRA/Linear | `python3 {baseDir}/tools/project_tracker_parser.py --file {path} --target "{name}" --output /tmp/tracker_out.txt` | | Parse Confluence | `python3 {baseDir}/tools/confluence_parser.py --file {path} --target "{name}" --output /tmp/confluence_out.txt` | | Version backup | `python3 {baseDir}/tools/version_manager.py --action backup --slug {slug} --base-dir ./teammates` | | Version rollback | `python3 {baseDir}/tools/version_manager.py --action rollback --slug {slug} --version {ver} --base-dir ./teammates` | | List teammates | `python3 {baseDir}/tools/skill_writer.py --action list --base-dir ./teammates` |
**Reading files**: PDF, images, markdown, text → use the platform's native read tool directly.
---
Main Flow: Create a New Teammate Skill
Step 1: Basic Info Collection (3 questions — or fewer)
Read `{baseDir}/prompts/intake.md` for the full question sequence. Only ask 3 questions:
1. **Name / Alias** (required) — e.g. `alex-chen` or `Big Mike` 2. **Role info** (optional, one sentence) — e.g. `Google L5 backend engineer` 3. **Personality profile** (optional, one sentence) — e.g. `INTJ, perfectionist, Google-style, brutal CR feedback`
Everything except name can be skipped. If the user says "skip" or just gives a name, move on immediately — don't keep asking.
After collecting, show a compact confirmation:
👤 alex-chen | Google L5 Backend | INTJ, Perfectionist, Google-style
Looks right? (y / change something)
One line, not a multi-line summary. Get confirmation fast.
Step 2: Source Material Import
Present data source options — but keep it conversational, not a wall of text:
Now, do you have any of their work artifacts? (all optional)
• Slack username → I'll auto-pull their messages
• GitHub handle → I'll pull PRs and reviews
• Files to upload → Slack export, Gmail, Notion, Confluence, PDF, screenshots
• Or just paste text — meeting notes, chat logs, whatever you have
You can also skip this entirely — I'll work with what you gave me above.
If the user says "skip", "no", or "none", jump straight to Step 3 and generate from the info in Step 1 only. Don't ask again.
Option A: Slack Auto-Collect
First-time setup:
Read more
name: create-teammate description: "Distill a teammate into an AI Skill. Auto-collect Slack/Teams/GitHub data, generate Work Skill + 5-layer Persona, with continuous evolution. Use when: user wants to capture a colleague's knowledge before they leave, create an AI version of a teammate, distill tribal knowledge into a reusable skill, or says /create-teammate." user-invocable: true argument-hint: "[teammate-name-or-slug]"
> **Language**: Auto-detect the user's language from their first message and respond in the same language throughout.
teammate.skill Creator
Trigger Conditions
Activate when the user says any of:
- `/create-teammate` or `/create-teammate alex-chen`
- "Help me create a teammate skill"
- "I want to distill a teammate"
- "New teammate" / "Make a skill for XX"
If the user provides a name as an argument (e.g. `/create-teammate alex-chen`), skip Q1 in intake and use it directly as the slug.
Enter evolution mode when:
- "I have new files" / "append" / "add more context"
- "That's wrong" / "They wouldn't do that"
- `/update-teammate {slug}`
List teammates: `/list-teammates`
---
Quick Start Mode
If the user provides everything in one message (e.g. "Create a teammate: Alex Chen, Google L5 backend engineer, INTJ, perfectionist"), skip the 3-question intake entirely: 1. Parse name, role, personality from the message 2. Show confirmation summary 3. Jump directly to Step 2 (Source Material Import)
This makes single-message creation possible — zero back-and-forth when the user already knows what they want.
---
Platform Detection & Tool Mapping
Detect the runtime environment and use the correct tools:
| Action | Claude Code | OpenClaw | Other AgentSkills | |--------|------------|----------|-------------------| | Read files | `Read` tool | `read` tool | `Read` tool | | Write files | `Write` tool | `write` tool | `Write` tool | | Edit files | `Edit` tool | `edit` tool | `Edit` tool | | Run scripts | `Bash` tool | `exec` tool | `Bash` / `exec` | | Fetch URLs | `Bash` → curl | `web_fetch` tool | `Bash` → curl |
Path Resolution
All script/prompt paths use `{baseDir}` — the skill's own directory, auto-resolved by the platform.
- **Claude Code**: `{baseDir}` = `${CLAUDE_SKILL_DIR}` (set by AgentSkills runtime)
- **OpenClaw**: `{baseDir}` = skill directory (auto-resolved from SKILL.md location)
- **Other agents**: resolve relative to the SKILL.md parent directory
Output Directory
Generated teammate files go to `teammates/{slug}/` under the agent's workspace:
| Platform | Default output path | |----------|-------------------| | Claude Code | `./teammates/{slug}/` (project-local) | | OpenClaw | `./teammates/{slug}/` (workspace-local, `~/.openclaw/workspace/teammates/{slug}/`) | | Other | `./teammates/{slug}/` (current working directory) |
To install the generated skill globally, copy `teammates/{slug}/SKILL.md` to the platform's skill directory.
---
Tool Reference
| Task | Command | |------|---------| | Parse Slack export | `python3 {baseDir}/tools/slack_parser.py --file {path} --target "{name}" --output /tmp/slack_out.txt` | | Slack auto-collect | `python3 {baseDir}/tools/slack_collector.py --username "{user}" --output-dir ./knowledge/{slug}` | | Parse Teams/Outlook | `python3 {baseDir}/tools/teams_parser.py --file {path} --target "{name}" --output /tmp/teams_out.txt` | | Parse Gmail .mbox | `python3 {baseDir}/tools/email_parser.py --file {path} --target "{name}" --output /tmp/email_out.txt` | | Parse Notion export | `python3 {baseDir}/tools/notion_parser.py --dir {path} --target "{name}" --output /tmp/notion_out.txt` | | GitHub auto-collect | `python3 {baseDir}/tools/github_collector.py --username "{user}" --repos "{repos}" --output-dir ./knowledge/{slug}` | | Parse JIRA/Linear | `python3 {baseDir}/tools/project_tracker_parser.py --file {path} --target "{name}" --output /tmp/tracker_out.txt` | | Parse Confluence | `python3 {baseDir}/tools/confluence_parser.py --file {path} --target "{name}" --output /tmp/confluence_out.txt` | | Version backup | `python3 {baseDir}/tools/version_manager.py --action backup --slug {slug} --base-dir ./teammates` | | Version rollback | `python3 {baseDir}/tools/version_manager.py --action rollback --slug {slug} --version {ver} --base-dir ./teammates` | | List teammates | `python3 {baseDir}/tools/skill_writer.py --action list --base-dir ./teammates` |
**Reading files**: PDF, images, markdown, text → use the platform's native read tool directly.
---
Main Flow: Create a New Teammate Skill
Step 1: Basic Info Collection (3 questions — or fewer)
Read `{baseDir}/prompts/intake.md` for the full question sequence. Only ask 3 questions:
1. **Name / Alias** (required) — e.g. `alex-chen` or `Big Mike` 2. **Role info** (optional, one sentence) — e.g. `Google L5 backend engineer` 3. **Personality profile** (optional, one sentence) — e.g. `INTJ, perfectionist, Google-style, brutal CR feedback`
Everything except name can be skipped. If the user says "skip" or just gives a name, move on immediately — don't keep asking.
After collecting, show a compact confirmation:
👤 alex-chen | Google L5 Backend | INTJ, Perfectionist, Google-style Looks right? (y / change something)
One line, not a multi-line summary. Get confirmation fast.
Step 2: Source Material Import
Present data source options — but keep it conversational, not a wall of text:
Now, do you have any of their work artifacts? (all optional) • Slack username → I'll auto-pull their messages • GitHub handle → I'll pull PRs and reviews • Files to upload → Slack export, Gmail, Notion, Confluence, PDF, screenshots • Or just paste text — meeting notes, chat logs, whatever you have You can also skip this entirely — I'll work with what you gave me above.
If the user says "skip", "no", or "none", jump straight to Step 3 and generate from the info in Step 1 only. Don't ask again.
Option A: Slack Auto-Collect
First-time setup:
Distill a teammate into an AI Skill. Auto-collect Slack/Teams/GitHub data, generate Work Skill + 5-layer Persona, with continuous evolution. Powered by MyClaw.ai. Works with Claude Code, OpenClaw, and any AgentSkills-compatible agent.

