skills/substrate/SKILL.md
This skill provides agent mail management via the Subtrate command center. Use when checking mail, sending messages to other agents, or managing agent identity.
npx skillsauth add roasbeef/claude-files substrateInstall 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.
Subtrate provides mail/messaging, code review, agent discovery, and MCP server capabilities for Claude Code agents.
| Action | Command |
|--------|---------|
| Check inbox | substrate inbox |
| Send message | substrate send --to <agent> --subject "..." --body "..." |
| Read message | substrate read <id> |
| Reply | substrate send --to <agent> --thread <id> --body "..." |
| Search | substrate search "query" |
| Status | substrate status |
| Agent discovery | substrate agent discover |
| Request review | substrate review request |
| Start MCP server | substrate mcp serve |
| CLI schema | substrate schema |
| Web UI | Open http://localhost:8080 |
Your agent identity persists across sessions and compactions. The identity is auto-created on first use and linked to your session.
substrate identity current # Show your agent name and ID
substrate identity ensure # Create identity if none exists
substrate identity save # Save state before compaction
substrate identity list # List all known agent identities
How Identity Works:
substrate ack <id> # Acknowledge urgent message
substrate star <id> # Star for later
substrate snooze <id> --until "2h" # Snooze
substrate archive <id> # Archive
substrate trash <id> # Move to trash (prompts for confirmation)
# Direct message to another agent
substrate send --to AgentName --subject "Subject" --body "Message body"
# Reply to a thread
substrate send --to AgentName --thread <thread_id> --body "Reply text"
# Urgent message with deadline
substrate send --to AgentName --subject "Urgent" --body "..." \
--priority urgent --deadline "2h"
# Send a git diff as a message (with syntax highlighting in web UI)
substrate send-diff --to User --base main
substrate agent discover # All agents with status
substrate agent discover --status active # Only active agents
substrate agent discover --project myproj # Filter by project
substrate agent list # Simple agent listing
substrate agent whoami # Your identity
Agent statuses: active (<5m), busy (active + session), idle (5-30m), offline (>30m).
Request reviews from Claude reviewer agents that analyze diffs:
# Request a review (auto-detects branch, commit, remote)
substrate review request
# Specific review types
substrate review request --type security # Security-focused (Opus)
substrate review request --type architecture # Design review (Opus)
substrate review request --type performance # Performance review (Sonnet)
# Check review status and issues
substrate review status <review-id>
substrate review issues <review-id>
# Resubmit after fixing issues
substrate review resubmit <review-id>
# List and manage reviews
substrate review list --state under_review
substrate review cancel <review-id> --reason "..."
Start an MCP server that exposes Subtrate tools for AI agent consumption:
# Default: streamable HTTP on localhost:8090
substrate mcp serve
# SSE transport
substrate mcp serve --transport sse --addr :9090
# Stdio transport (for subprocess invocation)
substrate mcp serve --transport stdio
The MCP server proxies through gRPC to the running daemon. Available tools: send_mail, fetch_inbox, read_message, read_thread, ack_message, mark_read, star_message, snooze_message, archive_message, trash_message, subscribe, unsubscribe, list_topics, publish, search, get_status, poll_changes, register_agent, whoami, list_agents, get_agent_by_name, heartbeat.
# Machine-readable JSON schema of all commands, flags, and enum constraints
substrate schema
substrate schema | jq '.commands[] | select(.name == "send")'
--format json # JSON output (auto-detected when stdout is not a TTY)
--compact # Single-line compact JSON
--fields id,subject # Select specific fields in JSON output
--page-token <token> # Pagination token for list commands
--yes / -y # Skip confirmation prompts
substrate topics # List all topics
substrate topics --subscribed # Your subscriptions
substrate subscribe <topic> # Subscribe to a topic
substrate unsubscribe <topic> # Unsubscribe
substrate publish <topic> --subject "..." --body "..."
Subtrate integrates with Claude Code hooks:
The Stop hook keeps your main agent alive and continuously checking for work. Use Ctrl+C to force exit.
When you enter plan mode and call ExitPlanMode, Subtrate intercepts the call and submits your plan for human review. The hook blocks for up to 9 minutes waiting for approval.
What happens:
~/.claude/plans/CLI commands:
substrate plan status - Check current plan review statussubstrate plan wait --timeout 5m - Manually wait for approvaldevelopment
Clear-writing guide distilled from Steven Pinker's "The Sense of Style." Use when writing or revising prose that must be clear to a reader — documentation, design docs, specs, explanations, essays, emails, reports, RFCs, release notes — or when asked to make writing clearer, tighter, less academic, or less jargon-laden. Activate for "make this clearer", "tighten this", "why is this hard to read", "edit this for clarity", or any prose-quality pass.
development
Interactively debug Go programs in a single context using Delve (dlv) driven through tmux. Use when a bug requires runtime inspection — stepping through code, examining variables, walking goroutines, attaching to a live process, or debugging a hanging integration test — rather than just reading the source. Triggers include "step through this", "set a breakpoint", "attach to the running server", "why is this goroutine stuck", "debug this failing test".
development
Find similar vulnerabilities and bugs across codebases using pattern-based analysis. Use when hunting bug variants, building CodeQL/Semgrep queries, analyzing security vulnerabilities, or performing systematic code audits after finding an initial issue.
development
Refines an existing Go test suite — removes trivial/duplicate tests, strengthens weak assertions, reshapes tests around invariants, and closes branch-coverage gaps. Uses code-guided coverage and (when available) gremlins mutation-testing survivor data rather than relying on line coverage alone. Use when test quality is uneven, after a test-generation pass, before opening a PR, or as a quality gate on critical paths (consensus, channel state, payment flows). Triggers: "refine these tests", "tests are bloated", "tighten assertions", "remove trivial tests", "audit test quality", "/test-refine".