resume-jd-matcher
Security checks across malware telemetry and agentic risk
Overview
The skill has a coherent resume-matching purpose, but it handles full resume data while using hard-coded API credentials and executing an unreviewed local Python file.
Before installing, verify or remove the absolute dynamic import, replace bundled API keys with your own secure credentials or placeholders, confirm the exact input/output folders, and decide whether storing full parsed resume text is acceptable for your privacy obligations.
VirusTotal
64/64 vendors flagged this skill as clean.
Risk analysis
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
On invocation, the skill may run unreviewed local code with access to the resume folders and generated reports.
The skill entry point executes a hard-coded workspace file that is not one of the supplied files, so the reviewed package does not show what code will actually run.
spec_from_file_location("resume_match", r"C:\Users\Administrator\.openclaw\workspace\resume_match_v2.0.2.py"); spec.loader.exec_module(resume_match)Package and import the reviewed module by relative path, remove the absolute dynamic import, and ensure the entry point uses files included in the manifest.
If API mode is used, resume processing could run through provider accounts and keys the user did not supply or control, and the bundled secrets are exposed to anyone installing the skill.
The bundled configuration contains real-looking API credentials for multiple AI providers even though the registry declares no primary credential.
active_provider: "tencent" ... tencent: api_key: "sk-sp-sq7Y7eo9..."; alibaba: api_key: "sk-sp-3e0faf..."
Remove all real credentials from the package, use placeholders only, require user-provided secrets through a secure credential mechanism, and declare the credential requirement in metadata.
The skill may scan or write to a different local folder than the user expects, which matters because resumes contain personal information.
The handler uses fixed folders rather than deriving the target from the user's request; the SKILL.md examples instead refer to D: drive paths.
JD_FOLDER = r"C:\ResumeJD\JD"; JL_FOLDER = r"C:\ResumeJD\JL"; OUTPUT_FOLDER = r"C:\ResumeJD\JG"
Resolve paths from explicit user input or a clearly documented config file, show the folders before processing, and ask for confirmation before batch analysis.
Extra copies of candidate resume contents may remain on disk after processing, increasing privacy and retention risk.
The script writes extracted full resume/JD text into JSON cache files under a parsed directory, but the user-facing documentation primarily describes Excel and log outputs.
data = {'file_name': os.path.basename(file_path), 'folder': os.path.basename(base_dir), 'full_text': text_content, 'parse_time': ...}; with open(parsed_json, 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2)Disclose the parsed JSON cache, make it opt-in or easy to disable, document retention and cleanup, and avoid storing full text unless necessary.
Candidate personal data will be placed into AI/subagent session context and may be retained according to the platform's session-history behavior.
Subagent mode sends the full extracted resume text to child agent sessions for analysis, which is expected for this skill but sensitive.
prompt includes "## 简历内容:\n{resume_text}" and sessions_spawn(task=task_data['task'], runtime="subagent", mode="run", timeoutSeconds=60)Use only with resumes you are allowed to process, confirm the platform's AI/session retention policy, and consider redacting unnecessary personal data before running.
