inkbox-ai/inkbox/inkbox-onboarding
Claude Code and agent skill by inkbox-ai/inkbox
- community
Checking that the SKILL.md file is still in the repository.
Use when setting up an existing Inkbox identity for email, SMS, iMessage, calls, inbound handling, and recurring communications triage with the API, CLI, Python SDK, or TypeScript SDK.
Install
npx vskill@latest install inkbox-ai/inkbox/inkbox-onboardingSKILL.md
Inkbox Onboarding
Use this skill after an API key exists. If the agent still needs an account or API key, use inkbox-agent-self-signup first.
Onboarding Process
- Confirm which Inkbox API key and identity should be used. Never print, log,
or commit the key.
- Inspect the authenticated principal and current identities before creating or
changing anything.
- Check each requested channel independently. A working mailbox does not imply
that SMS, calls, or iMessage are ready.
- Ask before provisioning a number, enabling a channel, changing inbound
routing, creating a webhook, or sending test traffic.
- Complete any recipient-side connection or consent step.
- Run one bounded test per requested channel and verify the resulting record or
reply instead of assuming an accepted request was delivered.
- Choose an inbound strategy: polling for simple agents, signed webhooks for
event-driven agents, or both.
- Offer recurring inbox and conversation triage only after the channels are
ready. Confirm cadence, channels, identities, and whether replies are allowed.
Readiness Checklist
| Channel | Ready when | Recipient-side step | |
|---|---|---|---|
| The identity has a mailbox | None | ||
| SMS/MMS | The identity has a local phone number and its SMS status is ready | The recipient must text START before the first outbound message | |
| Calls | The identity has a phone number, or a supported connected shared iMessage line is selected for the call | Shared-line calls require an existing iMessage connection | |
| iMessage, shared service | iMessage is enabled for the identity | The person texts the runtime-provided connect @handle command to the current router number | |
| iMessage, dedicated line | iMessage is enabled and a dedicated line is attached | Server-side contact policy must allow the send |
Identity creation provisions a mailbox and tunnel together. A phone number is optional and must be local; do not request a toll-free number. New local numbers can remain pending while messaging registration completes, so inspect sms_status and wait for ready rather than retrying sends.
Router numbers and connection commands can change. Always retrieve the current iMessage triage details at runtime and present them exactly as returned.
CLI
Install the CLI and keep the key in the environment:
Inspect before mutating:
With the user's approval, enable or provision only the requested channels:
After number provisioning, run inkbox identity get support-agent --json again and wait for smsStatus to become ready. Before texting a recipient, verify that the recipient has opted in:
Use --json when another program will consume the output. Sending email, text, iMessage, or a call creates real external traffic and requires confirmation.
Python SDK
After provisioning a number, refresh the identity before checking readiness:
For channel-specific operations, continue with inkbox-python rather than guessing method names or response fields.
TypeScript SDK
Refresh after provisioning before checking identity.phoneNumber?.smsStatus:
For channel-specific operations, continue with inkbox-ts.
Direct API
The API uses the same key and returns snake_case JSON:
These mutations require confirmation:
Use the published OpenAPI document at https://inkbox.ai/api/openapi.json for complete request and response schemas.
Inbound Communications
Polling is the smallest setup for an agent that already runs on a schedule. List unread email and recent SMS, iMessage, calls, and A2A tasks; fetch only the bounded conversation context needed; then persist a cursor or last-success time so the next run does not reply twice.
Use webhooks when the agent needs prompt delivery. With SDK/CLI 0.7.8 or later and GET /webhooks/catalog advertising supports_identity_subscriptions: true, one identity-owned subscription can combine notification families even before optional channels are configured. Until then, keep separate subscriptions using mailbox selectors for mail, phone selectors for text, and identity selectors for identity events. Subscribe to only the event types and identities the agent needs, verify every signature against the raw request body, return quickly, and process idempotently. Use an Inkbox tunnel when the receiver runs locally; see inkbox-tunnels for setup and recovery.
Recurring Triage
When the client supports scheduling, offer a task with an explicit cadence and scope. A safe default instruction is:
Check unread email, new SMS and iMessage conversations, recent or missed calls,and new or input-required A2A tasks since the last successful run. Read onlythe context needed to understand each item. Reply only where the scheduleexplicitly allows it, use the same channel, never respond twice, and reportsends that fail. Finish with actions taken, items needing a decision, and anychannel setup problems.
Do not create a schedule or authorize automatic replies without the user's approval.
Slack
After connecting, contact import is optional: it saves visible people without allowing messages or enabling Companion. In 0.7.14+, an organization admin can use slack contacts-import and slack contact-rule, or the corresponding SDK methods. Follow import cursors. Changing Slack whitelist/blacklist defaults on the identity also requires an organization admin key. Companion requires an exact human account allowed in both directions; a workspace allow alone does not sponsor access.
See the Slack API and onboarding guide for implemented SDK/CLI methods. Use an existing identity and select the intended connected workspace explicitly. Organization-member sessions, organization admin API keys, and claimed agent keys can save and list setup workspaces in their organization. Claimed agent keys can prepare and install only their own identity’s app; organization credentials can select an identity in their organization. Installation availability does not imply preparation is ready. Save both app-configuration tokens for the target workspace, then prepare the identity’s app using that saved provisioning-workspace UUID. Use save_provisioning_workspace / saveProvisioningWorkspace or CLI slack provisioning-workspace save --credentials-file <path> (use - for stdin). Reuse safe metadata from list_provisioning_workspaces / listProvisioningWorkspaces. Tokens are write-only; never put them in command arguments or output. Pass the saved ID to start_setup (Python/Rust), startSetup (TypeScript), or slack setup start --provisioning-workspace-id <uuid>. Poll connection reads until setup.status is ready, with a bounded wait and a few seconds between reads. For needs_credentials, select a saved workspace or save valid configuration credentials. Do not blindly retry an unknown setup outcome. Start installation only when ready. Open the returned URL in a browser; treat the full URL as a secret. After approval, list connections again to confirm the expected workspace is connected. The app is bound to its chosen workspace; no client-invitation workflow is supported. Join accessible public channels or invite the agent to selected private channels. Slack Connect is supported when the selected connection has access.
App removal (0.7.23+). For user-requested app removal, use an organization admin API key; claimed agent keys cannot remove apps or read removal status. Removal is not the default repair for a reauthorization error. Read the connection list and check application_created / applicationCreated before using its application generation. Generate a fresh request UUID once and save it with that generation before removal; retry uncertain requests with those same values, not a newly read generation. The removal operation ID equals its saved request UUID.
Use remove_application and get_application_removal (Python/Rust), removeApplication and getApplicationRemoval (TypeScript), or slack application remove --expected-application-generation <saved-generation> --request-id <saved-uuid> and slack application removal-status --operation-id <saved-uuid> (CLI). Generate the request UUID once, for example with uuidgen, before making the call.
Poll the saved operation ID every few seconds with a bounded wait while deletion is pending, including when the error is credentials_busy. failed and unknown are terminal; replay does not retry deletion. Removal always attempts permanent Slack-side deletion, but credential errors or timeouts do not prove the app is gone. If needed, check and delete the original app in Slack with its original creator. Removal never prepares another app. Previous connection history becomes unavailable; the Inkbox identity, other channels, and memory are unchanged. For a fresh app, select the intended saved workspace-and-creator record (or save another token pair), start setup explicitly, wait until ready, authorize installation, and invite the new bot back to channels. A retained non-null app generation does not mean an app exists.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/inkbox-onboarding/SKILL.md
Popularity
- Repository stars
- 103
- Repository forks
- 27
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/inkbox-ai/inkbox/inkbox-onboarding)