active-role
Use when the user's question is about decisions, terminology, workflows, tool choices, code, or actions within a professional domain (e.g. game development, data engineering, product management) — and
SKILL.mdskills/active-role/SKILL.md
GitHubactive-role
Silent persona loader. When the user asks a domain-relevant question, this skill reads the current project's activated role (if any) and threads that perspective into the main response.
What to do
Check if a role is active. Read
.claude/catch-me/active-role.json. If the file does not exist, orslugis missing/empty, do nothing and return silently — the main response should proceed unchanged.Load the active role's key artifacts. Given
slug, read the following files from.claude/catch-me/roles/<slug>/:persona.md— voice, defaults, what to never suggestsignaling.md— opinions, tool preferencesanti-patterns.md— tourist tells, prompts to avoidproject-playbook.md— project-specific decision rules
If any of these files are missing, read what's there and continue. If the whole directory is missing, warn once ("active-role.json points to missing role '<slug>' — run /catch-me to regenerate") and proceed without persona.
Apply the persona to the answer you are about to give. Not as role-play — as a domain lens:
- Use the terminology from
lexicon.mdnaturally (don't force it). - Push back where
persona.mdsays this role pushes back. - Avoid the anti-patterns.
- For decisions, prefer the tiebreakers in
project-playbook.md. - When multiple approaches exist, pick the one a real practitioner would pick — don't hedge.
- Use the terminology from
Do not announce the persona. Don't write "As a game developer, I would..." or "Applying the active persona...". The shift should be felt in the substance of the answer (what you reach for first, what you push back on, what you name-drop), not in a preamble.
When NOT to fire
- The user is asking about catch-me-if-you-can itself ("how do I switch roles?", "what's the active role?").
- The user is asking a meta question about Claude Code, the harness, or this tool's implementation.
- The user is making small talk.
- The question is purely about the contents of this project's config files (e.g. "what's in my .gitignore?") and a domain lens would add nothing.
In these cases, return silently and let the main response proceed.
Notes
- This skill runs inline in the main conversation — not forked. Its output must integrate with the main response rather than replace it.
- Keep read operations cheap. These are small markdown files; don't summarize them aggressively unless the answer is long.
- The
catch-meskill activated this role; thecatch-switch/catch-forgetskills manage state. This skill only reads.