# li-profile

Score a LinkedIn profile out of 100 against a 12-part rubric and rewrite the parts that lose points - headline, about, experience, featured, banner. Use when the user says "optimize my profile", "score my LinkedIn", "rewrite my headline", "fix my about section", or pastes their profile and asks how it reads.

- **Kind:** skill
- **Source:** https://github.com/Jakeschincariol/linkedin-agent-skill
- **Page:** https://forefy.com/skills/773c83ff-6ac9-4822-aee3-9875dc1bf417
- **API (JSON + files):** https://forefy.com/api/asr/773c83ff-6ac9-4822-aee3-9875dc1bf417

---

## SKILL.md

---
name: li-profile
description: >-
  Score a LinkedIn profile out of 100 against a 12-part rubric and rewrite the
  parts that lose points - headline, about, experience, featured, banner. Use
  when the user says "optimize my profile", "score my LinkedIn", "rewrite my
  headline", "fix my about section", or pastes their profile and asks how it
  reads.
---

# li-profile

A profile is not a resume. A resume answers "what have you done". A profile
answers "should I message this person", and it answers it in about four
seconds, from the headline and the first two lines of the about.

## Input

Ask the user to paste: headline, about section, current role and the last two
experience entries, plus whether they have a banner and featured section. A
screenshot of the top card is enough for the first pass. Do not log into
LinkedIn on their behalf.

## Score it

Read `rubric.json` in this folder. Twelve items, 100 points, each with what
full marks looks like. Score every item, show the table, and give the total.
Be honest - most profiles land in the 30s and 40s on the first pass, and a
generous score is useless.

```
PROFILE SCORE  41/100

  headline            3/12   job title only, no outcome, no audience
  about first 2 lines 2/10   opens with "passionate about"
  about body          4/10   history, not offer
  featured            0/8    empty
  banner              0/6    default blue
  ...
```

## Then rewrite, in this order

Fix in descending order of points lost. Do not rewrite everything at once -
the user has to actually paste each of these in.

**1. Headline (220 characters).** The formula that works:
`{what you do for whom} | {proof} | {how to start}`. Not your job title. Not
"Helping X do Y" as the first three words, which every second profile now
opens with. Give three options.

**2. About, first two lines.** Everything after line 2 is behind "see more" on
mobile, so those two lines are the whole about section for most readers. They
must state who you help and what changes. No "passionate", no "results-driven",
no third-person bio, no opening with your own name.

**3. About body.** Written to one reader, in the second person. Structure:
the problem they have, what you do about it, one piece of proof with a number,
what to do next. Under 1,400 characters even though the limit is 2,600.

**4. Featured.** Three items: the best post, the proof asset, the way to
contact. An empty featured section is eight points and the only place on the
profile you fully control.

**5. Experience.** Each role gets one line of scope and two to three bullets
that are outcomes with numbers, not duties. Cut anything older than ten years
to a single line.

**6. Banner.** One sentence of positioning and one way to reach you. The
default blue gradient is the clearest signal on the page that nobody is home.

## Output

Score table, then the rewrites as copy-ready blocks in fix-first order, each
one already run through `/li-human`. Re-score at the end and show the delta
honestly - if the rewrite gets to 88 and not 98, say 88, and say what the
remaining points need (usually recommendations, a real banner and posting
history, none of which a rewrite can create).

Nothing is saved to LinkedIn by this skill. The user pastes each section in.

## rubric.json

```json
{
  "version": "1.0",
  "total": 100,
  "note": "Twelve items. Score each honestly - a generous score helps nobody. Most first-pass profiles land in the 30s and 40s.",
  "items": [
    {
      "id": "headline",
      "points": 12,
      "full_marks": "States who you help and what changes for them, carries one piece of proof, and is not the job title. Uses the 220 characters, not 60."
    },
    {
      "id": "about_open",
      "points": 10,
      "full_marks": "First two lines - everything visible before 'see more' - name the reader's problem. No 'passionate about', no third-person bio, no opening with your own name."
    },
    {
      "id": "about_body",
      "points": 10,
      "full_marks": "Written to one person in second person: their problem, what you do, one number as proof, what to do next. Under 1,400 characters."
    },
    {
      "id": "featured",
      "points": 8,
      "full_marks": "Three items: best-performing post, a proof asset, and the way to contact you. Nothing empty, nothing stale."
    },
    {
      "id": "banner",
      "points": 6,
      "full_marks": "One line of positioning and one way to reach you. Not the default gradient, not a stock skyline."
    },
    {
      "id": "photo",
      "points": 6,
      "full_marks": "Face fills roughly 60% of the frame, eyes visible, shot in the last two years, background not distracting."
    },
    {
      "id": "current_role",
      "points": 10,
      "full_marks": "One line of scope, then two to three outcome bullets with numbers. Duties are not outcomes."
    },
    {
      "id": "experience_depth",
      "points": 8,
      "full_marks": "Last two roles detailed, everything older than ten years compressed to a single line each."
    },
    {
      "id": "skills",
      "points": 6,
      "full_marks": "Top three skills are the three you want to be hired for and are endorsed. The other 47 are noise."
    },
    {
      "id": "recommendations",
      "points": 8,
      "full_marks": "At least three received in the last two years, each naming a specific outcome rather than character."
    },
    {
      "id": "activity",
      "points": 10,
      "full_marks": "Posted or commented in the last seven days. An empty activity feed reads as an abandoned profile."
    },
    {
      "id": "contact",
      "points": 6,
      "full_marks": "Custom URL, a working email or booking link in contact info, and the same handle as your other platforms."
    }
  ]
}
```

