Systems Lab

Agent skill

unipile

Use when a GTM workflow needs LinkedIn profile, inbox, connection, or outreach capabilities through the GTM OS Unipile connector.

activeNeeds a keyInstructions only759 words

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-tools in 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.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
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.

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_message and its approval.
  • A connector job keeps unipile_first_degree_connection current 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_secret returns 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.md and the current gtm describe schema 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

https://docs.unipile.com/

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.

Build my GTM engine

Tell us what you want to improve. Fedor reviews the workflow and replies by email when there is a useful fit.

Fedor reviews every request personally. If there is a useful fit, he will reply by email.