Read and write Plain support: find and upsert customers, list threads, create and reply to support threads. Trigger phrases: plain, support tickets.
npx skills add https://github.com/Anil-matcha/awesome-muse-connectors --skill plain
Manage the user's Plain support inbox: find and upsert customers, list support threads, open new threads, and reply to threads. Use when the user mentions Plain or support tickets.
All commands go through bin/plain.py:
bin/plain.py auth # verify the Machine User API key
bin/plain.py customer-find --email "[email protected]" # find a customer by email
bin/plain.py threads --limit 25 # list threads (Relay cursor pagination, max 100 per page)
bin/plain.py customer-upsert --email "[email protected]" --name "Them" # create or update a customer
bin/plain.py thread-create --customer-id c_abc123 --title "Bug report" --text "Details here" # open a support thread
bin/plain.py thread-reply --thread-id t_abc123 --text "We are on it" # reply to a thread
Plain's endpoint is UK-hosted (core-api.uk.plain.com); latency is normal for a cross-region call.
Schema reference: every operation is a minimal GraphQL query or mutation against Plain's published schema at https://core-api.uk.plain.com/graphql/v1/schema.graphql. Field selection in the CLI is conservative on purpose (id on node types, standard Relay pageInfo), and all parsing is defensive (.get with defaults), so a schema difference surfaces as a GraphQL error rather than a crash. If an operation errors on field names, check the schema URL above and adjust.
plain (credential is collected as custom.plain)credentials.request_api_access); created in Plain under Settings > Machine Userscore-api.uk.plain.combin/plain.py auth (must return "ok": true)customer-upsert, thread-create, and thread-reply are writes: confirm the customer and thread involved, and show the exact message text, before running, unless standing permission exists.--limit and follow pageInfo.hasNextPage for larger sweeps.🧪 Draft: written from Plain's public API docs; not yet live-tested end-to-end.
Take anil-matcha/plain from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.