onboarding
Skill24 starsChanged 42 days agoMITView on GitHub
Set up your personalized career-manager pipeline. Reads your resume, asks 1 question, then generates all config files so the pipeline is ready to run. Use when first setting up the pipeline or when your career goals change.
- Pipes a download into a shell
- Installs packages
100 other projects use a version of this.
Adopted by
Most recently taken up by
- BermanRoman/promt-seo-geotheir own version, first seen Nov 8, 2026
- openshift-online/rosa-boundarytheir own version, first seen Nov 8, 2026
- ishandutta2007/Awesome-Claude-Skillstheir own version, first seen Nov 8, 2026
- TserenTserenov/FMT-exocortex-templatetheir own version, first seen Nov 8, 2026
- nisarth/claude-skills-storetheir own version, first seen Nov 8, 2026
- salvo8519/fairmarktheir own version, first seen Nov 8, 2026
Used with
Projects with it also use paywalls, popups and 10 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.
CesarjoquinSkillpaywalls
When the user wants to create or optimize in-app paywalls, upgrade screens, upsell modals, or feature gates. Also use when the user mentions "paywall," "upgrade screen," "upgrade modal," "upsell," "feature gate," "convert free to paid," "freemium conversion," "trial expiration screen," "limit reached screen," "plan upgrade prompt," "in-app pricing," "free users won't upgrade," "trial to paid conversion," or "how do I get users to pay." Use this for any in-product moment where you're asking users to upgrade. Distinct from public pricing pages (see cro) — this focuses on in-product upgrade moments where the user has already experienced value. For pricing decisions, see pricing.
Also in 19 projects that use this
CesarjoquinSkillpopups
When the user wants to create or optimize popups, modals, overlays, slide-ins, or banners for conversion purposes. Also use when the user mentions "exit intent," "popup conversions," "modal optimization," "lead capture popup," "email popup," "announcement banner," "overlay," "collect emails with a popup," "exit popup," "scroll trigger," "sticky bar," or "notification bar." Use this for any overlay or interrupt-style conversion element. For forms outside of popups, see cro. For general page conversion optimization, see cro.
Also in 18 projects that use this
coreyhaines31Skillmarketing-council
When the user wants multiple expert perspectives on a marketing question — a simulated board of advisors staffed by legendary marketers (Seth Godin, David Ogilvy, Eugene Schwartz, April Dunford, Rory Sutherland, Alex Hormozi, Byron Sharp, and more). Also use when the user mentions 'marketing council,' 'board of advisors,' 'advisory board,' 'what would Seth Godin say,' 'what would Ogilvy think,' 'channel Hormozi,' 'get multiple perspectives,' 'debate this,' 'have the council review,' 'marketing mentors,' or asks how a famous marketer would approach their problem. The council gives each advisor's take through their documented frameworks, surfaces where they disagree, and synthesizes a recommendation. For executing the winning direction, hand off to positioning, offers, copywriting, ads, or the relevant skill.
Also in 13 projects that use this
roerohanSkillprospecting
When the user wants to find, qualify, and build a list of prospects to reach out to — across B2B SaaS, general B2B, or local small businesses. Also use when the user mentions "prospecting," "build a prospect list," "find prospects," "find leads," "lead gen list," "find SaaS companies that," "find B2B companies," "find local businesses," "ICP-fit accounts," "who should we go after," "outbound list," "target account list," "find clients near me," "businesses without websites," "prospect research," "qualified leads," "find my first customers," "early adopters," "design partners," "beta users," or "who has this problem." Use this for the list-building and qualification phase. For writing the outbound copy after the list is built, see cold-email. For deep competitive research on specific accounts, see competitor-profiling.
Also in 16 projects that use this
roerohanSkillemails
When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email program. Also use when the user mentions "email sequence," "drip campaign," "nurture sequence," "onboarding emails," "welcome sequence," "re-engagement emails," "email automation," "lifecycle emails," "trigger-based emails," "email funnel," "email workflow," "what emails should I send," "welcome series," or "email cadence." Use this for any multi-email automated flow. For cold outreach emails, see cold-email. For in-app onboarding, see onboarding.
Also in 18 projects that use this
- +7 more from Cesarjoquin
Other versions100 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 100
- coreyhaines31/marketingskills★ 59ksame name
- anthropics/knowledge-work-plugins★ 35ksame name
- actions/runner-images★ 14ksame name
- BuilderIO/agent-native★ 7.6ksame name
- gnekt/My-Brain-Is-Full-Crew★ 3.9ksame name
- ColeMurray/background-agents★ 3.5ksame name
- huytieu/COG-second-brain★ 1.3ksame name
- openai/mcp-extensions★ 1.1ksame name
- Nexus-JPF/note-companion★ 874same name
- elevenlabs/skills★ 539same name
90 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- company-researchSkill
- cv-tailorSkill
- evalsSkill
- interview-prepSkill
- job-searchSkill
- job-trackerSkill
- career-managerSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
26 rules. 0 are common, 19 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 85 edited versions we read keep these.
19
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
If uv is not installed, install it first (official installer: macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh, Windows …
- Distinctive: line 22
Before reading the resume or generating files, create a repo-local virtual environment if one doesn't already exist:
- Very specific: line 29
Run all subsequent Python commands through uv run (e.g., uv run python3 scripts/smoke_test.py) so dependencies resolve against the …
- Very specific: line 33
Ask: "Where's your resume?
- Distinctive: line 35
When the user provides a path:
- Very specific: line 36
Verify the file exists and is .docx or .pdf
- Distinctive: line 38
Read the resume and extract: work history, skills, industries, seniority, education, accomplishments
- Distinctive: line 40
If the file doesn't exist or isn't a supported format, ask again with guidance.
- Distinctive: line 46
Ask this single combined question:
- Distinctive: line 70
From targets: Add paths from the user's stated target roles that aren't already covered by Phase 1.
- Distinctive: line 74
When presenting the paths, tell the user explicitly: "I'm starting with 4-5 focused paths so each search run stays fast.
- Distinctive: line 78
Wait for confirmation. If the user tweaks anything, update and re-confirm.
- Distinctive: line 82
After confirmation, generate all files silently.
- Distinctive: line 84
IMPORTANT: Before writing each file, read the existing file first (Write tool requirement).
- Very specific: line 217
All regex patterns must be valid Python regex, no inline flags like (?i)
- Very specific: line 223
Default: ["United States"] if the user doesn't specify
- Distinctive: line 224
If user says "Europe", expand to specific countries: Ireland, United Kingdom, Germany, Netherlands, France
- Distinctive: line 242
Run smoke test checks inline (do not ask the user to run a separate command):
- Distinctive: line 244
Verify all 4 generated files exist and are non-empty
- Very specific: line 245
Run uv run python3 scripts/smoke_test.py and verify all checks pass (this validates search-config schema, query_packs is a dict, …
- Distinctive: line 247
If all checks pass: "Setup complete." If any check fails: report the specific issue and fix it.
- Distinctive: line 248
If any check fails: report the specific issue and fix it.
- Distinctive: line 256
If the user has already run onboarding (files exist):
- Distinctive: line 257
Ask: "You already have a profile set up.
- Distinctive: line 258
Only regenerate files that need updating
- Distinctive: line 260
Never touch pipeline data (target-companies.csv, applications.csv)
“Common” is measured: kept by at least 6 in 10 of the 85 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.
Files
Onboarding
Personalize the career-manager pipeline for a new user through a focused setup.
When to Use
- First time setting up the pipeline after cloning
- Career goals, target roles, or compensation targets have changed
- Want to regenerate search queries or scoring criteria
Flow
Step 0: Ensure Local Python Environment
If uv is not installed, install it first (official installer: macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh, Windows powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"), then make sure it is on PATH for subsequent commands. A system Python is not required — uv downloads a managed Python automatically when none is available.
Before reading the resume or generating files, create a repo-local virtual environment if one doesn't already exist:
uv venv
uv pip install -r requirements.txtRun all subsequent Python commands through uv run (e.g., uv run python3 scripts/smoke_test.py) so dependencies resolve against the repo-local .venv and never install into a global Python, Conda, or system environment.
Step 1: Get the Resume
Ask: "Where's your resume? Give me the file path (e.g., ~/Desktop/resume.docx)"
When the user provides a path:
- Verify the file exists and is
.docxor.pdf - Copy it to
cv-tailor/data/CV/Master CV/(create directory if needed) - Read the resume and extract: work history, skills, industries, seniority, education, accomplishments
If the file doesn't exist or isn't a supported format, ask again with guidance.
Do NOT ask the user to copy files manually. You handle the copy.
Step 2: One Question
Ask this single combined question:
"Based on your resume, I can see your background. I need four things your resume doesn't tell me:
- Target roles - What roles are you going after? Be specific about seniority (Senior PM, Director of Engineering, Solutions Architect) and domain.
- Salary floor - What's the minimum base salary you'd accept?
- Location - Remote, hybrid, or onsite? Open to relocation?
- Job markets - Which countries should I search for jobs in? (Default: United States)"
Step 3: Confirm Profile
Present the full profile combining resume inference + user answers:
"Here's your profile:
Background: [inferred from resume - key roles, industries, years of experience, strongest skills] Target roles: [from answer] Salary floor: [from answer] Location: [from answer] Career paths I'd search:
Derive paths in two phases:
- From resume: For each sector or employer type the user spent 2+ years in, derive a career path. Group similar employers (e.g., multiple Big 4 firms = one "Professional Services / Advisory" path, not four). If no employer meets the 2-year threshold, use the user's longest-tenured roles regardless.
- From targets: Add paths from the user's stated target roles that aren't already covered by Phase 1.
Merge only paths that are truly redundant (same companies, same roles). Prefer granular paths over merged ones. When in doubt, keep them separate. List Phase 1 paths first (longest tenure first), then Phase 2 paths. Final count: 4-5 paths. Every path adds agents, tokens, and wall-clock time to each pipeline run, so default to the smallest set that covers the user's strongest angles. If more than 5 strong candidates emerge, keep the 4-5 strongest now and save the rest.
When presenting the paths, tell the user explicitly: "I'm starting with 4-5 focused paths so each search run stays fast. You can add more paths later by re-running onboarding whenever your goals expand."
Anything you'd change?"
Wait for confirmation. If the user tweaks anything, update and re-confirm.
Step 4: Generate Files
After confirmation, generate all files silently. No overwrite warnings. No "about to write..." messages. Just write them.
IMPORTANT: Before writing each file, read the existing file first (Write tool requirement). Do this silently. Do NOT tell the user you're reading before writing. Do NOT warn about overwriting.
Never touch pipeline data files (target-companies.csv, applications.csv, etc.).
File 1: config.yaml
Generate from config.yaml.example template with:
paths.cv_baseset to the directory where the user's resume was found (parent of the file they provided)- Credential-based integrations (
todoist_enabled,gmail_enabled,tavily_enabled) set tofalse; keepjobspy_enabled: trueso the first discovery run can scrape job boards - Email fields left as placeholders
File 2: job-search/references/criteria.md
Generate with this structure. The rubric must be CALIBRATED (tight, evidence-based) rather than loose; a well-calibrated rubric produces a spread of scores, not a cluster at the top. The average company the user's agents encounter should score around 50, not 70.
## Unique Value Proposition
[2-3 paragraphs: what makes this person uniquely valuable]
## Target Roles
[Role categories with descriptions]
## Target Company Types
[4-5 career paths. Each path has:]
### Path N: [Path Name]
- **Description:** [What kind of companies]
- **Example Companies:** [2-3 well-known examples for context, not monitored]
- **Role Types:** [Specific roles that fit]
- **Why You Fit:** [Connection to background]
- **Compensation Notes:** [Range based on salary floor]
## Evaluation Framework
10 scoring dimensions, each assessed yes (fits), no (does not fit), or unknown (cannot determine). Unknown dimensions are null, never 0, and are excluded from the score. Total score = (yes count / evaluated count) * 100, rounded down. Canonical implementation: `job-search/scripts/core/scoring.py`.
### Group 1: Core Fit (4 dimensions)
### Group 2: Compensation & Career (3 dimensions)
### Group 3: Culture & Growth (3 dimensions)
For EACH dimension you generate, produce:
- **Name** and 1-line purpose.
- **Yes condition.** A concrete observable test, not an adjective. "Yes = public Levels.fyi data showing $200K+ TC at this level" is good. "Yes = pays well" is bad.
- **No condition.** The concrete observable that rules the dimension out.
- **Evidence required for yes.** Named source (job posting, employee review, funding announcement, public statement, etc.). If evidence is unavailable, the dimension is unknown (null), never a yes by default.
Emphasize in the rubric itself: "If you cannot find specific evidence, mark the dimension unknown rather than assuming the best case. A company without disclosed comp is unknown (null), not a yes, and not a 0."
## Scoring Guide
Thresholds align with `pipeline.action_list.*_min_score` in `config.yaml`:
- **85-100 (HIGH):** Pursue aggressively. Cold outreach or immediate apply.
- **70-84 (MED):** Strong fit with current evidence. Apply if role is open.
- **60-69 (LOW):** Moderate fit. Watch list or skip unless specific role matches.
- **<60:** Skip.
**Handling unknowns:** Unknown dimensions are null, never 0. They are excluded from the ratio, so missing information never penalizes (or inflates) a company. If fewer than 5 of 10 dimensions are assessable, set `llm_flags: "needs_research"` and omit the score. The keyword scorer is a fallback only, used for rows with no `llm_score`; it never overrides one.
**Distributional check:** When this rubric is applied to the user's existing target list, expect roughly:
- ~20% score ≥85 (genuine A-tier)
- ~30% score 70-84 (B-tier, apply-worthy)
- ~35% score 60-69 (C-tier, watch)
- ~15% score <60 (skip)
If the distribution is heavily skewed high, the rubric is too loose. Tighten the yes conditions and evidence requirements.File 3: job-search/references/background-context.md
Generate with this structure:
## Personal Information
## Technical Capabilities
## Project Portfolio
## Professional Experience
## Education & Certifications
## Positioning Angles
## Travel & Location PreferencesFile 4: job-search/data/search-config.json
The repo ships this file as a placeholder stub with "setup_required": true (a full neutral template lives at job-search/data/search-config.json.example). Overwrite the entire stub with the generated config and do not carry over the setup_required flag (or set it to false); the pipeline refuses to run while it is true.
Generate valid JSON matching this exact structure. Pay close attention to types. query_packs and path_check_instructions are dicts, not lists.
{
"search_locations": ["United States"],
"query_packs": {
"<snake_case_path_key>": {
"label": "Human-Readable Path Name",
"queries": ["search query 1", "search query 2", "..."],
"locations": ["Remote", "United States"],
"job_type": "fulltime"
}
},
"role_include_patterns": ["regex_pattern", "..."],
"role_exclude_patterns": ["regex_pattern", "..."],
"employer_exclude_patterns": ["regex_pattern", "..."],
"location_exclude_patterns": ["regex_pattern", "..."],
"keywords": {
"domain": ["keyword", "..."],
"ai": ["keyword", "..."],
"tech": ["keyword", "..."]
},
"path_check_instructions": {
"1": "Multi-sentence discovery strategy for path 1...",
"2": "Multi-sentence discovery strategy for path 2..."
},
"role_patterns": ["human-readable role title", "..."],
"scoring": {
"domain_keywords": {"keyword": 8},
"ai_keywords": {"keyword": 6},
"role_keywords": {"keyword": 7},
"comp_indicators": {"keyword": 5},
"growth_indicators": {"keyword": 4}
},
"path_aliases": {
"fuzzy variant": "Exact Query Pack Label",
"another variant": "Exact Query Pack Label"
},
"display_groups": {
"Group Name": ["Query Pack Label 1", "Query Pack Label 2"],
"Another Group": ["Query Pack Label 3"]
}
}Critical rules:
query_packsis a dict keyed by snake_case name, NOT a list. Each value haslabel,queries,locations,job_typepath_check_instructionsis a dict keyed by path number as string ("1", "2", etc.), NOT a single string- One query pack per career path (for JobSpy)
- All regex patterns must be valid Python regex, no inline flags like
(?i) - 4-5 paths (one pack each), 3+ queries per pack. Users add more paths later by re-running onboarding
display_groupsgroups related query pack labels into 3-4 dashboard display categories. Each label must match a query pack'slabelfield exactly. Paths not mapped go to "Other"
Search locations:
search_locationsis the user's answer to "Which countries should I search for jobs in?"- Default:
["United States"]if the user doesn't specify - If user says "Europe", expand to specific countries: Ireland, United Kingdom, Germany, Netherlands, France
- Populate each query pack's
locationsfield fromsearch_locations(plus "Remote") - Auto-generate
location_exclude_patternsto exclude countries NOT insearch_locations. Do not add exclude patterns for countries the user wants to search in.
Scoring keywords: Each scoring dict maps keyword strings to integer weights. Higher weights = stronger signal for that category. Generate weights based on how central each term is to the user's target roles.
Path aliases: Map fuzzy LLM path variants to canonical query_pack labels. The LLM sometimes returns shortened or rephrased path names during evaluation. This map catches common variants so they normalize correctly. Generate 3-5 aliases per career path based on likely LLM rephrasings. Keys are lowercase variants, values are exact query_pack labels.
Path check instructions: Generate 3-4 sentence discovery strategies per path. Each instruction must include:
- What signals indicate a good fit for this path
- What to look for on careers pages
- What disqualifies a company
- Location requirements (reference
search_locations)
See onboarding/references/example-output.md for a complete working example.
Step 5: Verify Setup
Run smoke test checks inline (do not ask the user to run a separate command):
- Verify all 4 generated files exist and are non-empty
- Run
uv run python3 scripts/smoke_test.pyand verify all checks pass (this validates search-config schema, query_packs is a dict, path_check_instructions is a dict, dependencies, and config.yaml)
If all checks pass: "Setup complete." If any check fails: report the specific issue and fix it.
Step 6: Start First Search
Automatically hand off to the job-search skill and run the full pipeline. Do not ask the user for confirmation; they just completed setup, so the next step is always discovery.
Re-run Behavior
If the user has already run onboarding (files exist):
- Ask: "You already have a profile set up. What's changed?"
- Only regenerate files that need updating
- This is also how users add career paths beyond the initial 4-5: extend
query_packs,path_check_instructions,path_aliases, anddisplay_groupsin search-config.json and add matching path sections to criteria.md - Never touch pipeline data (target-companies.csv, applications.csv)
Boundaries
- This skill generates config files only. It does not run the pipeline.
- It does not modify pipeline scripts.
- It does not create or modify the Master CV content. It only copies the user's file.
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
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.

