Skill Name
office/application_auditor
What should this skill do?
Add a skill that helps agents produce a structured hiring fit audit: how a CV matches public job listing(s), what is missing, optional market comparison, optional community tips, and actionable amendments (CV + cover letter points).
Proposed identity
| Field |
Value |
| Category |
office (preferred) or auditing — confirm with maintainers before opening PR |
| Skill ID |
office/application_auditor (or auditing/application_auditor if category approved) |
| Class |
ApplicationAuditorSkill |
User inputs (conceptual)
- Public URL(s) of job listings (HTML the user can access).
- CV as public URL, local file path, or pasted text (PDF/DOCX in v1 if feasible).
- Optional: run market research, run Reddit insights, region/seniority hints.
Skill outputs (conceptual)
- Job profile — role, seniority, must-have/nice-to-have, stack, location, compensation hints, evidence quotes.
- CV profile — experience, skills, achievements, evidence quotes.
- Fit analysis — fit band/score, matches, gaps, what the CV lacks to strengthen the application.
- Market context (v2, optional) — similar roles, salary/difficulty signals via a search API (no login-wall scraping).
- Community tips (v2, optional) — themes from Reddit API threads (sourced IDs; tips only).
- Recommendations — prioritized CV amendments and cover letter bullet points (structured JSON; host agent writes final prose).
Recommended architecture (Skillware)
Use a staged pipeline in one skill with a mode parameter, plus instructions.md playbook for the host agent:
| Mode (v1) |
Role |
parse_job |
Fetch URL → structured job_profile |
parse_cv |
File/path/text → structured cv_profile |
analyze_fit |
Compare profiles → gaps, fit, amendments, cover letter points |
| Mode (v2) |
Role |
market_signals |
Web search API → comparable roles / comp context |
community_insights |
Reddit API → hiring tips themes |
full_audit |
Run full pipeline → single audit_report object |
- Python: ingest only —
httpx, HTML extraction (trafilatura / beautifulsoup4), CV PDF via pymupdf, optional python-docx; SSRF limits, size caps, no credential scraping.
- LLM inside skill: fixed prompts, JSON-schema outputs for extract/compare only (like
synthetic_generator / MiCA evaluator pattern); model_provider + env keys.
- Host agent (any model): formats the user-facing report and polishes cover letter from skill JSON — skill does not own final presentation.
Do not build LangGraph/CrewAI designs; keep a portable Skillware bundle per CONTRIBUTING and templates/python_skill/.
Safety
- CV = PII: no persistent storage, no logging bodies, temp files only. (You can use Skillware for that)
- Public URLs user provides; respect ToS; no LinkedIn/login scraping in v1. (You can use Skillware for that)
- Reddit: official API only (
praw + OAuth), rate limited.
- Disclaimer: not career, legal, or hiring advice; no outcome guarantees.
Phasing
- v1:
parse_job, parse_cv, analyze_fit.
- v2: market + Reddit + optional
full_audit.
Environment
| Variable |
When |
GOOGLE_API_KEY / ANTHROPIC_API_KEY |
LLM extract/compare |
TAVILY_API_KEY or BRAVE_SEARCH_API_KEY |
v2 market (implement one) |
REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET |
v2 Reddit |
Could be using Google Search Engine API or simple requests/beautifulsoup with extra layers?
Fetch/extract-only paths must run in tests without API keys (mocked HTTP/LLM).
Done when
- Bundle under
skills/office/application_auditor/ (or skills/auditing/... if category approved).
docs/skills/application_auditor.md + Usage Examples (five providers).
- Row in
docs/skills/README.md.
test_skill.py, issuer validation, SkillLoader.load_skill(...) works.
Ideal Inputs & Outputs
Inputs (execute)
| Parameter |
Type |
Required |
Purpose |
mode |
string |
Yes |
parse_job | parse_cv | analyze_fit (v2: market_signals, community_insights, full_audit) |
job_url |
string |
For parse_job |
Public job listing URL |
cv_source |
string |
For parse_cv |
url or file_path |
cv_text |
string |
Optional |
Pasted CV text instead of file/URL |
job_profile |
object |
For analyze_fit |
From parse_job |
cv_profile |
object |
For analyze_fit |
From parse_cv |
model_provider |
string |
Optional |
gemini | anthropic | ollama for internal LLM steps |
run_market_research |
boolean |
Optional |
v2 |
run_reddit_insights |
boolean |
Optional |
v2 |
region |
string |
Optional |
e.g. EU, US for market queries |
Outputs (by mode)
parse_job → job_profile
title, company, seniority, must_have[], nice_to_have[], responsibilities[], location, compensation_signals[], source_url, evidence_spans[] (field, quote).
parse_cv → cv_profile
skills[], roles[] (title, dates, highlights), education[], evidence_spans[].
analyze_fit →
fit_band (strong | moderate | weak), fit_score (0–1),
matched_requirements[], gaps[] (requirement, severity, suggestion),
cv_amendments[] (section, action, content_hint),
cover_letter_points[],
evidence[] (claim, job_quote, cv_quote).
v2: market_summary, reddit_tips (with thread_ids), merged audit_report for the host agent to render.
Targeted Models (if applicable)
Model Agnostic (All)
Skill Name
office/application_auditor
What should this skill do?
Add a skill that helps agents produce a structured hiring fit audit: how a CV matches public job listing(s), what is missing, optional market comparison, optional community tips, and actionable amendments (CV + cover letter points).
Proposed identity
office(preferred) orauditing— confirm with maintainers before opening PRoffice/application_auditor(orauditing/application_auditorif category approved)ApplicationAuditorSkillUser inputs (conceptual)
Skill outputs (conceptual)
Recommended architecture (Skillware)
Use a staged pipeline in one skill with a
modeparameter, plusinstructions.mdplaybook for the host agent:parse_jobjob_profileparse_cvcv_profileanalyze_fitmarket_signalscommunity_insightsfull_auditaudit_reportobjecthttpx, HTML extraction (trafilatura/beautifulsoup4), CV PDF viapymupdf, optionalpython-docx; SSRF limits, size caps, no credential scraping.synthetic_generator/ MiCA evaluator pattern);model_provider+ env keys.Do not build LangGraph/CrewAI designs; keep a portable Skillware bundle per CONTRIBUTING and
templates/python_skill/.Safety
praw+ OAuth), rate limited.Phasing
parse_job,parse_cv,analyze_fit.full_audit.Environment
GOOGLE_API_KEY/ANTHROPIC_API_KEYTAVILY_API_KEYorBRAVE_SEARCH_API_KEYREDDIT_CLIENT_ID,REDDIT_CLIENT_SECRETCould be using Google Search Engine API or simple requests/beautifulsoup with extra layers?
Fetch/extract-only paths must run in tests without API keys (mocked HTTP/LLM).
Done when
skills/office/application_auditor/(orskills/auditing/...if category approved).docs/skills/application_auditor.md+ Usage Examples (five providers).docs/skills/README.md.test_skill.py, issuer validation,SkillLoader.load_skill(...)works.Ideal Inputs & Outputs
Inputs (
execute)modeparse_job|parse_cv|analyze_fit(v2:market_signals,community_insights,full_audit)job_urlparse_jobcv_sourceparse_cvurlorfile_pathcv_textjob_profileanalyze_fitparse_jobcv_profileanalyze_fitparse_cvmodel_providergemini|anthropic|ollamafor internal LLM stepsrun_market_researchrun_reddit_insightsregionEU,USfor market queriesOutputs (by mode)
parse_job→job_profiletitle,company,seniority,must_have[],nice_to_have[],responsibilities[],location,compensation_signals[],source_url,evidence_spans[](field,quote).parse_cv→cv_profileskills[],roles[](title, dates, highlights),education[],evidence_spans[].analyze_fit→fit_band(strong|moderate|weak),fit_score(0–1),matched_requirements[],gaps[](requirement,severity,suggestion),cv_amendments[](section,action,content_hint),cover_letter_points[],evidence[](claim,job_quote,cv_quote).v2:
market_summary,reddit_tips(withthread_ids), mergedaudit_reportfor the host agent to render.Targeted Models (if applicable)
Model Agnostic (All)