smithery/grahama1970

agent-inbox

File-based inter-agent messaging. Check inbox, send bugs/requests to other projects, acknowledge resolved issues. Use for cross-project agent communication.

Installation

$ npx skills add smithery/grahama1970 --skill agent-inbox

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/grahama1970 · top by installs.

npx skills add smithery/grahama1970

Browse all from smithery/grahama1970

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Allowed toolsBash, Read
Declared agents claude-code
More metadata
short-description
Inter-agent messaging for cross-project communication

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 8,244 B
  • docs SUMMARY.md 175 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Agent Inbox Skill

Simple file-based inter-agent message system. Allows agents working on different projects to communicate bugs, requests, and information without manual copy/paste.

When to Use

  • Agent A finds a bug in project B's code
  • Agent needs to request help from another project's agent
  • Passing information between project workspaces
  • Any cross-project agent communication

Running the Skill (No Global Install Needed)

The repo already includes a wrapper script (.agents/skills/agent-inbox/agent-inbox). Run it directly or invoke the Python entrypoint—no global install or PATH hacks required.

# Preferred: run the bundled wrapper
.agents/skills/agent-inbox/agent-inbox check

# Alternate: call Python explicitly
python .agents/skills/agent-inbox/inbox.py check

If you want convenience aliases, you can add the skill folder to PATH, but it’s optional and not assumed anywhere in this doc.

Setup (One-Time)

Register your projects so agent-inbox knows where they are:

# Register projects (use direct path if agent-inbox not on PATH)
.agents/skills/agent-inbox/agent-inbox register memory /home/user/workspace/memory
.agents/skills/agent-inbox/agent-inbox register scillm /home/user/workspace/litellm

# List registered projects
.agents/skills/agent-inbox/agent-inbox projects

# Check which project current directory maps to
.agents/skills/agent-inbox/agent-inbox whoami

# Unregister if needed
.agents/skills/agent-inbox/agent-inbox unregister old-project

Quick Start

# Send a bug report to the scillm project
.agents/skills/agent-inbox/agent-inbox send --to scillm --type bug --priority high "
File: scillm/extras/providers.py:328
Error: UnboundLocalError on 'options'
Fix: Rename local variable to avoid shadowing
"

# Check for pending messages (anytime)
.agents/skills/agent-inbox/agent-inbox check

# List all pending messages
.agents/skills/agent-inbox/agent-inbox list

# Read a specific message
.agents/skills/agent-inbox/agent-inbox read scillm_abc123

# Acknowledge when fixed
.agents/skills/agent-inbox/agent-inbox ack scillm_abc123 --note "Fixed: renamed to merged_options"

CLI Commands (Wrapper ≙ python inbox.py)

register - Register a project (one-time setup)

.agents/skills/agent-inbox/agent-inbox register <name> <path>

# Examples:
.agents/skills/agent-inbox/agent-inbox register memory /home/user/workspace/memory
.agents/skills/agent-inbox/agent-inbox register scillm /home/user/workspace/litellm

unregister - Remove a project

.agents/skills/agent-inbox/agent-inbox unregister <name>

projects - List registered projects

.agents/skills/agent-inbox/agent-inbox projects
.agents/skills/agent-inbox/agent-inbox projects --json

whoami - Show detected project for current directory

.agents/skills/agent-inbox/agent-inbox whoami

send - Send a message to another project

.agents/skills/agent-inbox/agent-inbox send --to PROJECT --type TYPE --priority PRIORITY "message"

# Types: bug, request, info, question
# Priority: low, normal, high, critical

# Examples:
.agents/skills/agent-inbox/agent-inbox send --to memory --type request "Please add 'proved_only' parameter to search()"
.agents/skills/agent-inbox/agent-inbox send --to scillm --type bug --priority critical "Server crashes on startup"

# Read message from stdin (useful for multi-line)
cat error.log | .agents/skills/agent-inbox/agent-inbox send --to scillm --type bug

