Help us improve
Share bugs, ideas, or general feedback.
From cv-linkedin
Analyzes and improves CV and LinkedIn profile for software industry roles. Requires CV file path and LinkedIn data export directory.
npx claudepluginhub dan323/easier-life-skills --plugin cv-linkedinHow this skill is triggered — by the user, by Claude, or both
Slash command
/cv-linkedin:cv-linkedinsonnetThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze the user's CV and LinkedIn profile for a software industry role, then
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Mines projects and conversations into a searchable memory palace and retrieves past work via semantic search.
Share bugs, ideas, or general feedback.
Analyze the user's CV and LinkedIn profile for a software industry role, then produce an improved CV and a LinkedIn optimization guide. All advice is role-aware: the expectations for a Staff Engineer differ from those for a Senior Product Manager or an Engineering Manager.
Before doing any work, call TaskCreate for each phase below. Call TaskUpdate (status in_progress) when you begin a phase and TaskUpdate (status completed) when you finish it.
Before doing anything else, confirm you have both of:
Profile.csv, Positions.csv, Education.csv, Skills.csv). May be a path to an unzipped directory or a path to the .zip itself — if a .zip, unzip it in place first.Direct LinkedIn fetching is not supported by this skill: LinkedIn's User Agreement prohibits automated extraction, the live page only server-renders the top card (About / Experience / Education / Skills are lazy-loaded behind authenticated XHR calls), and cookie-based scraping risks account restrictions. The data export is LinkedIn's sanctioned alternative and gives complete, structured, source-of-truth data.
If either input is missing, ask for both at once. If the user does not yet have the LinkedIn export, give them this instruction verbatim and wait:
To get your LinkedIn data:
- Open https://www.linkedin.com/mypreferences/d/download-my-data
- Choose "Want something in particular?" and tick at least:
Profile,Positions,Education,Skills,Certifications,Languages,Projects.- Click Request archive, re-enter your password.
- The fast archive arrives by email in ~10 minutes; download and unzip it.
- Reply with the path to the unzipped folder (and your CV path).
If the user explicitly says to skip LinkedIn (e.g. "skip LinkedIn", "just the CV"), proceed with only the CV. Skip Phases 2 (Read LinkedIn export), 4 (Analyse LinkedIn), and 6 (Write LinkedIn guide). Note the skip in the final summary.
Read the file at the path the user provided. If the file is not found, report the error and stop.
PDF files (.pdf extension):
document-skills:pdf skill is available in your environment, invoke it to extract the CV text and then log: "Reading CV using document-skills:pdf skill."All other formats (Markdown, plain text, Word, etc.): use the Read tool and log: "Reading CV as [format] using Read tool."
Parse the content into these sections (names vary — match by content, not heading label):
Note which sections are present, absent, or thin.
Classify the user's target role from their current title, past titles, and skills. This classification drives all downstream advice — do not skip it.
Engineer — any variant of: Software Engineer, Developer, SRE, DevOps Engineer, Data Engineer, ML Engineer, Platform Engineer, Security Engineer, Frontend, Backend, Full-Stack, Mobile, Embedded, QA Engineer. Signals: programming languages in skills, technical architecture bullets, GitHub link, system design language.
Product Manager / Product Owner — any variant of: PM, APM, Senior PM, GPM, Director of Product, VP Product, Product Owner, Product Lead. Signals: roadmap, user research, A/B testing, PRD, OKRs, go-to-market, stakeholder management language.
Engineering Manager / Technical Leader — any variant of: Engineering Manager, EM, Staff/Principal/Distinguished Engineer, Tech Lead, VP Engineering, CTO, Director of Engineering, Head of Engineering. Signals: reports/headcount numbers, hiring, performance reviews, org-level impact, both people management AND technical decision language.
Other software roles (Designer, Data Scientist, Analyst, etc.) — apply general advice; note the role and adapt as best as possible.
If the role cannot be determined from the CV, ask: "What type of role are you targeting? (e.g. Software Engineer, Product Manager, Engineering Manager)"
Read the CSVs from the export directory. See references/linkedin-export-schema.md for the exact column names, the Month YYYY date format, and the multi-line Description field gotcha (use a real CSV parser — do not split on commas yourself).
Required CSVs (skill stops with an error if any are missing):
Profile.csv — single-row CSV. Extract First Name, Last Name, Headline, Summary (= LinkedIn About), Industry, Geo Location, Websites, Twitter Handles.Positions.csv — one row per role. Extract Company Name, Title, Description, Location, Started On, Finished On (empty string = current role).Education.csv — one row per entry. Extract School Name, Start Date, End Date, Degree Name, Notes, Activities.Skills.csv — one row per skill. Extract Name.Optional CSVs (use if present, do not fail if absent):
Certifications.csv — Name, Authority, Started On, Finished On, License Number, Url.Languages.csv — Name, Proficiency.Projects.csv — Title, Description, Started On, Finished On, Url.Volunteering.csv — Company Name, Role, Started On, Finished On, Cause, Description.Reading rules:
Description and Summary fields commonly contain embedded newlines, commas, and quotes.references/linkedin-export-schema.md (e.g. Started On vs Start Date)..zip, unzip it in place (to a sibling folder named like the zip without .zip) and use that as the export directory.Positions.csv rows by Started On descending so the most recent role is processed first; rows with empty Finished On are current and rank highest.Note which optional CSVs are absent — this affects Phase 4 (e.g. no Certifications.csv means certifications cannot be audited; do not invent any).
For each bullet across all roles, check:
Weak verb openers — always flag: helped, worked on, assisted with, was responsible for, involved in, participated in, supported, contributed to, played a role in, tried to
Strong verb banks by role:
| Role | Strong Verbs |
|---|---|
| Engineer | engineered, architected, built, shipped, refactored, migrated, automated, reduced, optimised, scaled, deployed, integrated, designed, implemented, debugged |
| PM / PO | defined, launched, prioritised, drove, shipped, grew, negotiated, aligned, validated, synthesised, owned, partnered, increased, reduced, delivered |
| EM / TL | led, hired, grew, scaled, restructured, established, mentored, unblocked, defined, championed, partnered, transformed, delivered, set, cultivated |
Outcome check — flag bullets that are pure task, with no outcome of any kind.
A bullet is complete if it carries at least one of:
A bullet that has none of those — e.g. "Wrote unit tests", "Worked on backend services", "Participated in code reviews" — is pure task; flag it.
Numbers are one way to add outcome, not the only way. Invented or trivially small numbers are worse than no number — recruiters and hiring managers spot them. For engineers, scope and named-system signals are equally legitimate; for PMs and EMs, hard numbers carry more weight because business KPIs and team metrics are inherent to the role.
| Role | Metric types when a number IS the right outcome |
|---|---|
| Engineer | Latency (ms), throughput (req/s), uptime (%), test coverage (%), build/deploy time, lines of code removed, cost savings ($) |
| PM / PO | MAU/DAU, conversion rate (%), ARR/MRR ($), NPS, sprint velocity, time-to-market, number of experiments run |
| EM / TL | Team size (#), hiring targets met (#), attrition rate (%), delivery on-time (%), promotion rate, number of teams/squads managed |
A pure-task bullet needs [OUTCOME: e.g. <scope phrase> OR <named system> OR <number>] appended — listing at least two non-number options so the user is not pushed to invent a metric.
Result vs. task: "Wrote unit tests" (task) vs. "Achieved 94% test coverage on the payments service, catching 3 critical regressions before they reached production" (number-as-outcome) vs. "Built the regression-test harness for the payments service" (named-system-as-outcome) — both rewrites are valid.
Languages, Frameworks & Libraries, Databases,
Cloud & Infrastructure, Testing, Tools. Flat dumps are hard to skim.Product Methodology, Analytics & Research, Tools,
and optionally Technical Background if relevant.Leadership & Management, Engineering Practices,
Technical Background, Tools.JavaScript (not Javascript), TypeScript, PostgreSQL,
AWS, Kubernetes, GraphQL, CI/CD.(Skip entirely if the user chose to skip LinkedIn in Phase 0.)
The data here is parsed from CSVs in Phase 2, so every check below operates on concrete values — do not hedge with "if the headline is present". A field is either present (non-empty string in the CSV) or absent (empty string / missing column). Treat absent as a flagged finding, not a question to ask the user.
If it is only the job title + company, it wastes the highest-visibility field on LinkedIn. LinkedIn headline is the #1 field recruiters use in search filters.
Headline templates by role:
| Role | Template |
|---|---|
| Engineer | {Seniority} {Specialisation} Engineer · {Primary Stack} · {Domain or Impact} |
| PM | {Seniority} Product Manager · {Product Type, e.g. B2B SaaS / Consumer / Platform} · {Impact angle, e.g. 0-to-1 / Growth / Enterprise} |
| EM / TL | Engineering Manager · {Team/Org context} · {Scale or domain, e.g. 40-person org / Fintech / Developer Tooling} |
Examples:
For each Positions.csv row, find the matching CV role by Company Name. Compare:
Title vs. CV title — flag any difference (recruiters notice and ask).Started On / Finished On vs. CV dates — flag a mismatch greater than ~1 month. The CSV format is Month YYYY; CV dates may be YYYY only or a range — normalise to year before comparing.Positions.csv (LinkedIn looks abandoned for that period).Positions.csv but absent from the CV (CV looks incomplete or there's a deliberate omission worth surfacing).For Education, do the same comparison using School Name as the join key.
Write the improved CV to cv-improved.md in the same directory as the original CV file.
If the CV content was pasted directly (no file path), write to ./cv-improved.md.
Rules:
{Seniority} {specialisation} engineer with {X} years building {domain} systems. Known for {technical strength from bullets}. Track record of {performance or scale achievement}.Product manager with {X} years shipping {product type} for {user type}. Known for {strength, e.g. "0-to-1 launches" / "growth experimentation"}. Track record of {business outcome type}.Engineering manager with {X} years leading {N}-person teams in {domain}. Known for {strength, e.g. "building high-trust teams" / "technical transformation"}. Track record of {delivery or org outcome}.[OUTCOME: e.g. <scope phrase>, <named system>, or <number>], listing at least two non-number suggestions drawn from the role and surrounding context. Do not append this to bullets that already carry scope, a named system, or a before/after comparison — even if no digit is present; those are already complete.GitHub: github.com/[your-username] with a note that they should add the real link.## for section headers, ### Title @ Company (Start–End)
for each role, - for bullets.Begin the file with a "Changes Made" block:
## Changes Made
- Role detected: {Engineer / PM / EM}
- Summary: [added / rewrote — reason]
- Bullets rewritten: N across M roles (weak verbs → strong verbs)
- [OUTCOME] placeholders added: N bullets (only pure-task bullets — others left as-is)
- Skills section: [added with role structure / reformatted / unchanged]
- [any other changes, e.g. GitHub placeholder added]
Never overwrite the original CV file.
(Skip if the user chose to skip LinkedIn. Write to linkedin-improvements.md in the
same directory as the improved CV.)
# LinkedIn Profile Improvements — {Full Name from CV}
Role: {Engineer / PM / EM}
Generated: {today's date}
---
## Headline
**Current:** {their current headline, or "(not set)"}
**Suggested options (pick one or adapt):**
1. {Role-specific option A — uses template from Phase 4a}
2. {Role-specific option B — alternative angle}
3. {Role-specific option C — third variation}
**Why these work better:** {one sentence — what keyword or signal the current headline misses}
---
## About / Summary
**Current status:** {present and strong / present but weak / missing}
**Suggested text (~150–200 words):**
{Write a complete improved About section using the role-specific flow from Phase 4b.
Line 1–2 (hook, visible before "see more"): lead with role + domain + a hook credential.
Lines 3–6: core skills, domain expertise, one or two standout achievements from the CV.
Engineers: include primary stack and a scale-or-system fact (a number, a scope phrase, or a named system — whichever is most credible from the CV).
PMs: include product type and a business impact fact (numbers carry weight here — use them if the CV has them).
EMs: include team size and an org achievement.
Final 2 lines: what they are looking for + contact CTA.}
---
## Experience Description Improvements
{For each role where descriptions are missing or weak, provide improved content.
Skip roles that are already strong.}
### {Title} @ {Company}
**Add or replace with:**
- {Strong bullet — role-appropriate verb + quantified result drawn from CV content}
- {Additional bullet if the entry was sparse}
---
## Skills to Add or Feature
| Skill | Why | Seen in |
|---|---|---|
| {skill} | {missing from list / should be a top-3 featured skill} | {which role or section} |
---
## CV vs. LinkedIn Inconsistencies
| Field | CV | LinkedIn | Fix |
|---|---|---|---|
{rows — or omit entire table if no inconsistencies found}
---
## Quick Wins — Do These First
Ranked by recruiter visibility impact on LinkedIn for a {role type}:
1. **{Most impactful}** — {what to change and exactly where}
2. **{Second}** — {what to change}
3. **{Third}** — {what to change}
## CV & LinkedIn Improvements Complete
Role: {Engineer / PM / EM / Other}
**Improved CV:** {full path to cv-improved.md}
- Summary: {added fresh / rewrote generic version}
- Bullets improved: {N} across {M} roles
- [OUTCOME] placeholders added: {N} (on pure-task bullets only)
{any other notable changes}
**LinkedIn Guide:** {full path to linkedin-improvements.md} [or "Skipped"]
- Headline: {N} alternatives suggested
- About section: {written fresh / rewrote weak version} (~{word count} words)
- Experience descriptions: {N} roles with new/improved bullets
- Inconsistencies flagged: {N}
**Top 3 Quick Wins:**
1. {Most impactful — specific and role-aware}
2. {Second}
3. {Third}