agentleFS
juanASPjuanASP/mercury/skills/profile-optimizer/SKILL.md

profile-optimizer

Skill0 starsChanged 5 months agoUnlicenseView on GitHub

Audit and optimize a LinkedIn profile for recruiter discoverability using browser automation. Fixes Open to Work settings, headline keywords, location, top skills, languages, projects, About section, and experience descriptions. Use when user wants to improve their LinkedIn profile for job searching or increase inbound recruiter messages. Part of the Mercury job search toolkit.

7 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use reels-scripting, voice-builder and 1 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • mahiunfilteredSkill

    reels-scripting

    Turn a reference Instagram Reel into a script for your own Reel, tuned to your voice and repurposed from your newsletter content. Takes a Reel URL or Notion reference link, uses Apify to scrape the video, sends it to Gemini 2.5 Flash for full transcript + hook + structure analysis, then writes a new script applying the same patterns to your newsletter topic. Use this skill whenever the user says "script a reel", "reels scripting", "turn this into a reel", pastes an Instagram Reel URL, or references their Notion outlier reels database. Requires APIFY_API_TOKEN and GOOGLE_AI_API_KEY environment variables.

    Also in 3 projects that use this

  • mahiunfilteredSkill

    voice-builder

    Build a personalised voice profile inside a Cowork project from a short interview plus 3 to 5 sample pieces of writing. Works for any content format: LinkedIn posts, newsletters, essays, emails, blog posts, tweets, or any other published writing. Use this skill at the start of any Cowork project where the user wants Claude to learn who they are and how they write before drafting new content. Trigger whenever the user says "build my voice", "learn my voice", "set up my content system", "onboard me", "train on my writing", "train on my posts", "I want Claude to sound like me", or drops a batch of writing samples into chat at the start of a project. Also trigger for first-time Cowork users who need a voice foundation before writing anything. Always produces two files (about-me.md and voice.md) saved into the project root.

    Also in 3 projects that use this

  • OpenAnalystIncSkill

    hook-generator

    Generates powerful hooks, headlines, CTAs, and attention-grabbing opening lines. Uses proven formulas and psychological triggers. Use this skill when you need subject lines, social media hooks, ad headlines, CTAs, or any content that must capture attention instantly.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 5 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 6 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Remove soft skills, add 5 technical skills matching target roles

    line 62
  2. Distinctive:

    Use typeahead: type skill name → ArrowDown → Enter to select

    line 63
  3. Distinctive:

    Add native language + English with correct CEFR mapping:

    line 69
  4. Distinctive:

    Keep handle/alias at the end, not the opening

    line 79
  5. Distinctive:

    Check analytics after 1-2 weeks for lift in search appearances

    line 99
  6. Very specific:

    Multiple "Save" buttons: use the dialog-scoped one, not global nav — target by the uid from the latest take_snapshot

    line 139
  7. Very specific:

    Refs shift on re-render: after enabling Remote, adding/removing skills, etc.

    line 140

“Common” is measured: kept by at least 6 in 10 of the 6 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

LinkedIn Profile Optimizer

Audit a LinkedIn profile against real recruiter-search signals and fix the gaps via Chrome MCP browser automation.

Prerequisites

  • LinkedIn MCP — for pulling the full profile and analytics
  • Chrome MCP — for making edits. Auto-starts Chrome on first tool call (no manual launch flags needed); use the session where you're logged into LinkedIn
  • For multi-step edit flows, prefer the pipeline tool (navigate → snapshot → click/fill in one call) over individual tool round-trips

Workflow

1. Pull Profile & Audit

get_person_profile(username, sections: experience,education,skills,certifications,projects,honors,languages,posts)

Analyze these signals against recruiter-search behavior:

SignalWhat Recruiters Filter OnCommon Pitfall
Search appearances/week<100 = starved funnelHeadline has no tech keywords
Connections<500 = tiny 2nd-degree poolLow discoverability
Open to WorkMust be recruiter-visibleSet to internal-only or unset
LocationRecruiters filter by cityListed in hometown, not work city
HeadlineMost weighted search fieldUses jargon (SDE) or wastes space on degree
Top Skills (5)Skill-match algorithmsSoft skills pinned instead of technical
LanguagesBilingual filterEmpty section
ProjectsCompleteness signalEmpty section

Present ranked pitfalls with specific, actionable fixes.

2. Optimize via Chrome MCP (Priority Order)

A. Open to Work (Highest Impact)

  • Path: Profile → "Open to" button → "Finding a new job"
  • Set: multiple titles (5 max), all location types (On-site/Hybrid/Remote), target city, "Flexible/casually looking", Full-time, Recruiters only visibility
  • ⚠️ Enabling Remote re-renders the form (refs shift, adds required "Locations (remote)" field)

