Career-Ops Job Search Center
career-ops-hq/career-ops
Routes job-search requests to modes for evaluating offers, scanning portals, generating tailored CVs, tracking applications and drafting outreach, starting from a pasted job URL or description.
Generates a designed portfolio-resume image from resume content provided in conversation text.
$ npx skills add OpenSenseNova/SenseNova-Skills --skill sn-image-resume -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install OpenSenseNova/SenseNova-Skills sn-image-resume --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/OpenSenseNova/SenseNova-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/sn-image-resume .claude/skills/sn-image-resume && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sn-image-resume" agent skill from https://github.com/OpenSenseNova/SenseNova-Skills/tree/main/skills/sn-image-resume into .claude/skills/sn-image-resume/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sn-image-resume", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/OpenSenseNova/SenseNova-Skills/tree/main/skills/sn-image-resumeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add OpenSenseNova/SenseNova-Skills --skill sn-image-resume -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install OpenSenseNova/SenseNova-Skills sn-image-resume --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenSenseNova/SenseNova-Skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/sn-image-resume .agents/skills/sn-image-resume && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sn-image-resume" agent skill from https://github.com/OpenSenseNova/SenseNova-Skills/tree/main/skills/sn-image-resume into .agents/skills/sn-image-resume/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sn-image-resume", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OpenSenseNova/SenseNova-Skills --skill sn-image-resume -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install OpenSenseNova/SenseNova-Skills sn-image-resume --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenSenseNova/SenseNova-Skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/sn-image-resume .cursor/skills/sn-image-resume && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sn-image-resume" agent skill from https://github.com/OpenSenseNova/SenseNova-Skills/tree/main/skills/sn-image-resume into .cursor/skills/sn-image-resume/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sn-image-resume", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/OpenSenseNova/SenseNova-Skills.git --path skills/sn-image-resume--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add OpenSenseNova/SenseNova-Skills --skill sn-image-resume -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install OpenSenseNova/SenseNova-Skills sn-image-resume --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenSenseNova/SenseNova-Skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/sn-image-resume .gemini/skills/sn-image-resume && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sn-image-resume" agent skill from https://github.com/OpenSenseNova/SenseNova-Skills/tree/main/skills/sn-image-resume into .gemini/skills/sn-image-resume/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sn-image-resume", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install OpenSenseNova/SenseNova-Skills sn-image-resumeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add OpenSenseNova/SenseNova-Skills --skill sn-image-resume -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/OpenSenseNova/SenseNova-Skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/sn-image-resume .github/skills/sn-image-resume && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sn-image-resume" agent skill from https://github.com/OpenSenseNova/SenseNova-Skills/tree/main/skills/sn-image-resume into .github/skills/sn-image-resume/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sn-image-resume", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OpenSenseNova/SenseNova-Skills --skill sn-image-resume -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install OpenSenseNova/SenseNova-Skills sn-image-resume --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenSenseNova/SenseNova-Skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/sn-image-resume .opencode/skills/sn-image-resume && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sn-image-resume" agent skill from https://github.com/OpenSenseNova/SenseNova-Skills/tree/main/skills/sn-image-resume into .opencode/skills/sn-image-resume/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sn-image-resume", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sn-image-resumeGenerates a designed portfolio-resume image from resume content provided in conversation text.
Sn Image Resume is an agent skill from OpenSenseNova/SenseNova-Skills. Generates a designed portfolio-resume image from resume content provided in conversation text. Extracts optional style instructions, converts the resume into a fixed portfolio-resume layout prompt, and generates the final image through sn-image-base. Use when user asks to create "resume image", "portfolio resume", "简历图", "简历海报", or "个人简历视觉设计".
Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `prompts/resume.md`).
It sits in Business, Finance & HR, covering Resume and CV writing. The repository describes itself as: Modular SenseNova skills for building AI-powered office assistants and productivity workflows. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 7838651. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
SN_API_KEYSN_TEXT_API_KEYSN_CHAT_API_KEYSN_IMAGE_GEN_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Sn Image Resume loads about 2.5k tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 852 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from OpenSenseNova/SenseNova-Skills at commit 7838651, republished under its MIT licence (© OpenSenseNova). 852 words, ~2,470 tokens.
.claude/skills/sn-image-resume/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Resume image generation scene skill (tier 1), relying on the sn-text-optimize and sn-image-generate tools provided by sn-image-base (tier 0).
Features:
prompts/resume.mdsn-image-generate| Parameter | Type | Default Value | Description |
|---|---|---|---|
resume_content | string | Required | Resume text provided by the user in conversation, including name, profile, education, experience, skills, projects, contact details, etc. |
style | string | Optional | User-specified visual style, tone, color palette, profession aesthetic, or reference mood. May be embedded in resume_content. |
aspect_ratio | string | 9:16 | Output aspect ratio. Allowed values: 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 1:1, 16:9, 9:16, 21:9, 9:21. Default is 9:16 (vertical) because the template is a tall stacked portfolio-resume page. |
image_size | string | 2k | Image size preset, 1k or 2k. |
output_mode | string | friendly | Output mode: friendly or verbose. |
All API calls in this skill are executed through the sn_agent_runner.py of the sn-image-base skill, with authentication parameters using default values (CLI > environment variables > built-in defaults), so they do not need to be passed explicitly in normal use.
| Call Type | Tool | Authentication Parameters | Description |
|---|---|---|---|
| LLM | sn-text-optimize | Default reads SN_TEXT_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEY | Converts user resume text into a detailed image generation prompt using prompts/resume.md as the system prompt |
| Image Generation | sn-image-generate | Default reads SN_IMAGE_GEN_API_KEY -> SN_API_KEY | Generates the final resume image |
If all capabilities use the same gateway, configure only:
SN_BASE_URL="https://your-api-endpoint.com/v1"
SN_API_KEY="your-api-key"When encountering MissingApiKeyError or needing to specify a model: pass parameters explicitly via CLI. See $SN_IMAGE_BASE/references/api_spec.md.
$SN_IMAGE_BASE path explanation: $SN_IMAGE_BASE is the installation directory of the sn-image-base skill (SKILL.md exists). The agent can locate this path by skill name sn-image-base.
This skill uses a two-tier agent architecture:
| Role | Responsibility |
|---|---|
| Main Agent | Receive user request, normalize parameters, send preflight, start Worker, collect result, and send final text/image to user |
| Worker Agent | Execute prompt generation and image generation, then return structured JSON |
Responsibility Boundaries:
sn-image-base, without spawning nested subagentsresume_content, optional style, aspect_ratio (default 9:16), image_size (default 2k), and output_mode (default friendly) from the user requestresume_content is non-empty and contains enough resume information to generate a meaningful pageaspect_ratio against the allowed values: 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 1:1, 16:9, 9:16, 21:9, 9:21. If the user-provided value is not in this list, inform the user and fall back to the default 9:16"Using sn-image-resume skill to generate a resume image, please wait..."status=ok: send a short summary and the generated imagestatus=error: report the real error field content to the userWorker Agent receives resume_content, style, aspect_ratio, image_size, output_mode, and the working directory of this skill (SKILL_DIR).
task_id using timestamp format YYYYMMDD_HHMMSS/tmp/openclaw/sn-image-resume/<task_id>/ as TEMP_DIRecho "$RESUME_CONTENT" > "$TEMP_DIR/resume-content.txt"
echo "$STYLE" > "$TEMP_DIR/style.txt"Use prompts/resume.md as the system prompt and call sn-text-optimize to convert the user resume content into a detailed image generation prompt.
USER_PROMPT=$(cat << EOF
Resume content:
$RESUME_CONTENT
Optional style instruction:
${STYLE:-No explicit style instruction. Infer an appropriate professional visual style from the resume content.}
Task:
Convert the resume content into a complete text-to-image prompt for a tall portfolio-resume image.
Follow the fixed layout, language, content mapping, typography, panel, and style translation rules in the system prompt.
Return only the final image generation prompt. Do not include explanations, markdown fences, or alternative options.
EOF
)
python "$SN_IMAGE_BASE/scripts/sn_agent_runner.py" sn-text-optimize \
--system-prompt-path "$SKILL_DIR/prompts/resume.md" \
--user-prompt "$USER_PROMPT" \
--output-format jsonParse JSON stdout and extract result as generation_prompt. If the process exits non-zero, returns invalid JSON, or result is empty, return status=error with the actual error.
Persist output:
echo "$GENERATION_PROMPT" > "$TEMP_DIR/generation-prompt.txt"Generate the final image using sn-image-base's sn-image-generate tool.
python "$SN_IMAGE_BASE/scripts/sn_agent_runner.py" sn-image-generate \
--prompt "$GENERATION_PROMPT" \
--image-size "$IMAGE_SIZE" \
--aspect-ratio "$ASPECT_RATIO" \
--save-path "$TEMP_DIR/resume.png" \
--output-format jsonParse JSON stdout. If generation fails, return status=error with the actual error. The generated image path is $TEMP_DIR/resume.png.
sn-text-optimize fails or returns an empty result, stop and report the real errorsn-image-generate fails, stop and report the real errorAfter Worker Agent completes, its last message must be and only be the following JSON string (bare JSON, no code fences, no preceding or trailing text).
Normal Flow:
{
"status": "ok",
"need_main_agent_send": true,
"output_mode": "friendly|verbose",
"image": "$TEMP_DIR/resume.png",
"generation_prompt": "<included only when output_mode=verbose>",
"timing": {
"total_elapsed_seconds": 25.12,
"prompt_generation": { "elapsed_seconds": 5.23, "model": "sensenova-6.8-flash-lite" },
"image_generation": { "elapsed_seconds": 19.89, "model": "sn_image_model" }
}
}Error Flow:
{
"status": "error",
"error": "<Actual error information>"
}Rules:
status=ok must contain need_main_agent_send: truegeneration_prompt must contain when output_mode=verbose; omit it in friendly modetiming.prompt_generation.elapsed_seconds and timing.prompt_generation.model are read from sn-text-optimize JSON outputtiming.image_generation.elapsed_seconds is read from sn-image-generate JSON outputtiming.image_generation.model is fixed to "sn_image_model" because sn-image-generate does not return a model fieldText Summary: one sentence describing that the resume image has been generated, no more than 50 words.
Image: send the single generated resume image.
Resume image generated
---
Aspect ratio: <aspect_ratio>
Image size: <image_size>
---
Generation prompt:
<generation_prompt>
---
Time statistics: Total <total>s | Prompt generation <t>s | Image generation <t>s
---
Image:
<image path>sn-image-base → sn-text-optimize, sn-image-generateprompts/resume.mdprompts/resume.md - Fixed portfolio-resume layout and language/content mapping rules../sn-image-base/SKILL.md - Base-layer image/text tool behavior../sn-image-base/references/api_spec.md - CLI parameter details© OpenSenseNova, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/sn-image-resume of OpenSenseNova/SenseNova-Skills.
Open the folder on GitHubat commit 7838651
Sn Image Resume next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sn Image Resume this skillOpenSenseNova/SenseNova-Skills | 5.7k | — | ~2.5k | Automated safety check: Pass | MIT | |
| Career-Ops Job Search Centercareer-ops-hq/career-ops | 74k | — | ~3.6k | Automated safety check: Pass | MIT | |
| Reactive Resume Builderreactive-resume/reactive-resume | 44k | — | ~2k | Automated safety check: Pass | MIT | |
| Internship Project Preparation ToolLiuMengxuan04/shushu-internship-tool | 2.1k | — | ~2.3k | Automated safety check: Pass | Custom licence | |
| Resume Tailoringvarunr89/resume-tailoring-skill | 769 | 1 repos | ~8.9k | Automated safety check: Pass | MIT | |
| Offer Negotiationreactive-resume/reactive-resume | 44k | — | ~10k | Automated safety check: Pass | MIT |
career-ops-hq/career-ops
Routes job-search requests to modes for evaluating offers, scanning portals, generating tailored CVs, tracking applications and drafting outreach, starting from a pasted job URL or description.
reactive-resume/reactive-resume
Builds resumes as valid JSON for the open-source Reactive Resume app by interviewing you, and can track job applications through its MCP tools.
LiuMengxuan04/shushu-internship-tool
Turns a target internship job description into a resume-ready, interview-ready project by finding and auditing GitHub projects and drafting resume bullets and interview Q&A.
varunr89/resume-tailoring-skill
A skill your agent uses when creating tailored resumes for job applications - researches company/role, creates optimized templates, conducts branching experience discovery to surface undocumented…
reactive-resume/reactive-resume
Evaluates and negotiates job offers. An agent skill from reactive-resume/reactive-resume.
Rimagination/good-story
A skill your agent uses when the user asks to find, sharpen, evaluate, rewrite, or explain the story in scientific or scholarly materials across disciplines, including manuscripts, grants, paper…
OpenSenseNova/SenseNova-Skills
Builds HTML stories where one continuous camera journey advances with page progress, using researched structure, AI stills, Seedance video clips and browser QA.
OpenSenseNova/SenseNova-Skills
Fallback scripts for web search, image search and download, and image generation that PPT skills use only when the host agent lacks or fails its own tools.
OpenSenseNova/SenseNova-Skills
Opens the PPT Workbench web editor for an existing SenseNova HTML slide deck so you can preview, inspect and visually edit it without regenerating.
OpenSenseNova/SenseNova-Skills
Turns an approved slide outline into a full-page image for every slide, one 16:9 PNG per page, and optionally packages the set into a PPTX.
OpenSenseNova/SenseNova-Skills
Entry point for SenseNova presentation generation: creates a task folder, picks depth, output format and design richness, and routes to the right PPT skill.
OpenSenseNova/SenseNova-Skills
Researches Chinese market, macro, trade, procurement, listed-company and regulatory information from free official sources that need no sign-up or API key.
Categories
Generates a designed portfolio-resume image from resume content provided in conversation text. Sn Image Resume is an agent skill from OpenSenseNova/SenseNova-Skills. Generates a designed portfolio-resume image from resume content provided in conversation text.
Sn Image Resume fits situations like: user asks to create resume image; portfolio resume.
Run `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-image-resume -a claude-code`. Or copy the skill folder (skills/sn-image-resume in OpenSenseNova/SenseNova-Skills) into .claude/skills/sn-image-resume in your project. Claude Code loads it when a task matches its description.
Run `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-image-resume -a codex`. Or copy the skill folder (skills/sn-image-resume in OpenSenseNova/SenseNova-Skills) into .agents/skills/sn-image-resume in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-image-resume -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sn-image-resume, .gemini/skills/sn-image-resume, .github/skills/sn-image-resume and .opencode/skills/sn-image-resume in your project.
Going by SKILL.md and its folder, Sn Image Resume needs the command-line tools its instructions call (python) and credentials named SN_API_KEY, SN_TEXT_API_KEY, SN_CHAT_API_KEY and SN_IMAGE_GEN_API_KEY. Our summary lists: Python 3; A credential in SN_TEXT_API_KEY; A credential in SN_CHAT_API_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Sn Image Resume is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 9.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Sn Image Resume: Career-Ops Job Search Center (career-ops-hq/career-ops, 74k stars), Reactive Resume Builder (reactive-resume/reactive-resume, 44k stars), Internship Project Preparation Tool (LiuMengxuan04/shushu-internship-tool, 2.1k stars) and Resume Tailoring (varunr89/resume-tailoring-skill, 769 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
OpenSenseNova (a GitHub organization) maintains it in OpenSenseNova/SenseNova-Skills, which has 5,749 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on October 9, 2026.
Source: OpenSenseNova/SenseNova-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.