ワンクリックで
career-ops
AI job search agent — find jobs, evaluate offers, generate CVs, track applications
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
AI job search agent — find jobs, evaluate offers, generate CVs, track applications
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | career-ops |
| description | AI job search agent — find jobs, evaluate offers, generate CVs, track applications |
| user_invocable | true |
| args | mode |
| argument-hint | [search | run | setup | evaluate | pdf | tracker | deep] |
CRITICAL: When this skill is activated, you MUST immediately take action. Do NOT just say "search in progress" or "I will notify you." You must USE TOOLS NOW — read files, call GoogleSearch, fetch URLs. Every response must contain tool calls and concrete output.
{{mode}} is empty or no arguments were provided:IMMEDIATELY print this menu — do not ask anything, just show it:
╔══════════════════════════════════════════════════════════════╗
║ career-ops — Job Search Agent ║
╚══════════════════════════════════════════════════════════════╝
/career-ops setup → Set up profile (parse resume PDF + preferences)
/career-ops search → Search the internet for matching jobs
/career-ops run → Full pipeline: search → evaluate → save to Excel
/career-ops evaluate → Evaluate a specific job (paste URL or JD text)
/career-ops pdf → Generate ATS-optimized CV for a specific job
/career-ops tracker → View your Excel job tracker
/career-ops deep → Deep company research
/career-ops contacto → LinkedIn outreach: find contacts + draft message
Or just paste a job URL / JD text directly to auto-evaluate it.
⚠️ First time? Run: /career-ops setup
Then check if cv.md and config/profile.yml exist. If either is missing, add:
"It looks like you haven't set up your profile yet. Run
/career-ops setupto get started."
Stop here. Wait for the user's next command.
{{mode}} is "search" or "run":YOU MUST EXECUTE ALL STEPS BELOW RIGHT NOW. Use tools at every step. Never stop to ask — just keep going through the entire pipeline.
Read ALL of these files immediately:
config/profile.ymlconfig/portals.ymlconfig/resume.ymlcv.mdIf any file is missing, tell user to run /career-ops setup.
After reading, print:
━━━ career-ops search ━━━
Profile: {name} | {target_roles} | {location}
Skills: {top 5 skills from resume}
Portals: {preferred_portals from profile}
━━━━━━━━━━━━━━━
Generate 3 GoogleSearch queries. EVERY query MUST start with site:{portal_domain}.
Query formula:
site:{portal} {keyword} {optional: fresher | India | city}
GOOD queries (copy these patterns):
site:naukri.com AI ML engineer freshersite:indeed.co.in data scientist Indiasite:instahyre.com machine learning engineersite:linkedin.com/jobs deep learning IndiaBAD queries (NEVER use):
Junior AI ML Engineer Mumbai ← NO site: = 0 resultsData Scientist fresher India ← NO site: = 0 resultsPrint queries, then execute ONE AT A TIME:
Batch 1:
Q1: site:naukri.com AI ML engineer fresher → Naukri
Q2: site:indeed.co.in data scientist India → Indeed
Q3: site:linkedin.com/jobs ML engineer India → LinkedIn
Searching...
Q1: ✓ {N} results
Q2: ✓ {N} results
Q3: ✓ {N} results
Use portals NOT used in Batch 1. Use secondary keywords from profile.yml.
Fetch these URLs directly for additional listings:
https://www.naukri.com/ai-ml-engineer-jobs?experience=0-2https://www.indeed.co.in/jobs?q=AI+ML+engineer&l=Indiahttps://www.naukri.com/data-scientist-jobs?experience=0-2Extract job listings (title, company, location, URL) from the fetched HTML.
search_preferences.excluded_companies from profile.ymlAfter dedup + filter: {N} unique jobsFor the top 10 jobs, use subagents to do deep research. This is the key step.
For each job (up to 10), run TWO subagent calls:
Only if you have a real, specific job URL (not a generic portal URL like "naukri.com"):
@jd_researcher Fetch the job posting at {job_url} and extract the JD details.
Write the result as JSON to data/research/jd-{n}.json
The subagent will fetch the URL, extract JD details, and write a JSON file.
If the job URL is generic (e.g., just "naukri.com" or "indeed.co.in"), skip this subagent and set jd_text to "JD not available — generic URL".
@company_researcher Research {company_name} for the role {role_title} in India.
Write the result as JSON to data/research/company-{n}.json
The subagent will search for company reviews, ratings, and salary data.
After each subagent finishes, read the JSON files it produced:
data/research/jd-{n}.json → jd_text, experience_required, skillsdata/research/company-{n}.json → company_rating, company_reviews, package_rangePrint progress after each job:
Deep research (subagents):
[1/10] {Company} — {Role}
📋 JD: {first 60 chars of jd_text}...
⭐ Rating: {company_rating}
💰 Package: {package_range}
[2/10] {Company} — {Role}
...
IF subagents are not available (e.g., model doesn't support them), fall back to inline research:
google_web_search for "{company} reviews glassdoor India" and "{company} salary {role} India"web_fetch on the job URLScore each job 1-5 using all collected data:
| Dimension | Weight |
|---|---|
| Skills Match | 30% |
| Experience Fit | 25% |
| Role Alignment | 20% |
| Location/Remote Fit | 15% |
| Comp Fit | 10% |
Scoring:
1. {Company} — {Role}: {score}/5 ({reason}) [{portal}]
2. {Company} — {Role}: {score}/5 ({reason}) [{portal}]
IMPORTANT: Do NOT pass JSON as a CLI argument. Write JSON to a file, then use --from.
Step 8a — Write JSON file at data/jobs-batch.json using WriteFile tool:
[{
"company": "Cisco",
"role": "Data Scientist",
"score": 4.2,
"portal": "LinkedIn",
"reliability": "B",
"url": "https://...",
"location": "Bangalore",
"salary": "Not disclosed",
"package_range": "12-18 LPA",
"experience_required": "0-2 years",
"status": "New",
"key_matches": "Python, ML, TensorFlow",
"gaps": "Requires SQL experience",
"jd_text": "Build ML models for network analytics... (full jd text)",
"company_rating": "4.2/5 (Glassdoor)",
"company_reviews": "Great engineering culture.",
"notes": ""
}]
Step 8b — Run:
node save-to-excel.mjs --from data/jobs-batch.json
Print final summary:
━━━ Results ━━━
Saved {N} jobs to data/job-tracker.xlsx
⭐ 4.0+ (apply): {N}
⚠️ 3.5-3.9 (maybe): {N}
❌ Below 3.5 (skip): {N}
Top matches:
1. [{score}] {Company} — {Role} | {package_range} | {company_rating}
2. [{score}] {Company} — {Role} | {package_range} | {company_rating}
━━━━━━━━━━━━━━━
site: operator — bare queries return 0 results--from{{mode}} matches another sub-command:{{mode}} | Action |
|---|---|
setup | Read and follow modes/setup.md |
evaluate | Read modes/_shared.md + modes/_profile.md (if exists) + modes/oferta.md, then execute |
pdf | Read modes/_shared.md + modes/_profile.md (if exists) + modes/pdf.md, then execute |
tracker | Read modes/tracker.md, then execute |
deep | Read modes/deep.md, then execute |
contacto | Read modes/_shared.md + modes/_profile.md (if exists) + modes/contacto.md, then execute |
{{mode}} is NOT a known sub-command:Check if it looks like a JD or URL:
modes/_shared.md + modes/auto-pipeline.md, then execute