Asynchronous communication between Product Owner, Lead Developer, and Stakeholder roles using mail folders with SQLite tracking. Use when sending messages between roles, checking for incoming mail, responding to the other role, viewing threads, escalating decisions to stakeholder, or archiving processed messages.
Facilitates asynchronous communication between Product Owner, Lead Developer, and Stakeholder roles using SQLite-tracked mail folders.
/plugin marketplace add arizonacoders/claude-plugins/plugin install arizonacoders-mail-system-plugins-mail-system@arizonacoders/claude-pluginsThis skill is limited to using the following tools:
schema.sqlscripts/archive.jsscripts/db.jsscripts/init-db.jsscripts/list.jsscripts/read.jsscripts/send.jsscripts/server.jsscripts/thread.jsAsynchronous communication system for Product Owner, Lead Developer, and Stakeholder roles, backed by SQLite for message tracking, threading, and read status.
| Role | Description |
|---|---|
product-owner | Claude as Product Owner (requirements, issues, documentation) |
lead-developer | Claude as Lead Developer (technical review, code quality) |
stakeholder | The human user (decisions, approvals, direction) |
First time setup (run from project root):
# Navigate to the plugin's skill directory and install dependencies
cd "${CLAUDE_PLUGIN_ROOT}/skills/mail-system" && npm install && npm run init
This creates:
mail/product-owner/, mail/lead-developer/, mail/stakeholder/)mail.db) in the skill directoryLaunch the web interface:
cd "${CLAUDE_PLUGIN_ROOT}/skills/mail-system" && npm run ui
Then open http://localhost:3333 in your browser.
Features:
All commands run from the skill directory (${CLAUDE_PLUGIN_ROOT}/skills/mail-system/):
# List unread messages
node scripts/list.js product-owner
node scripts/list.js lead-developer
# List all messages (including read)
node scripts/list.js product-owner --all
# New message (creates new thread)
node scripts/send.js --from product-owner --to lead-developer --subject "Sprint Review Feedback"
# Reply to existing thread
node scripts/send.js --from lead-developer --to product-owner --subject "Re: Sprint Review" --thread thread-2025-01-20-sprint-review
# Message to stakeholder (for decisions)
node scripts/send.js --from product-owner --to stakeholder --subject "Decision Needed: Auth Approach"
node scripts/read.js msg-2025-01-20-abc123
node scripts/read.js 2025-01-20-sprint-review.md
node scripts/archive.js msg-2025-01-20-abc123
# List all threads
node scripts/thread.js --list
# View specific thread
node scripts/thread.js thread-2025-01-20-sprint-review
your-project/
└── mail/ # Created in project root
├── product-owner/ # Messages TO Product Owner
│ └── archive/
├── lead-developer/ # Messages TO Lead Developer
│ └── archive/
└── stakeholder/ # Messages TO Stakeholder (human)
└── archive/
${CLAUDE_PLUGIN_ROOT}/skills/mail-system/
├── SKILL.md # This file
├── package.json # Dependencies
├── schema.sql # Database schema
├── mail.db # SQLite database (created on init)
└── scripts/
├── db.js # Database utilities
├── init-db.js # Initialize system
├── send.js # Send message
├── list.js # List inbox
├── read.js # Mark as read
├── archive.js # Archive message
├── thread.js # View threads
└── server.js # Web UI server
Messages are created with YAML frontmatter for tracking:
---
id: msg-2025-01-20-abc123
thread: thread-2025-01-20-sprint-review
from: lead-developer
to: product-owner
date: 2025-01-20
---
# Subject
## Summary
Brief overview.
## Details
Full content.
## Action Required
- [ ] Actions needed
## Questions
1. Questions for recipient
---
From: lead-developer
Date: 2025-01-20
Messages are grouped into threads:
--thread <thread-id> to join existing threadnode scripts/thread.js --list to see all threadsnode scripts/thread.js <thread-id> to see thread history● Unread✓ Read📦 Archivednode scripts/list.js product-ownernode scripts/read.js <id>node scripts/send.js --from product-owner --to lead-developer --subject "Re: ..." --thread <thread-id>node scripts/send.js --from product-owner --to stakeholder --subject "Decision Needed"node scripts/archive.js <id>node scripts/list.js lead-developernode scripts/read.js <id>node scripts/send.js --from lead-developer --to product-owner --subject "Re: ..." --thread <thread-id>node scripts/archive.js <id>node scripts/list.js stakeholdermail/stakeholder/node scripts/read.js <id>node scripts/send.js --from stakeholder --to product-owner --subject "Re: ..." --thread <thread-id>node scripts/archive.js <id>Use when working with Payload CMS projects (payload.config.ts, collections, fields, hooks, access control, Payload API). Use when debugging validation errors, security issues, relationship queries, transactions, or hook behavior.