dist/codex/plugins/dev-workflow/skills/ccgram-messaging/SKILL.md
Inter-agent messaging via ccgram swarm. Use when communicating with other agents in the same tmux session — send messages, check inbox, discover peers, broadcast status, reply to requests, or spawn new agents. Activates on: peer messages, inbox, swarm, ccgram, broadcast, agent collaboration, ask another agent.
npx skillsauth add alexei-led/claude-code-config ccgram-messagingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are part of a multi-agent swarm managed by ccgram. Each agent runs in its own tmux window. Use ccgram msg commands to collaborate with peers.
Scope: only register, discover peers, read inbox, send/reply/broadcast messages, spawn agents, and report swarm status. Do not perform the requested peer task yourself unless the user separately asks. Include relevant ccgram msg command output in status reports. If a command fails or ccgram is unavailable, report the failure and exact blocker.
Your window ID is in $CCGRAM_WINDOW_ID (format: session:@N, e.g. ccgram:@3).
Declare your identity so peers can discover you:
ccgram msg register --task "brief description of current work" --team "team-name"
Update registration when your task changes.
ccgram msg list-peers # all active windows
ccgram msg find --team backend # filter by team
ccgram msg find --provider claude # filter by provider
ccgram msg find --cwd "*/api-*" # filter by working directory glob
Peer IDs use session:@N format. Pass them directly to send.
ccgram msg inbox # pending messages
ccgram msg inbox --json # machine-readable
ccgram msg read <msg-id> # mark as read + display full message
--auto)Check inbox after completing a task, when idle, or when the user asks.
If the user asks you to send, reply, or broadcast, actually run the matching ccgram msg send, ccgram msg reply, or ccgram msg broadcast command. If you cannot, report the exact blocker: missing peer ID, missing message ID, no ccgram binary, rate limit, approval required, or command error.
When describing the workflow, include the concrete send/reply/broadcast command that will carry the status. If inbox has a message id, reply with ccgram msg reply <msg-id> "<concise status>"; if no specific message exists but the user asked to update peers, broadcast ccgram msg broadcast "<concise status>". Do not stop at "checking" or offering a template.
# Fire-and-forget
ccgram msg send <peer-id> "your message" --subject "topic"
# Block until reply (60s default timeout)
ccgram msg send <peer-id> "question?" --wait
# Reply to a received message (use the msg-id from inbox)
ccgram msg reply <msg-id> "your answer"
send — request to a specific peer (TTL: 60min)reply — response to a received message (TTL: 120min)broadcast — notification to multiple peers (TTL: 480min)Notify all matching peers at once:
ccgram msg broadcast "API contract changed — regenerate clients" --team backend
ccgram msg broadcast "v2 migration complete" --provider claude
Request a new agent window (requires Telegram approval):
ccgram msg spawn --provider claude --cwd ~/project --prompt "implement feature X"
ccgram msg spawn --provider claude --cwd ~/project --prompt "run tests" --auto
Use --auto only for autonomous tasks that need no user interaction.
Prefer messaging an existing peer over spawning when someone is already working in the relevant codebase.
When a message is injected into your context (format: [MSG <id> from ...]), extract the msg-id and reply:
ccgram msg reply <msg-id> "your answer"
--file <path> instead of inline bodyccgram msg sweep # remove expired messages from all inboxes
When reporting messaging status to the user, include what command was run or why no message was sent:
## Swarm Status
My ID: ccgram:@3 (api-gateway)
Peers: 4 active
- ccgram:@0 | payment-svc | backend | refactor checkout | feat/checkout
- ccgram:@5 | web-ui | frontend | dashboard | feat/dashboard
Inbox: 2 pending messages
1. [request] from @0 (payment-svc): "Need API schema for /orders endpoint"
2. [notify] from @5 (web-ui): "Dashboard types updated"
/ccgram-messaging inbox # check and summarize inbox
/ccgram-messaging send # discover peers, pick one, send message
/ccgram-messaging broadcast # broadcast status to team
/ccgram-messaging peers # list all active peers
/ccgram-messaging spawn # spawn a new agent for a subtask
tools
Idiomatic shell development for POSIX sh, Bash, Zsh, Fish, hooks, CI shell steps, and scriptable CLI glue. Use when writing or changing `.sh`, `.bash`, `.zsh`, `.fish`, `.bats`, shell functions, shell pipelines, or command-runner recipes. Emphasizes portability, quoting, safe filesystem/process handling, non-TUI CLI tools, ShellCheck, shfmt, Bats, and ShellSpec. NOT for Python, TypeScript, Go, web code, or infrastructure operations.
tools
Use when planning, executing, checkpointing, finishing, or inspecting lightweight spec-driven work. Runs one task at a time using `.spec/` markdown files and the bundled `specctl` helper. NOT for broad product discovery beyond a short requirement interview.
testing
Author, inspect, troubleshoot, and review infrastructure across IaC, Kubernetes, cloud resources, containers, CI/CD, and Linux hosts. Use when changing Terraform/OpenTofu, Kubernetes, Helm, Kustomize, Dockerfiles, GitHub Actions, AWS, GCP, Cloud Run, BigQuery, IAM, logs, instances, or service health. NOT for deploy/apply/rollback workflows (see deploying-infra). NOT for shell scripts or generic command pipelines (see writing-shell).
development
Configure safe git workflow hygiene: pre-commit/pre-push hooks, Gitleaks secret scanning, .gitignore rules, local git config, and guardrails. Use when setting up git hooks, gitleaks/git leaks, staged pre-commit checks, pre-push validation, core.hooksPath, .gitignore, or git config best practices. NOT for creating commits (use committing-code), cleaning branches/worktrees (use cleanup-git), or creating worktrees (use using-git-worktrees).