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.

8 stars

Best use case

cos-session is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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.

Teams using cos-session 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

$curl -o ~/.claude/skills/cos-session/SKILL.md --create-dirs "https://raw.githubusercontent.com/botminter/botminter/main/profiles/agentic-sdlc-minimal/roles/chief-of-staff/coding-agent/skills/cos-session/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/cos-session/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How cos-session Compares

Feature / Agentcos-sessionStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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.

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

# Chief of Staff Session

An open-ended working session between the chief of staff and the operator (PO).
There is no fixed agenda — the session is whatever the operator brings. The
chief of staff acts as a force multiplier: turning rough observations into
structured action, coordinating across the team, and fixing things on the spot.

This skill covers interactive sessions via `bm chat`. For structured team
design changes (retros, role management, process evolution), load the
`team-design` skill which routes to the appropriate sub-skill. For autonomous
queue processing, the executor hat handles `cos:exec:todo` items without this skill.

## When to Use

- The operator says "chief of staff session", "cos session", or "let's talk"
- The operator has observations, ideas, bugs, or frustrations to discuss
- The operator wants to check on team members or review their work
- The operator wants to file issues, fix things, or go over the board
- Any mix of strategic, operational, and tactical concerns

## Session Pattern

There is no rigid workflow. The session flows naturally based on what the
operator brings. Common activities include:

### Filing Issues
The operator describes a problem or idea. The chief of staff:
1. Investigates if needed (check code, logs, member history)
2. Enriches with technical context, root cause analysis, affected files
3. Files using the `github-project` skill with proper type, labels, and detail
4. Does NOT just echo the operator's words — adds real value to the issue body

All GitHub operations MUST go through the `github-project` skill.

### Reviewing Member Activity
The operator asks what a member is doing. The chief of staff:
1. Checks Claude Code session logs at `~/.claude/projects/` — JSONL files,
   one per session. Parse with `jq` to extract messages and tool calls.
2. Checks Ralph state at `<workspace>/.ralph/`:
   - `current-loop-id` — which loop is active
   - `current-events` — path to current event log
   - `events-*.jsonl` — event history (hat switches, dispatches)
   - `history.jsonl` — loop start/stop records
   - `agent/memories.md` — what the agent remembers
3. Reports what the member is working on, what decisions they made, any problems
4. Flags if the member is stuck, made a wrong dispatch decision, or is wasting cycles
5. If the member needs configuration tuning, load the `member-tuning` skill

### Fixing Things On The Spot
The operator or chief of staff notices something broken. Fix it immediately:
1. Make the code/config change in `team/`
2. Commit with the project's commit convention (`<type>(<scope>): <subject>`)
3. Push to the team repo
4. Propagate to all members with `bm teams sync --all`
5. Verify the fix reached affected workspaces

### Process Feedback
The operator has feedback about how the team works:
1. Discuss the change and its implications
2. For straightforward fixes (priority reorder, config tweak), apply directly
3. For structural process changes (new statuses, modified transitions, review
   gates), load the `process-evolution` skill which validates against the
   status graph and records decisions
4. File an issue if it needs design work beyond the session

### Observability
Building visibility into what the team is doing:
1. Check member session logs and Ralph events
2. Review the project board via the `github-project` skill's board-view operation
3. Identify patterns (wasted cycles, wrong priorities, missing context)
4. Build tooling if recurring (scripts, dashboards, monitoring)

## Examples

### Example 1: Filing a bug from an observation

Operator says: "Ralph's onboarding is all about Telegram even though we use Matrix"

The chief of staff:
1. Checks the Ralph Orchestrator source to understand the scope
2. Finds `TelegramTokenCheck` in preflight.rs runs unconditionally, `OnboardArgs`
   defaults to telegram, error messages reference Telegram in Matrix contexts
3. Files a Bug issue with all affected files, observed vs expected behavior,
   and reproduction context — not just "onboarding is wrong"

### Example 2: Reviewing a member and catching a wrong decision

Operator says: "What's `<member>` doing?" (e.g. "what's bob doing?", "check on the engineer")

The chief of staff:
1. Reads the member's latest Claude Code session from `~/.claude/projects/*<member>*/*.jsonl`
2. Finds the member is working on issue #67 (new work) instead of #61 (nearly complete)
3. Checks the board-scanner priority table — `dev:implement` was ranked above
   `qe:verify`, causing the member to start new work before finishing existing work
4. Reports the wrong dispatch to the operator
5. Fixes the priority table, commits, pushes, propagates to the member's workspace