B. Location

  • Path: /in/{user}/edit/intro/
  • Change City field to actual work location

C. Headline

  • Path: /in/{user}/edit/intro/ → headline textbox (max 220 chars)
  • Template: {Role} @ {Company} | {Specialty} | {Tech1} · {Tech2} · {Tech3} · {Tech4} · {Tech5}

D. Top Skills

  • Path: /in/{user}/add-edit/SUMMARY/ (the About editor contains the skills picker)
  • Remove soft skills, add 5 technical skills matching target roles
  • Use typeahead: type skill name → ArrowDown → Enter to select
  • ⚠️ This is NOT in the Skills detail page — it's inside the About editor

E. Languages

  • Path: /in/{user}/add-edit/LANGUAGE/
  • Typeahead for language name + proficiency level dropdown
  • Add native language + English with correct CEFR mapping:
    • B2 = "Professional working proficiency"
    • C1 = "Full professional proficiency"
    • Native = "Native or bilingual proficiency"

F. About Section

  • Path: /in/{user}/add-edit/SUMMARY/
  • Rich text editor (tiptap). Use .fill() to replace content.
  • Lead with: role + company + city + specialty + stack (first 2 lines show in search previews)
  • Include: what you work on (bullet points), education, what you're open to, links
  • Keep handle/alias at the end, not the opening

G. Projects

  • Path: /in/{user}/add-edit/PROJECT/
  • Fields: name (255 max), description (2000 max), start/end dates, "Associated with" dropdown, skills, media
  • Prioritize: open-source with stars, thesis/research, portfolio
  • Associate with relevant experience entry

H. Experience Descriptions

  • Path: /in/{user}/details/experience/edit/forms/{formId}/
  • Find formId from the experience detail page's edit links
  • Description field: 2000 char max
  • ⚠️ Toggle "Notify network" OFF before saving (unless user wants to broadcast)

I. Remove Internal Mobility Card

  • Path: /in/{user}/opportunities/internal-mobility/edit/ → Delete → Confirm
  • Removes the "Interested in jobs at {Company}" card that signals "not looking externally"

3. Verification

  • Navigate to profile and screenshot final state
  • Check analytics after 1-2 weeks for lift in search appearances

4. Persist to Mercury

Capture the profile metrics + computed score so the dashboard can chart progress over time. Run this whenever you pull fresh analytics (this is the only point profile metrics enter the system — the dashboard can't scrape them itself):

mercury metric record \
  --search-appearances {N} --profile-views {N} \
  --post-impressions {N} --connections {N} \
  --score {0-100} \
  --breakdown '{"openToWork":"recruiters-only","headline":"strong","location":"São Paulo","topSkills":"strong","languages":"set","projects":"4 added","about":"strong","connections":"weak (<500)"}'

The --breakdown is a JSON object of {signal: status} pairs — one per audited signal from step 1's table. The dashboard renders each as a labeled pill (Overview

  • Profile sections), color-coded: greenish for strong/good/set/done values, red for weak/missing/empty/none, neutral otherwise. Use concise, human-readable status strings so the pills read well.

Log the optimization session:

mercury activity log --skill profile-optimizer --summary "Audited + fixed {what}; score {old}->{new}"

LinkedIn Deep Links Reference

/in/{user}/edit/intro/                              — Headline, location, name
/in/{user}/add-edit/SUMMARY/                        — About text + Top Skills picker
/in/{user}/add-edit/LANGUAGE/                       — Add language
/in/{user}/add-edit/PROJECT/                        — Add project
/in/{user}/details/experience/edit/forms/{id}/      — Edit experience entry
/in/{user}/details/skills/edit/forms/{id}/          — Edit skill associations
/in/{user}/opportunities/internal-mobility/edit/    — Internal mobility card

Gotchas

  1. Typeahead fields (Language, Skills): must use ArrowDown + Enter after typing — plain text won't register (use press_key after fill)
  2. Multiple "Save" buttons: use the dialog-scoped one, not global nav — target by the uid from the latest take_snapshot
  3. Refs shift on re-render: after enabling Remote, adding/removing skills, etc. — take a fresh take_snapshot (stale uids won't resolve)
  4. Long option lists bloat snapshots: year/skill dropdowns are large — prefer acting on the field uid directly rather than snapshotting the whole open list
  5. "Done" button conflicts: video player has one too — use press_key Escape to close post-save modals
  6. Premium "next action" modals: appear after saving (suggest connections, ask about skills) — dismiss with Escape or skip
  7. Use pipeline for edit flows: chain navigate → wait_for → take_snapshot → click/fill to avoid stale refs and reduce round-trips

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.