list - List messages

.agents/skills/agent-inbox/agent-inbox list                      # All pending
.agents/skills/agent-inbox/agent-inbox list --project scillm     # For specific project
.agents/skills/agent-inbox/agent-inbox list --status done        # Completed messages
.agents/skills/agent-inbox/agent-inbox list --json               # JSON output

read - Read a specific message

.agents/skills/agent-inbox/agent-inbox read MSG_ID
.agents/skills/agent-inbox/agent-inbox read MSG_ID --json

ack - Acknowledge/complete a message

.agents/skills/agent-inbox/agent-inbox ack MSG_ID
.agents/skills/agent-inbox/agent-inbox ack MSG_ID --note "Fixed in commit abc123"

check - Check inbox (for hooks)

.agents/skills/agent-inbox/agent-inbox check                     # Check all
.agents/skills/agent-inbox/agent-inbox check --project scillm    # Check specific project
.agents/skills/agent-inbox/agent-inbox check --quiet             # Just return count (exit code 1 if messages)

Integration with Claude Code Hooks

Add to your project's .claude/settings.json:

{
  "hooks": {
    "on_session_start": [
      ".agents/skills/agent-inbox/agent-inbox check --project $(basename $PWD) || true"
    ]
  }
}

Or add to your shell profile to check on every new terminal:

# ~/.bashrc or ~/.zshrc
alias claude-start='.agents/skills/agent-inbox/agent-inbox check --project $(basename $PWD); claude'

Message Format

Messages are stored as JSON in ~/.agent-inbox/:

~/.agent-inbox/
├── pending/
│   └── scillm_abc123.json
└── done/
    └── memory_def456.json

Each message:

{
  "id": "scillm_abc123",
  "to": "scillm",
  "from": "extractor",
  "type": "bug",
  "priority": "high",
  "status": "pending",
  "created_at": "2026-01-11T20:30:00Z",
  "message": "File: providers.py:328\nError: UnboundLocalError..."
}

Environment Variables

Variable Description Default
AGENTINBOXDIR Inbox directory location ~/.agent-inbox
CLAUDE_PROJECT Current project name (for from field) unknown

Workflow Example

Agent A (extractor project) finds bug:

.agents/skills/agent-inbox/agent-inbox send --to scillm --type bug --priority high "
Bug in scillm/extras/providers.py:328

Error: UnboundLocalError: cannot access local variable 'options'

The _worker function references 'options' on line 328 before it's
assigned on line 345. This is because the assignment makes Python
treat it as a local variable throughout the function.

Suggested fix: Rename line 345 'options = dict(options or {})' to
'merged_options = dict(options or {})' and update subsequent references.
"

User switches to scillm project:

cd /path/to/scillm
claude  # Or .agents/skills/agent-inbox/agent-inbox check runs automatically via hook

Agent B (scillm project) sees message:

=== 1 pending message(s) ===
Project: scillm

[HIGH]
  scillm_a1b2c3d4: bug from extractor
    Bug in scillm/extras/providers.py:328...

Agent B fixes and acknowledges:

.agents/skills/agent-inbox/agent-inbox ack scillm_a1b2c3d4 --note "Fixed: renamed to merged_options in commit abc123"

Python API

from inbox import (
    register_project, unregister_project, list_projects,
    send, list_messages, read_message, ack_message, check_inbox
)

# Setup (one-time)
register_project("memory", "/home/user/workspace/memory")
register_project("scillm", "/home/user/workspace/litellm")
list_projects()  # {"memory": "/home/...", "scillm": "/home/..."}

# Send
send("scillm", "Bug report...", msg_type="bug", priority="high")

# List
messages = list_messages(project="scillm")

# Read
msg = read_message("scillm_abc123")

# Ack
ack_message("scillm_abc123", note="Fixed")

# Check (returns count)
count = check_inbox(project="scillm", quiet=True)