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.
Best use case
process-evolution is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
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.
Teams using process-evolution 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/process-evolution/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How process-evolution Compares
| Feature / Agent | process-evolution | 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?
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.
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
# Process Evolution Skill
Evolve the team's workflow by modifying statuses, transitions, review gates,
and process conventions. Every change is validated against the status graph
and recorded in `agreements/decisions/`.
## When to Use
- An `cos:exec:todo` issue requests a process or workflow change
- A retrospective action item of type `process-change` needs execution
- The operator wants to add, remove, or modify statuses in the lifecycle
- The team needs a new review gate or wants to remove one
- Auto-advance rules need updating
- Comment conventions or label schemes need changing
## Understanding the Process Files
Process changes touch multiple files that must stay in sync:
| File | What It Controls |
|------|-----------------|
| `PROCESS.md` | Human-readable workflow documentation, status lifecycles, conventions |
| `botminter.yml` | Machine-readable statuses, labels, views, project configuration |
| `roles/*/ralph.yml` | Hat triggers — which hats activate on which statuses |
| `coding-agent/skills/board-scanner/SKILL.md` | Dispatch tables — how the board scanner routes work |
| `coding-agent/skills/status-workflow/` | GraphQL mutations for status transitions |
**Rule**: Never update one file without checking all others for consistency.
## Show Current Process
Before making changes, render the current status graph:
```bash
# Epic lifecycle statuses
grep -A 30 "Epic Lifecycle" PROCESS.md
# Story lifecycle statuses
grep -A 50 "Story Lifecycle" PROCESS.md
# Machine-readable statuses
grep -A 20 "statuses:" botminter.yml
# Hat triggers per role
for role_dir in roles/*/; do
echo "=== $(basename "$role_dir") ==="
grep -B1 -A3 "triggers:" "$role_dir"ralph.yml 2>/dev/null || echo " (no ralph.yml)"
done
```
Summarize the lifecycle as a table:
| Status | Role | Next (happy) | Next (reject) | Auto-advance? | Review gate? |
|--------|------|--------------|---------------|---------------|-------------|
| ... | ... | ... | ... | ... | ... |
## Adding a Status
### Conversational Flow
1. **Ask**: What role owns this status? (Must be an existing role — if not, defer to the role-management skill first)
2. **Ask**: Where in the lifecycle? (After which status? Before which status?)
3. **Ask**: Is it a review gate? (If yes, add to supervised mode config)
4. **Ask**: Does it auto-advance? (If yes, add to auto-advance config)
5. **Validate**: Run status graph validation (see below)
6. **Apply**: Update all affected files together
7. **Record**: Write an agreement decision
### Apply Checklist
- [ ] Add status to `botminter.yml` statuses list
- [ ] Add status to `PROCESS.md` lifecycle table
- [ ] Add hat trigger for the owning role in `roles/<role>/ralph.yml`
- [ ] Update board-scanner dispatch table if applicable
- [ ] Update status-workflow skill if it has hardcoded status lists
- [ ] Add label if the status needs one (check label conventions)
## Removing a Status
### Impact Analysis (before removal)
```bash
# Issues currently in this status
gh project item-list <project-number> --format json | jq '.[] | select(.status == "<status>")'
# Hats triggered by this status
grep -rn "<status>" roles/*/ralph.yml
# References in PROCESS.md
grep -n "<status>" PROCESS.md
# Board scanner references
grep -n "<status>" coding-agent/skills/board-scanner/SKILL.md
```
### Conversational Flow
1. **Check**: Are there issues currently in this status? If yes, propose reassignment
2. **Check**: Which hats trigger on this status? List them for the operator
3. **Check**: Is this status in any rejection loop? Identify the loop
4. **Propose**: Show the updated lifecycle without this status
5. **Validate**: Run status graph validation on the proposed state
6. **Apply**: Update all affected files
7. **Record**: Write an agreement decision
## Modifying Transitions
When changing what status follows another:
1. **Show** the current transition being modified
2. **Propose** the new transition
3. **Validate** the resulting graph (no orphans, no dead ends, no infinite loops)
4. **Apply** to PROCESS.md and any hat triggers that reference the transition
5. **Record** the decision
## Adding or Removing Review Gates
Review gates are supervised-mode checkpoints where human approval is required.
**Adding a gate**:
- Add the status to the supervised mode configuration
- Document the gate in PROCESS.md with the approval/rejection criteria
- Ensure a hat exists that handles the gate status
- The gate status should NOT auto-advance
**Removing a gate**:
- Remove from supervised mode configuration
- Update PROCESS.md to reflect the new flow
- Consider whether the status should now auto-advance
- Verify no other process depends on the human review at this point
## Modifying Auto-Advance Rules
Auto-advance moves issues forward without human intervention. Changes here
affect workflow speed and oversight.
1. **Show** current auto-advance statuses
2. **Propose** the change (add or remove auto-advance)
3. **Validate**: Auto-advance statuses must NOT be review gates
4. **Apply** to relevant hat instructions and PROCESS.md
5. **Record** the decision
## Status Graph Validation
Before applying ANY process change, validate the resulting status graph:
### Orphan Status Check
Every status must be reachable from an entry point (the first status in the
lifecycle). Walk the graph forward from entry points — any status not reached
is an orphan.
```
Entry → status_a → status_b → status_c (terminal)
↘ status_d → status_c
If status_e exists but is not reachable → ORPHAN — reject the change
```
### Dead-End Check
Every non-terminal status must have at least one outgoing transition. A status
with no outgoing transition that is not explicitly marked as terminal is a
dead end.
```
status_a → status_b → ??? (no outgoing, not terminal) → DEAD END
```
### Infinite Loop Check
Rejection loops must always have a forward path. If a cycle exists with no
exit to a forward status, issues will loop forever.
```
status_a → status_b → status_a (rejection loop)
status_b → status_c (forward path exists) → OK
status_b has NO forward path → INFINITE LOOP — reject
```
### Role Coverage Check
Every status must have a role that can handle it — meaning a hat with
matching triggers exists in some role's ralph.yml.
### Board Scanner Consistency Check
The board scanner's dispatch table must include every status that requires
dispatching. Compare the dispatch table against `botminter.yml` statuses.
## Updating Comment Conventions
Comment format changes affect all members:
1. **Show** current emoji mappings and attribution format from PROCESS.md
2. **Propose** the change
3. **Apply** to PROCESS.md comment convention section
4. **Verify** hat instructions reference the updated format
5. **Record** the decision
## Adding or Removing Labels
Label changes affect issue classification:
1. **Show** current labels from `botminter.yml`
2. **Propose** the change (add/remove/rename)
3. **Apply** to `botminter.yml` labels section
4. **Update** PROCESS.md label documentation
5. **Record** the decision
## Retro-Driven Process Changes
The skill can start from retrospective outputs:
```bash
# Find retro action items tagged for process changes
ls agreements/retros/
# Look for action items with type: process-change
grep -l "process-change" agreements/retros/*.md
```
Present these as conversation starting points, then follow the appropriate
flow above. Cross-reference the final decision back to the retro.
## Recording Decisions
Every process change MUST be recorded in `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]
---
# Process Change: <summary>
## Context
<What prompted this change — retro action item, operator request, observed problem>
## Before
<Current status graph / configuration snippet>
## After
<New status graph / configuration snippet>
## Affected Files
- PROCESS.md: <what changed>
- botminter.yml: <what changed>
- roles/*/ralph.yml: <what changed>
- board-scanner: <what changed>
## Validation
- Orphan check: PASS
- Dead-end check: PASS
- Loop check: PASS
- Role coverage: PASS
- Board scanner consistency: PASS
````
## Propagation
After any process change:
1. **Commit** the changes in the team repo
2. **Sync** workspaces to propagate: `bm teams sync`
3. **Restart** all members: `bm stop && bm start`
Process changes affect ALL members — every workspace must be synced and
every member restarted.
## Error Handling
- If `PROCESS.md` doesn't exist, check that you're in the team repo root
- If `botminter.yml` doesn't exist, the profile may not use it — check the
profile documentation
- If `agreements/decisions/` doesn't exist, create it
- If a role referenced in a status doesn't exist, defer to the role-management
skill before proceeding
- If validation fails, explain the specific failure and propose alternatives —
do not apply the changeRelated 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.
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.
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.
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".