Upwork Proposal Writer
abullaisi/upwork-skills
Draft or review an Upwork proposal (cover letter) using the five-move method extracted from a Top Rated Plus freelancer's winning proposals, corrected for the AI era.
A skill your agent uses when a profile-view webhook (e.g. An agent skill from swan-gtm/gtm-skills.
$ npx skills add swan-gtm/gtm-skills --skill handle-linkedin-profile-view-signal -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install swan-gtm/gtm-skills handle-linkedin-profile-view-signal --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ariel-cohen/handle-linkedin-profile-view-signal .claude/skills/handle-linkedin-profile-view-signal && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "handle-linkedin-profile-view-signal" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/ariel-cohen/handle-linkedin-profile-view-signal into .claude/skills/handle-linkedin-profile-view-signal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handle-linkedin-profile-view-signal", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/swan-gtm/gtm-skills/tree/main/skills/ariel-cohen/handle-linkedin-profile-view-signalType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add swan-gtm/gtm-skills --skill handle-linkedin-profile-view-signal -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install swan-gtm/gtm-skills handle-linkedin-profile-view-signal --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ariel-cohen/handle-linkedin-profile-view-signal .agents/skills/handle-linkedin-profile-view-signal && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "handle-linkedin-profile-view-signal" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/ariel-cohen/handle-linkedin-profile-view-signal into .agents/skills/handle-linkedin-profile-view-signal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handle-linkedin-profile-view-signal", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add swan-gtm/gtm-skills --skill handle-linkedin-profile-view-signal -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install swan-gtm/gtm-skills handle-linkedin-profile-view-signal --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ariel-cohen/handle-linkedin-profile-view-signal .cursor/skills/handle-linkedin-profile-view-signal && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "handle-linkedin-profile-view-signal" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/ariel-cohen/handle-linkedin-profile-view-signal into .cursor/skills/handle-linkedin-profile-view-signal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handle-linkedin-profile-view-signal", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/swan-gtm/gtm-skills.git --path skills/ariel-cohen/handle-linkedin-profile-view-signal--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add swan-gtm/gtm-skills --skill handle-linkedin-profile-view-signal -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install swan-gtm/gtm-skills handle-linkedin-profile-view-signal --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ariel-cohen/handle-linkedin-profile-view-signal .gemini/skills/handle-linkedin-profile-view-signal && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "handle-linkedin-profile-view-signal" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/ariel-cohen/handle-linkedin-profile-view-signal into .gemini/skills/handle-linkedin-profile-view-signal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handle-linkedin-profile-view-signal", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install swan-gtm/gtm-skills handle-linkedin-profile-view-signalInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add swan-gtm/gtm-skills --skill handle-linkedin-profile-view-signal -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ariel-cohen/handle-linkedin-profile-view-signal .github/skills/handle-linkedin-profile-view-signal && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "handle-linkedin-profile-view-signal" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/ariel-cohen/handle-linkedin-profile-view-signal into .github/skills/handle-linkedin-profile-view-signal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handle-linkedin-profile-view-signal", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add swan-gtm/gtm-skills --skill handle-linkedin-profile-view-signal -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install swan-gtm/gtm-skills handle-linkedin-profile-view-signal --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swan-gtm/gtm-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ariel-cohen/handle-linkedin-profile-view-signal .opencode/skills/handle-linkedin-profile-view-signal && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "handle-linkedin-profile-view-signal" agent skill from https://github.com/swan-gtm/gtm-skills/tree/main/skills/ariel-cohen/handle-linkedin-profile-view-signal into .opencode/skills/handle-linkedin-profile-view-signal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handle-linkedin-profile-view-signal", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
handle-linkedin-profile-view-signalA skill your agent uses when a profile-view webhook (e.g. An agent skill from swan-gtm/gtm-skills.
Handle Linkedin Profile View Signal is an agent skill from swan-gtm/gtm-skills. Use this skill when a profile-view webhook (e.g. LeadShark) fires for a new view on a team member's LinkedIn profile. It resolves the viewer's identity and company, applies dedup, internal, relationship, and ICP gates, and routes qualified viewers into the MQL pipeline — treating a profile view exactly like a website visit. The CRM is never polluted: only fully resolved, ICP-matched viewers reach a CRM write.
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/customization-checklist.md`, `references/installation-getting-the-signal-flowing.md` and `references/webhook-payload-reference-leadshark-new-profile-visit.md`).
It sits in Sales & Support, covering Resume and CV writing and Webhooks. The repository describes itself as: Open, production-grade GTM skills for AI agents. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 67abd04. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Handle Linkedin Profile View Signal loads about 3.2k tokens when it runs, and up to ~5.6k if it reads all its reference files. Until then it costs about 112 tokens; SKILL.md has 1,556 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from swan-gtm/gtm-skills at commit 67abd04, republished under its MIT licence (© swan-gtm). 1,556 words, ~3,234 tokens.
.claude/skills/handle-linkedin-profile-view-signal/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Replace every {{...}} before enabling. See the setup checklist reference for the full setup list.
{{PROFILE_OWNER}} — Full name of the team member whose LinkedIn is tracked (e.g. "Jane Doe"){{INTERNAL_DOMAINS}} — Your own company domain(s) (e.g. "acme.com"){{NOTIFICATIONS_CHANNEL}} — Slack channel reference for outcome/debug posts{{ENRICHMENT_TOOL}} — Primary contact-enrichment tool available to the agent{{FALLBACK_SCRAPER}} — Fallback LinkedIn profile scraper (e.g. an Apify actor){{CRM}} — Your CRM (e.g. HubSpot){{CRM_HYGIENE_SKILL}} — Sub-skill reference: how to create/update companies & contacts in your CRM{{EXISTING_RELATIONSHIP_SKILL}} — Sub-skill reference: handling accounts with an open/lost deal{{HIGH_INTENT_SKILL}} — Sub-skill reference: potential-MQL scoring & routing{{AWARENESS_SKILL}} — Sub-skill reference: net-new ICP awareness logging{{TIER_SCALE}} — Your lead-score tiers, low→high (default: Bronze / Silver / Gold / Diamond){{SOLE_SIGNAL_CAP_TIER}} — Max tier when a profile view is the only 1st-party signal (default: Silver){{COOLDOWN_WINDOW}} — Same-session dedup window (default: 1 hour)This skill fires when your profile-view tracker (e.g. LeadShark) detects a new view on {{PROFILE_OWNER}}'s LinkedIn profile. Goal: behave exactly like a website visit — resolve the viewer, run the same ICP gate, register them as a known contact only when they pass, and feed them into the MQL pipeline.
The golden rule: the CRM is never polluted. Only a viewer who is identified + company-resolved + not-internal + not-customer + ICP-matched ever reaches a CRM write. Everyone else is silently discarded or logged to org memory only.
The webhook trigger handles only one thing: ignoring events that are not
new.profile.visit. All logic lives here.
Channel rule: When outreach is triggered by a LinkedIn profile view signal, keep it LinkedIn-only. Do not create email steps. The contact came to you via LinkedIn — stay on that channel.
The payload arrives as text. Extract the fields listed in references/webhook-payload.md. Key ones:
data.profile_owner — confirm this is {{PROFILE_OWNER}}; if not, stop silently.data.lead.is_anonymous — if true, stop immediately and silently. No
enrichment, no CRM writes, no memory writes, no channel post. Anonymous
viewers (LinkedIn Premium private mode) are fully discarded.data.lead.title is the LinkedIn headline — it often contains no
company. Never treat it as a company name.data.visit.id is a stable unique token per visit; data.lead.actor_id
identifies the person across visits.Profile-view trackers emit multiple visit records for a single viewing session
— same person, same actor_id, different visit.id each time. Run two checks
before paying for enrichment:
Read the org-level memory note "Profile Views — {{PROFILE_OWNER}} —
Processed Visit IDs" (create it if it doesn't exist). Each entry stores:
visit.id | actor_id | timestamp.
Check 1 — Exact retry guard: If data.visit.id is already in the note →
duplicate webhook redelivery → stop silently. No enrichment, no CRM, no
memory writes, no channel post.
Check 2 — Per-person session cooldown: If data.lead.actor_id appears in
the note with a timestamp within the last {{COOLDOWN_WINDOW}} → same
viewing session split into multiple events → stop silently.
Otherwise: Append data.visit.id | data.lead.actor_id | data.visit_timestamp to the note and continue. Keep only the most recent
~200 entries.
Critical: A genuine repeat view from the same person outside the
cooldown window has the same actor_id but passes both checks and re-scores
as a stronger signal. This is intentional — the cooldown only collapses rapid
same-session duplicates, never real repeat intent.
Identifying the person is not the same as resolving the company. You must have both before proceeding.
Do NOT infer the company from the LinkedIn headline. Headlines like "Product | Strategist | Building 0→1" are not company names.
linkedin_username (or linkedin_url) to
retrieve: current company name, company domain, confirmed job title, and
country/location.Exit condition — UNRESOLVED: If after both tools you still cannot confidently determine a company name + domain:
If the resolved domain is {{INTERNAL_DOMAINS}} or any other internal domain → stop silently. No CRM, no memory, no channel post.
Look up the company in your workspace + {{CRM}}:
Compare the company against your ICP segments.
⛔ Hard gate — read before doing anything in this step:
Do NOT create or update ANY CRM company or contact, and do NOT write to account memory, unless ALL of the following are true: (a) the viewer is not anonymous (b) the company was confidently resolved to a real domain in Step 2 (c) the domain is not internal (Step 3 passed) (d) the account is not an existing customer (Step 4 passed) (e) the account passed the ICP check in Step 5
If any condition fails, skip this step entirely — no CRM writes of any kind.
If all conditions are met:
Log to account memory:
[PROFILE VIEW — {{PROFILE_OWNER}}] [date] — Visit ID: [visit.id]
Viewer: [full name], [title]
LinkedIn: [linkedin_url]
Connection status: [connection_status]
Company: [company name] ([domain])
Country: [country]
Repeat views: [count of prior profile-view entries in this account's memory + 1]Update the account's state summary in your workspace.
Create/update Company and Contact in {{CRM}} following the {{CRM_HYGIENE_SKILL}} sub-skill:
LinkedIn profile view — {{PROFILE_OWNER}}
• Viewed {{PROFILE_OWNER}}'s LinkedIn profile on [date]
• Connection status: [connection_status]
• Visit ID: [visit.id]
• Repeat view count from this company: [n]Persona gate (evaluate first — overrides all routing below):
Before routing, classify the viewer's persona:
If the viewer is a weak/non-buyer persona: Route to {{AWARENESS_SKILL}} regardless of repeat-view count, connection status, or stacked signals from prior visits. Do NOT route to {{HIGH_INTENT_SKILL}}. Pass the note: "Do NOT send a connection request from {{PROFILE_OWNER}} — viewer is not a buying persona." Stacked-signal tier lifts do not apply; the account stays at {{SOLE_SIGNAL_CAP_TIER}} or below.
High intent → open {{HIGH_INTENT_SKILL}} when the viewer is a strong buyer persona AND ANY of:
connection_status = Connected AND persona is at least medium strengthAwareness → open {{AWARENESS_SKILL}} when:
When invoking {{AWARENESS_SKILL}} for a weak persona, pass the explicit note: "Do NOT send a connection request from {{PROFILE_OWNER}} — viewer is not a buying persona."
Sole-signal cap: When calling either sub-skill, pass the explicit instruction: "Profile view cap: if this LinkedIn profile view is the only 1st-party signal on this account (no website visit, no chatbot conversation, no reply to outreach, no prior meeting), score must not exceed {{SOLE_SIGNAL_CAP_TIER}}. Do not score higher on a profile view alone. Additional signals arriving later can lift this cap."
When calling either sub-skill, pass this context:
The sub-skills run lead scoring, tier assignment, CRM sync, buying-committee enrichment, outreach drafting, and alerts. After they return, continue to Step 8.
Post to {{NOTIFICATIONS_CHANNEL}} only for these outcomes:
Do NOT post for: ANONYMOUS (fully silent), UNRESOLVED (not actionable), INTERNAL (fully silent), or duplicate stops.
Post fires after routing and scoring has returned, so the tier is always known.
Message format:
👤 [Full Name] — [title]
Company: [company name] ([domain]) | [country]
Connection: [connection_status]
Repeat views: [n] (this company)
LinkedIn: [linkedin_url]
Outcome: [one of]
SCORED — [tier from {{TIER_SCALE}}]
EXISTING CUSTOMER — logged, no scoring
EXISTING RELATIONSHIP — routed to existing-relationship sub-skill
NOT ICP — no CRM writes, no scoring
What we did: [one line — e.g. "Contact created in CRM, routed to high-intent
sub-skill, scored Gold, alert sent to the MQL channel"]
Execution: [link]A great run means every qualified viewer lands in the CRM fully resolved — real company name and domain, never guessed from a headline — while duplicates, anonymous views, internal views, and non-ICP viewers die silently. Weak personas never trigger connection requests, a lone profile view never scores above the sole-signal cap, and the channel post tells the team in one glance who viewed, the outcome, and exactly what was done.
Mediocre looks like: CRM pollution from headline-guessed companies, repeat-session spam posts, Gold tiers on a single profile view, or noisy posts for outcomes that should be silent.
© swan-gtm, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in skills/ariel-cohen/handle-linkedin-profile-view-signal of swan-gtm/gtm-skills.
Open the folder on GitHubat commit 67abd04
Handle Linkedin Profile View Signal next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Handle Linkedin Profile View Signal this skillswan-gtm/gtm-skills | 172 | — | ~3.2k | Automated safety check: Pass | MIT | |
| Upwork Proposal Writerabullaisi/upwork-skills | 114 | 1 repos | ~3k | Automated safety check: Pass | MIT | |
| Account Contact Shortlistexplorium-ai/gtm-skills | 185 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Hubspot Integrationdavila7/claude-code-templates | 33k | 4 repos | ~265 | Automated safety check: Pass | MIT | |
| Company Researchliangdabiao/exa-research-mcp-skill | 110 | — | ~452 | Automated safety check: Pass | None | |
| Enrich Contactexplorium-ai/gtm-skills | 185 | — | ~1k | Automated safety check: Pass | MIT |
abullaisi/upwork-skills
Draft or review an Upwork proposal (cover letter) using the five-move method extracted from a Top Rated Plus freelancer's winning proposals, corrected for the AI era.
explorium-ai/gtm-skills
Contact data skill for Claude Code and Codex: build a ranked shortlist of decision-makers and contacts at a target company for outbound prospecting, deal acceleration, or renewal/expansion plays.
davila7/claude-code-templates
Expert patterns for HubSpot CRM integration including OAuth authentication, CRM objects, associations, batch operations, webhooks, and custom objects.
liangdabiao/exa-research-mcp-skill
Company research using Exa search. An agent skill from liangdabiao/exa-research-mcp-skill.
explorium-ai/gtm-skills
Contact enrichment skill for Claude Code and Codex: look up a B2B prospect's full professional profile including work email, phone number, LinkedIn profile, title, seniority, department, and company…
unifapi-agent/agents
When a workflow needs public LinkedIn data through UnifAPI — company pages, follower/employee counts, open jobs and job-count, member insights, people, posts, or engagement.
swan-gtm/gtm-skills
Annual and quarterly revenue plan construction, top-down vs bottoms-up reconciliation, plan versioning, stretch goal handling, and FP&A-RevOps collaboration for B2B revenue teams.
swan-gtm/gtm-skills
A skill your agent uses when setting up AI-powered personalization, building Clay or lemlist workflows, or automating prospect research — 6 AI personalization prompts (lemlist style) plus 2 email…
swan-gtm/gtm-skills
A skill your agent uses when a list of people already exists and someone needs to know who on it is worth contacting — event or webinar attendees, registrants, a prospecting export, a CRM segment, a…
swan-gtm/gtm-skills
A skill your agent uses when you need to know what people are saying about a brand across the web and social — "monitor brand mentions", "what are people saying about [brand] this week", "run a…
swan-gtm/gtm-skills
Use this skill before staging a prospect and before drafting any first touch, when a segment has gone silent, and when deciding whether an account is genuinely cold.
swan-gtm/gtm-skills
Use this skill on a monthly cadence to detect champions and heavy users of your paying customers who changed jobs, verify the move against live LinkedIn data, score the new company, and surface…
A skill your agent uses when a profile-view webhook (e.g. An agent skill from swan-gtm/gtm-skills. Handle Linkedin Profile View Signal is an agent skill from swan-gtm/gtm-skills.g.
Handle Linkedin Profile View Signal fits situations like: A profile-view webhook (e.g; tasks that involve Resume and CV writing; tasks that involve Webhooks.
Run `npx skills add swan-gtm/gtm-skills --skill handle-linkedin-profile-view-signal -a claude-code`. Or copy the skill folder (skills/ariel-cohen/handle-linkedin-profile-view-signal in swan-gtm/gtm-skills) into .claude/skills/handle-linkedin-profile-view-signal in your project. Claude Code loads it when a task matches its description.
Run `npx skills add swan-gtm/gtm-skills --skill handle-linkedin-profile-view-signal -a codex`. Or copy the skill folder (skills/ariel-cohen/handle-linkedin-profile-view-signal in swan-gtm/gtm-skills) into .agents/skills/handle-linkedin-profile-view-signal in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add swan-gtm/gtm-skills --skill handle-linkedin-profile-view-signal -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/handle-linkedin-profile-view-signal, .gemini/skills/handle-linkedin-profile-view-signal, .github/skills/handle-linkedin-profile-view-signal and .opencode/skills/handle-linkedin-profile-view-signal in your project.
SKILL.md names no scripts, command-line tools or credentials: Handle Linkedin Profile View Signal is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Handle Linkedin Profile View Signal is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Handle Linkedin Profile View Signal: Upwork Proposal Writer (abullaisi/upwork-skills, 114 stars), Account Contact Shortlist (explorium-ai/gtm-skills, 185 stars), Hubspot Integration (davila7/claude-code-templates, 33k stars) and Company Research (liangdabiao/exa-research-mcp-skill, 110 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
swan-gtm (a GitHub organization) maintains it in swan-gtm/gtm-skills, which has 172 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on October 8, 2026.
Source: swan-gtm/gtm-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.