CtrlK
BlogDocsLog inGet started
Tessl Logo

linkedin-outreach

End-to-end LinkedIn outreach campaign builder. Takes leads from Supabase, upstream skills, or CSV. Aligns on campaign goal and tone, writes personalized LinkedIn message sequences (connection request + follow-ups + optional InMail), presents for review, and exports for the user's outreach tool (Dripify, Botdog, Expandi, or manual CSV). Logs to Supabase outreach_log.

60

Quality

75%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./skills/outreach/capabilities/linkedin-outreach/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

70%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-sequenced, highly actionable workflow document with genuine domain knowledge (character limits, cross-channel cooldown, per-tool export formats) and strong validation gates. Its weaknesses are repetition of cooldown/limit/CSV details across sections and a monolithic structure with no reference bundle, leaving detail-heavy material inline.

Suggestions

Extract per-tool column mappings and the signal-to-template selection table into reference files (e.g. references/tool-adapters.md, references/templates.md) and keep only the tool-selection question and universal CSV inline.

Deduplicate content stated twice: point Phase 1's cooldown filter at the "Cooldown Enforcement Rules" section, and state character limits once since Phase 3 already repeats them per message type.

Include one fully worked example sequence (connection request + follow-ups) inline so message generation does not depend solely on template files absent from the bundle.

DimensionReasoningScore

Conciseness

The body is mostly efficient tables and concrete directives, but cooldown logic is fully detailed in both Phase 1 and again in the "Cooldown Enforcement Rules" section, character limits are stated in the Phase 0-era limits table and repeated per-message in Phase 3, and the universal CSV columns appear twice. It is not 4 because this duplication exceeds "minor instances that could be trimmed"; not 2 because there is no padding explaining concepts Claude already knows.

3 / 5

Actionability

Provides copy-paste-ready Supabase connect code, a concrete cooldown check call, explicit REST POST/PATCH payloads for logging and last_contacted updates, per-tool column mappings, merge variable lists, and exact output file paths. Not 5 because message generation depends on template files (templates/sequence-templates/*.md, templates/tone-presets.json) not present in the bundle, and no sample generated sequence is shown inline.

4 / 5

Workflow Clarity

Phases 0–6 are clearly sequenced with explicit validation checkpoints throughout: the mandatory cross-channel cooldown filter, a 10–15 lead sample table for user confirmation, sequence-structure approval before any copy is written, a calibration loop (3–5 samples, max 3 iterations), character-count enforcement with a rewrite-not-truncate rule, and a hard approval gate before any database write. This batch operation has the feedback loops the rubric requires, so the batch cap does not apply; not 4 because checkpoints are explicit at every phase boundary, not just most.

5 / 5

Progressive Disclosure

No bundle files exist (no references/, scripts/, or assets/ directories), so referenced paths like templates/sequence-templates/pain-language.md and tools/supabase/schema.sql cannot be verified, and the ~420-line body inlines content that belongs in separate reference files — per-tool adapter mappings, the signal-to-template table, and cooldown rules shared with cold-email-outreach. Not 2 because section headers and structure are good and references are clearly signaled; not 4 because substantial content that should be split out is inline and the bundle provides nothing to navigate.

3 / 5

Total

15

/

20

Passed

Description

71%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A concrete, third-person description with comprehensive capability coverage and strong domain-specific keywords. Its main weakness is the complete absence of any "when to use" trigger guidance, which caps completeness and limits auto-trigger reliability, alongside minor synonym gaps and mild overlap risk with the cold-email counterpart skill.

Suggestions

Append an explicit trigger clause, e.g. "Use when the user says 'LinkedIn outreach', 'connect with these leads on LinkedIn', 'send LinkedIn messages', or 'set up a LinkedIn campaign'."

Add natural synonym phrases users would say — "LinkedIn campaign", "connect on LinkedIn", "networking messages" — to broaden trigger term coverage.

Add one distinguishing phrase (e.g. "LinkedIn only — for email outreach use cold-email-outreach") to reduce conflict risk with the sibling email skill.

DimensionReasoningScore

Specificity

Lists multiple specific concrete actions — "Takes leads from Supabase, upstream skills, or CSV", "writes personalized LinkedIn message sequences (connection request + follow-ups + optional InMail)", "exports for the user's outreach tool (Dripify, Botdog, Expandi, or manual CSV)", "Logs to Supabase outreach_log" — covering the full pipeline comprehensively. It exceeds anchor 4 because coverage of capabilities is complete rather than having minor gaps.

5 / 5

Completeness

The "what" is explicit and detailed (build campaigns, write sequences, export per tool, log to Supabase), but there is no "Use when..." clause or equivalent explicit trigger guidance anywhere in the description. Per the judging guidelines, a missing 'Use when' clause caps completeness at 3; it is not 2 because the "what" is clear, not vague.

3 / 5

Trigger Term Quality

Good natural keyword coverage: "LinkedIn outreach", "LinkedIn message sequences", "connection request", "follow-ups", "InMail", plus tool names users would name (Dripify, Botdog, Expandi). Not 5 because common phrasings users would naturally say — e.g. "connect with leads on LinkedIn", "LinkedIn campaign", "networking messages" — are absent; not 3 because coverage goes well beyond "some relevant keywords".

4 / 5

Distinctiveness Conflict Risk

Clear LinkedIn niche with named tools and Supabase logging, making it mostly distinct with minimal trigger ambiguity. Not 5 because "outreach campaign builder" overlaps with the sibling cold-email-outreach skill — a lead-outreach request without a channel named could trigger both; not 3 because "LinkedIn" and the tool names sharply bound the domain.

4 / 5

Total

16

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository
gooseworks-ai/goose-skills
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.