Agent skill
unipile
Use when a GTM workflow needs LinkedIn profile, inbox, connection, or outreach capabilities through the GTM OS Unipile connector.
Filed under Outbound email.
From ay-automate/gtmos-skills · 107 skill entries · 0 · pushed 2026-11-02
What it does when it runs
Use when a GTM workflow needs LinkedIn profile, inbox, connection, or outreach capabilities through the GTM OS Unipile connector.
Automated analysis of the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- UNIPILE_API_KEY
- Hosts it reaches
- docs.unipile.com
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Ask about unipile
Opens your assistant with this page's recorded context. Check the linked sources before relying on it.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/ay-automate/gtmos-skills.git /tmp/gtmos-skills git -C /tmp/gtmos-skills sparse-checkout set "skills/unipile" mkdir -p ~/.claude/skills/unipile cp -R "/tmp/gtmos-skills/skills/unipile/." ~/.claude/skills/unipile/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
Or take the whole library
This repo ships a .claude-plugin manifest, so Claude Code can install all 107 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.
/plugin marketplace add ay-automate/gtmos-skills /plugin
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
Before you install: this skill will not complete its job on a bare agent. It needs UNIPILE_API_KEY, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from ay-automate/gtmos-skills/blob/86780d2f545cdc0a1de971917aa04b41bb0b3ccd/skills/unipile/SKILL.md, which is licensed MIT (repository). 759 words, 10 headings.
unipile with GTM OS
When to use this skill
Use when a GTM workflow needs LinkedIn profile, inbox, connection, or outreach capabilities through the GTM OS Unipile connector.
What GTM OS uses it for
LinkedIn channel adapter for profile/inbox/first-degree reads, connection requests, messages, and weekly connection refresh.
Capabilities and operation names are listed below as they appear in the connector package and
coverage map. Discover the live input and output schema with gtm describe before invocation;
the registry for the current organization is authoritative if it differs from this static guide.
- Connector capabilities (no operation of their own): read a profile, read the inbox, read connections, send a connection request, send a message. Sends go through
outreach.send_messageand its approval. - A connector job keeps
unipile_first_degree_connectioncurrent for suppression. outreach.linkedin_seats(Q) reports the seats of the activated LinkedIn lanes: caps per kind per UTC day and rolling 7 days, warm-up, usage,noteMaxChars, whether Unipile is connected and whether an owner accepted LinkedIn's high risk.outreach.linkedin_webhook_secretreturns the Unipile webhook secret to humans only (owner / admin); agent keys are refused.
Connect it
Configure the per-org Unipile connection with API key, DSN/base host, and connected LinkedIn account ID. .env.example names UNIPILE_API_KEY and UNIPILE_DSN for platform configuration; both unset means fixtures. Use the console Connections flow to bind a customer account.
Unipile connection authorization is account-based; use the exact permissions shown by the Unipile account connection flow. The GTM OS connector declares the required API host and account binding, not an OAuth scope string. Do not request unrelated account access.
Use the console Connections/settings page for the provider when present. For CLI setup, inspect
gtm connect --help and use the provider name supported by the installed CLI; do not guess
flags or paste credentials into command history. Restart/reload the configured instance only
through its documented operator workflow.
Canonical data
- Reads LinkedIn profiles, inbox, connections.
- Refreshes org-scoped
unipile_first_degree_connection, used as a suppression source. - Connector declarations include outreach capabilities; do not claim arbitrary LinkedIn profile data is stored in another
gtm.*object without checking the operation output.
Read and write records through registered operations and gtm.* objects only. A vendor-side
record is not automatically a canonical GTM OS record; use the connector's declared mapping and
retain source provenance. Do not infer fields from the vendor API.
Governance and safety
LinkedIn sends are high-risk and OFF by default: every LinkedIn send is refused until an owner accepts the risk (broker.accept_high_risk, human only, approved by a different person). After that each send is proposed and a different person approves it, inside the seat's caps and warm-up; a send over a cap is held until room opens, never dropped. Never bulk send, evade platform limits, or target a suppressed/opted-out person. The first-degree snapshot exists specifically to prevent connection requests to existing connections. Never ask for, print or store the webhook secret.
- E-class/customer-facing writes are proposed for approval; a different human approves them.
- Respect consent, suppression, unsubscribe, and do-not-contact state before any person-level action.
- Honor configured spend/budget caps. Do not retry a billable request blindly after timeout.
- Keep connection secrets in the sealed connection or server environment. Never print or commit them.
Common errors and recovery
-
Fixture response: credentials or connected account are absent; don't mistake it for live data.
-
401: verify API key and DSN host.
-
Account not found: reconnect the LinkedIn account and verify its account ID.
-
Send disabled/rejected: keep the safety default; do not enable or retry without explicit human authorization.
-
Check the connection state and provider health before retrying; use the connector's fixture mode only for development.
-
Read the operation error and lineage/receipt before changing inputs or repeating a write.
-
If the provider is not registered, stop and report that limitation; do not call the vendor directly as a workaround.
Do
- Read the connector entry in
docs/gtmos/reference/connections.mdand the currentgtm describeschema before a new integration action. - Start with a read or one narrowly scoped test, confirm provenance, then scale within the approved budget.
- Ask a human to resolve missing consent, expired credentials, or approval-required actions.
Don't
- Don't invent endpoints, scopes, operation names, or object fields.
- Don't bypass GTM OS governance with direct vendor writes or direct database edits.
- Don't send messages, change campaigns, or publish content without the operation's approval path.
Official vendor documentation
GTM OS reference: docs/gtmos/reference/connections.md (installed by gtm init) and the live gtm describe schema.
Need help setting it up?
This page tells you what unipile does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.