### Example 3: Quick fix with propagation

Operator says: "The github-project skill wastes API calls on setup"

The chief of staff:
1. Reads setup.sh, identifies redundant API calls on every invocation
2. Adds file-based caching, switches 5 scripts to minimal mode
3. Commits to team repo, pushes
4. Runs `bm teams sync --all` to propagate
5. Verifies the affected workspaces have the updated scripts

## Comment Format

All comments posted during a cos-session use the standard attribution format:

```
### 📋 chief-of-staff — $(date -u +%Y-%m-%dT%H:%M:%SZ)
```

## Principles

### Turn Rough Input Into Structured Action
The operator gives rough direction. The chief of staff investigates, determines
scope, identifies affected code, and produces structured output — rich issues,
targeted fixes, or clear recommendations.

### Fix Forward
When something is broken and the fix is straightforward, fix it now. Don't file
an issue for a one-line config change. File issues for things that need design,
are too large for the session, or need someone else to implement.

### Propagate Completely
Changes to team-level files (CLAUDE.md, skills, PROCESS.md) must reach all
members. Use `bm teams sync --all` to surface changes. Verify they landed.

### Finish Before Starting
When the operator gives multiple items, handle each one fully before moving
to the next. Don't leave half-filed issues or uncommitted changes.

### Challenge and Enrich
Don't just execute — add value. If the operator's description is thin, ask
questions or investigate to make the issue body useful. If a proposed fix has
implications the operator may not see, raise them.

## Error Handling

- If `bm teams sync` fails, check which clone/submodule is behind or on a
  stale branch. Pull the central team repo, update workspace submodules,
  resolve any branch conflicts, then retry sync.
- If issue filing fails due to rate limits, report the remaining quota and
  reset time. Wait or batch operations. If scope errors, check `gh auth status`.
- If a commit or push fails due to conflicts, inspect the conflicting files,
  resolve by choosing the correct version, stage, and commit. Do not force-push
  without operator confirmation.
- Never leave the workspace in a dirty state — either commit or revert.

## Troubleshooting

### Workspace git state is a mess
Members accumulate feature branches, stale submodule pointers, and diverged
state from autonomous work. The team repo exists in multiple clones (central,
per-workspace submodules) that drift apart.

Recovery:
1. Check the central team repo (`~/.botminter/workspaces/<team>/team/`) — pull
   if behind remote
2. Check each workspace's `team/` submodule — `git branch` to see what branch
   it's on, `git log --oneline -3` to see if it has the latest commits
3. If a workspace is on a feature branch, check if the work is merged to main.
   If yes, switch to main. If no, rebase onto main.
4. Run `bm teams sync --all` after fixing all clones

### GraphQL rate limit exhausted
GitHub's GraphQL quota (5000/hour) gets burned fast when the `github-project`
skill re-resolves project metadata on every call.

Recovery:
1. Check remaining quota: `gh api rate_limit --jq '.resources.graphql'`
2. For mutations that need GraphQL (issue creation, status transition), wait
   for reset or use REST alternatives (`gh issue create` via the skill)
3. For read-only operations, use the board state cache if available
4. The REST API has a separate 5000/hour limit — use it for non-project operations

### Changes not reaching a member
After pushing to the team repo and running `bm teams sync --all`, a member
may still have old files if:
1. Their `team/` submodule is on a feature branch, not main — check with
   `git -C <workspace>/team branch`
2. The workspace `CLAUDE.md` is a copy, not a symlink — re-run sync or copy
   manually from `team/members/<member>/CLAUDE.md`
3. The skill is symlinked from `team/` but the submodule hasn't pulled — run
   `git -C <workspace>/team pull origin main`

### Member making wrong dispatch decisions
If a member picks up the wrong issue (e.g., starts new work instead of
finishing existing work):
1. Check the board-scanner priority table in the member's skills
2. Verify the priority ordering matches "closer to finish line wins"
3. Fix the priority table, push, and propagate
4. The member will pick up the correct item on the next board scan cycle

Related Skills

workspace-sync

8
from botminter/botminter

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

8
from botminter/botminter

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

8
from botminter/botminter

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

8
from botminter/botminter

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

8
from botminter/botminter

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

8
from botminter/botminter

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.

github-project

8
from botminter/botminter

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

8
from botminter/botminter

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

8
from botminter/botminter

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

8
from botminter/botminter

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

8
from botminter/botminter

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

8
from botminter/botminter

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".