role-management
Manages team role composition — list, add, remove, and inspect roles defined in botminter.yml. Includes impact analysis of statuses, hats, and knowledge before changes, and records every change as a team agreement decision. Use when asked to "add a role", "remove a role", "list roles", "inspect a role", "change team composition", "what roles do we have", "team structure", or when an cos:exec:todo issue requests a role change.
Best use case
role-management is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Manages team role composition — list, add, remove, and inspect roles defined in botminter.yml. Includes impact analysis of statuses, hats, and knowledge before changes, and records every change as a team agreement decision. Use when asked to "add a role", "remove a role", "list roles", "inspect a role", "change team composition", "what roles do we have", "team structure", or when an cos:exec:todo issue requests a role change.
Teams using role-management should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/role-management/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How role-management Compares
| Feature / Agent | role-management | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Manages team role composition — list, add, remove, and inspect roles defined in botminter.yml. Includes impact analysis of statuses, hats, and knowledge before changes, and records every change as a team agreement decision. Use when asked to "add a role", "remove a role", "list roles", "inspect a role", "change team composition", "what roles do we have", "team structure", or when an cos:exec:todo issue requests a role change.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Role Management Skill
Manage team role composition through guided, conversational workflows. Every
role change is recorded as a decision in `agreements/decisions/`.
## When to Use
- An `cos:exec:todo` issue requests adding, removing, or modifying a role
- The operator asks about the team's role structure
- You need to understand what a role does (hats, statuses, skills)
- A retrospective action item of type `role-change` needs execution
## Operations
### List Roles
Show current roles from `botminter.yml` with context.
```bash
# Read the manifest
cat botminter.yml
```
For each role, display:
| Field | Source |
|-------|--------|
| Name | `roles[].name` in botminter.yml |
| Description | `roles[].description` in botminter.yml |
| Member count | `ls members/` and match by role |
| Associated statuses | Statuses whose prefix matches the role (e.g., `dev:*` for developer) |
| Skills | `ls roles/<role>/coding-agent/skills/` |
### Add Role
Guide the operator through defining a new role. This is a conversational,
multi-step process.
#### Step 1: Understand the Role
Ask the operator:
- What does this role do? What gap does it fill?
- What existing role is it closest to? (Use as a template)
#### Step 2: Define Statuses
Ask: What statuses does this role need?
- Check for conflicts with existing status prefixes in `botminter.yml`
- Suggest a prefix based on the role name (e.g., `sec` for security-auditor)
- Minimum: `<prefix>:todo`, `<prefix>:in-progress`, `<prefix>:done`
#### Step 3: Define Hats
Ask: What hats should this role wear?
- Reference existing hats as templates (show hat names from similar roles)
- Each hat needs: name, trigger event, instructions
- Generate a `ralph.yml` with the hat collection
#### Step 4: Generate Skeleton
Create the role directory structure:
```
roles/<new-role>/
coding-agent/
skills/
.gitkeep
knowledge/
.gitkeep
invariants/
.gitkeep
PROMPT.md # Role purpose and responsibilities
CLAUDE.md # Agent context and workspace model
ralph.yml # Hat collection
```
Generate each file with sensible defaults based on the conversation.
**PROMPT.md template:**
````markdown
# <Role Display Name>
## Purpose
<What the operator described>
## Responsibilities
- Scan for `<prefix>:todo` issues on the board
- <Role-specific responsibilities from conversation>
## Process
Follow PROCESS.md for status transitions and conventions.
````
**CLAUDE.md template:**
````markdown
# CLAUDE.md
## Role Context
You are the <role-name> for this team. <Brief description>.
## Workspace Layout
See team CLAUDE.md for the workspace model.
## Knowledge Resolution
Follow the standard knowledge resolution order documented in team CLAUDE.md.
````
#### Step 5: Update botminter.yml
Add the role to the `roles` list:
```yaml
roles:
- name: <new-role>
description: "<description from conversation>"
```
Add the new statuses to the `statuses` list.
Add a view entry if the role has its own status prefix:
```yaml
views:
- name: "<Display Name>"
prefixes: ["<prefix>"]
also_include: ["done", "error"]
```
#### Step 6: Record Decision
Write a decision record to `agreements/decisions/`:
```bash
ls agreements/decisions/ | grep -oP '^\d+' | sort -n | tail -1
# Increment by 1, zero-pad to 4 digits
```
````markdown
---
id: <next-id>
type: decision
status: accepted
date: <today ISO date>
participants: [operator, chief-of-staff]
---
# Add Role: <role-name>
## Context
<Why the role was added — from conversation>
## Decision
Added role `<role-name>` to the team with:
- Statuses: <list>
- Hats: <list>
- Skills: <list or "none yet">
## Impact
- New statuses added to botminter.yml
- New role directory created at `roles/<role-name>/`
- No existing members affected
## Follow-Up
- Run `bm hire <role-name> --name <suggested-name>` to hire a member
- Run `bm teams sync` to provision the workspace
- Consider adding role-specific knowledge to `roles/<role-name>/coding-agent/knowledge/`
````
#### Step 7: Guide Next Steps
Tell the operator:
- `bm hire <new-role> --name <name>` to hire a member into this role
- `bm teams sync` to provision the workspace
- Consider writing knowledge docs for the new role
### Remove Role
Removing a role requires impact analysis before any changes.
#### Step 1: Impact Analysis
Before proceeding, analyze the impact:
1. **Active members**: Check `members/` for members in this role
```bash
ls members/ | while read m; do
grep -l "role: <role>" members/$m/config.yml 2>/dev/null && echo "$m"
done
```
2. **Owned statuses**: Find statuses in botminter.yml with the role's prefix
```bash
grep "name: \"<prefix>:" botminter.yml
```
3. **Active issues**: Check for issues in the role's statuses
```bash
# Use the github-project skill's query-issues operation:
# query-issues --type status --status "<prefix>:<status>"
```
4. **Hat references**: Check if other roles reference this role's statuses
```bash
grep -r "<prefix>:" roles/*/ralph.yml
```
5. **Knowledge/invariants**: Check for role-scoped knowledge
```bash
ls roles/<role>/coding-agent/knowledge/ 2>/dev/null
ls roles/<role>/coding-agent/invariants/ 2>/dev/null
```
Present the impact summary to the operator:
```
Impact Analysis for removing role '<role-name>':
- Active members: N (list names)
- Owned statuses: N (list them)
- Active issues in role statuses: N
- Hat references from other roles: N
- Knowledge files: N
- Invariant files: N
```
#### Step 2: Confirm with Operator
If there are active members or issues:
- **WARN**: "There are N active members in this role. They must be stopped first."
- **WARN**: "There are N issues in statuses owned by this role. They will become orphaned."
- Ask: "Should the orphaned statuses be reassigned to another role?"
Wait for explicit confirmation before proceeding.
#### Step 3: Execute Removal
1. Remove the role directory: `rm -rf roles/<role>/`
2. Remove the role from `botminter.yml` roles list
3. Remove associated statuses from `botminter.yml` (or reassign)
4. Remove the associated view from `botminter.yml`
#### Step 4: Record Decision
Write a decision record to `agreements/decisions/`:
````markdown
---
id: <next-id>
type: decision
status: accepted
date: <today ISO date>
participants: [operator, chief-of-staff]
---
# Remove Role: <role-name>
## Context
<Why the role was removed — from conversation>
## Decision
Removed role `<role-name>` from the team.
## Impact
- Statuses removed/reassigned: <list>
- Members affected: <list or "none">
- Issues affected: <count>
- Knowledge/invariants removed: <list or "none">
## Follow-Up
- Stop affected members: `bm stop` then re-start without the removed members
- Clean up member workspaces if needed
- Run `bm teams sync` to reconcile
````
### Inspect Role
Show a role's complete configuration. This is read-only.
Display:
1. **Role definition**: Name and description from botminter.yml
2. **Member skeleton**: Contents of `roles/<role>/`
3. **Hats**: List hats from the role's `ralph.yml`
4. **Skills**: List skills from `roles/<role>/coding-agent/skills/`
5. **Knowledge**: List knowledge docs from `roles/<role>/coding-agent/knowledge/`
6. **Invariants**: List invariants from `roles/<role>/coding-agent/invariants/`
7. **Associated statuses**: Statuses with matching prefix from botminter.yml
8. **Active members**: Members hired into this role
```bash
# Hats from ralph.yml
cat roles/<role>/ralph.yml | yq '.hats[].name'
# Skills
ls roles/<role>/coding-agent/skills/
# Knowledge
ls roles/<role>/coding-agent/knowledge/
# Members in this role
for m in members/*/; do
if grep -q "role: <role>" "$m/config.yml" 2>/dev/null; then
basename "$m"
fi
done
```
## Comment Format
All role management comments on issues use:
```
### 🏗 chief-of-staff — $(date -u +%Y-%m-%dT%H:%M:%SZ)
```
## Error Handling
- If `botminter.yml` cannot be parsed, stop and report the error.
- If the `agreements/decisions/` directory doesn't exist, create it.
- If removing a role with active members, refuse unless the operator
explicitly confirms after seeing the impact analysis.
- If `gh` commands fail during impact analysis, log the error and
continue with locally available data.Related Skills
workspace-sync
Sync and diagnose BotMinter workspaces. Use when the operator says "sync workspaces", "apply profile changes", "propagate changes", "update all workspaces", "check workspace health", "diff against profile", "full sync", "my workspace has old files", or "why is the workspace out of date". Do NOT use for member behavior/config tuning (use member-tuning) or structured process changes (use process-evolution).
team-design
Entry point for all day-2 team design operations. Routes operator intent to the appropriate sub-skill — retrospective, role-management, member-tuning, or process-evolution — and provides a unified dashboard of team design state. Use when asked to "design the team", "show me the team", "team overview", "what's our team setup", "let's evolve the team", "team health check", or when the operator's intent spans multiple team design areas.
retrospective
Guides a structured team retrospective examining what went well, what didn't, and produces typed action items. Outputs a retro summary to agreements/retros/. Use when asked to "run a retro", "do a retrospective", "reflect on the sprint", "what went well", "review team performance", or when an cos:exec:todo issue requests a retrospective.
process-evolution
Guides deliberate, team-wide process changes — adding or removing statuses, modifying transitions, updating review gates, and evolving the workflow lifecycle. Validates changes against the status graph before applying and records every decision as a team agreement. Use when asked to "change the process", "add a status", "remove a status", "modify the workflow", "update transitions", "add a review gate", "evolve the process", "change auto-advance rules", or when an cos:exec:todo issue requests a process change.
member-tuning
Diagnoses and tunes individual member configurations by mapping symptoms to the responsible artifact — PROMPT.md, CLAUDE.md, ralph.yml (hats), skills, or PROCESS.md. Provides a diagnostic decision tree, inspection commands, example edits, and propagation steps for each artifact type. Use when asked to "tune a member", "fix a member", "troubleshoot a member", "member isn't working", "adjust member behavior", "member diagnostic", "why is the member doing X", or when an cos:exec:todo issue requests member tuning.
cos-session
Chief of Staff working session with the operator. Use when the operator says "chief of staff session", "cos session", "I have things to file", "let's work through some items", "I found some problems", "what's <member> doing", "let's go over the board", or brings any mix of observations, bugs, ideas, or operational concerns.
github-project
Manages GitHub Projects v2 workflows for issue tracking and project management. Use when user asks to "show the board", "view issues", "what's in [status]", "create an epic", "add a story", "create a bug", "move issue
workspace-doctor
Diagnoses common BotMinter workspace issues — stale submodules, broken symlinks, missing files, outdated context, and sync problems. Use when the operator asks to "check my workspace", "diagnose issues", "why isn't X working", "fix my setup", "workspace health", or "something seems wrong".
team-overview
Shows registered BotMinter teams, their members, roles, workspaces, and running state. Use when the operator asks to "show teams", "list teams", "who is on the team", "team status", "show members", or "what teams do I have". Reads ~/.botminter/config.yml and workspace directories.
profile-design
Designs and troubleshoots BotMinter profiles — team methodology templates that define roles, statuses, hats, skills, and process conventions. Use when the operator asks to "design a profile", "create a new role", "fork a profile", "fix my profile", "troubleshoot profile issues", "design a process workflow", "add a hat", "customize a profile", or "validate my profile". Operates on profile templates, not live team repos.
profile-browser
Browses and describes BotMinter profiles — team methodology templates that define roles, statuses, coding agents, and process conventions. Use when the operator asks to "list profiles", "show profiles", "what profiles are available", "describe a profile", "what roles does X have", or "compare profiles". Reads ~/.config/botminter/profiles/.
hire-guide
Interactive guide for hiring team members with `bm hire`. Helps operators choose roles, pick names, and understand hiring implications. Use when the operator asks to "hire someone", "add a member", "what roles can I hire", "help me hire", "who should I hire next", or "explain the roles".