SKILL.md
OXYGEN Unibox
Unibox is the control view over the native Messages store. It normalizes channel threads while preserving provider IDs, participants, delivery state, tags, and reply provenance.
Routing boundary
- Existing email, LinkedIn, or WhatsApp thread: query and reply through Unibox/Messages.
- New direct email without a cadence: Messages via the email-send gateway.
- New LinkedIn conversation, even one recipient/one step: Sequence.
- Cold, multistep, multi-recipient, sender-rotated, suppressed, or reply-stop outreach: Sequence.
Confirm with oxygen capabilities search "<message goal>" --json, then hydrate the exact inbox, messages, email, reviews, or agent command/schema.
LinkedIn visibility is sender-scoped. New accounts default to oxygen_initiated, which exposes only chats OXYGEN started; unrelated native LinkedIn conversations are neither ingested nor shown. Inspect or change an account with oxygen senders inbox-scope get|set. Treat all as an explicit customer opt-in to the full LinkedIn inbox. Existing accounts are grandfathered to all until an operator changes them. Changing this internal setting costs zero credits and does not trigger a provider sync or send a LinkedIn message.
Triage loop
- Query a bounded inbox slice by channel, status, tag, participant, and time window. Add
unansweredto keep only threads awaiting your reply (the last message is inbound) — it defaults off, so an unfiltered list still returns answered threads. - Read the conversation and relevant CRM/Knowledge context before classifying or drafting.
- Apply status, tags, archive, or bulk changes through a preview when the command offers one.
- Draft the reply and show the exact channel, account/thread, recipients, and content.
- Send only after explicit approval; preserve the returned message and conversation deep-links.
Use the reviews family for the human message-review queue. Use Agent discovery for AI Inbox Tagger or reply-draft configuration; generated drafts remain reviewable facts, not silent sends.
Guardrails
- Never convert an existing-thread reply into a new outreach Sequence.
- Never use raw Unipile/provider sends when Messages owns the thread.
- Bulk actions must expose count and scope before applying.
- Tags use the shared Tags vocabulary; do not create private per-inbox labels.
- If a send outcome is ambiguous, inspect message/run provenance before retrying.
- Never infer that an outbound-looking LinkedIn chat was OXYGEN-created. Restricted scope relies on the provider chat ID recorded from the successful
chats_createresponse.