/sn-image-resume
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
$ npx -y skills add OpenSenseNova/SenseNova-Skills --skill sn-image-resume --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/sn-image-resume
Context preview
The summary Claude sees to decide when to auto-load this skill.
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
SKILL.md
sn-image-resume.SKILL.mdname: sn-image-resume
description: |
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 "个人简历视觉设计".
metadata:
project: SenseNova-Skills
tier: 1
category: scene
priority: 8
user_visible: true
triggers:
- "resume image"
- "portfolio resume"
- "visual resume"
- "resume poster"
- "CV image"
- "简历图"
- "简历海报"
- "可视化简历"
- "个人简历视觉设计"
- "作品集简历"
sn-image-resume
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:
- Accepts resume content directly from conversational text
- Supports optional user-provided style direction
- Applies the fixed portfolio-resume layout rules in `prompts/resume.md`
- Generates a tall designed resume image through `sn-image-generate`
Non-goals
- Editing or polishing a plain text resume document without generating an image
- Parsing uploaded resume files as the primary input format
- Creating a conventional single-column ATS resume
- Guaranteeing exact preservation of every long paragraph when the image layout requires compression
Input Specification
|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`.|
API Configuration
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`.
Architecture: Main Agent + Worker Agent
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**:
- Worker Agent **does not send any messages to the user directly**, only returns structured JSON
- Main Agent is responsible for all user-visible messages
- Worker Agent's last message **must be and only be** the JSON string defined in the Return Contract
- Worker Agent's low-level API calls execute directly through `sn-image-base`, without spawning nested subagents
Workflow
Main Agent Workflow
1. Extract `resume_content`, optional `style`, `aspect_ratio` (default `9:16`), `image_size` (default `2k`), and `output_mode` (default `friendly`) from the user request 2. Validate that `resume_content` is non-empty and contains enough resume information to generate a meaningful page 3. Validate `aspect_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` 4. Send uniform preflight message: `"Using sn-image-resume skill to generate a resume image, please wait..."` 5. Start Worker Agent, passing in complete parameters and working directory 6. When Worker Agent returns:
- `status=ok`: send a short summary and the generated image
- `status=error`: report the real `error` field content to the user
Worker Agent Workflow
Worker Agent receives `resume_content`, `style`, `aspect_ratio`, `image_size`, `output_mode`, and the working directory of this skill (`SKILL_DIR`).
Step 0 — Initialization
1. Generate `task_id` using timestamp format `YYYYMMDD_HHMMSS` 2. Create temporary directory: `/tmp/openclaw/sn-image-resume/<task_id>/` as `TEMP_DIR` 3. Persist normalized inputs:
echo "$RESUME_CONTENT" > "$TEMP_DIR/resume-content.txt"
echo "$STYLE" > "$TEMP_DIR/style.txt"
Step 1 — Resume Prompt Generation
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 inRead more
name: sn-image-resume description: | 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 "个人简历视觉设计". metadata: project: SenseNova-Skills tier: 1 category: scene priority: 8 user_visible: true triggers: - "resume image" - "portfolio resume" - "visual resume" - "resume poster" - "CV image" - "简历图" - "简历海报" - "可视化简历" - "个人简历视觉设计" - "作品集简历"
sn-image-resume
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:
- Accepts resume content directly from conversational text
- Supports optional user-provided style direction
- Applies the fixed portfolio-resume layout rules in `prompts/resume.md`
- Generates a tall designed resume image through `sn-image-generate`
Non-goals
- Editing or polishing a plain text resume document without generating an image
- Parsing uploaded resume files as the primary input format
- Creating a conventional single-column ATS resume
- Guaranteeing exact preservation of every long paragraph when the image layout requires compression
Input Specification
|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`.|
API Configuration
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`.
Architecture: Main Agent + Worker Agent
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**:
- Worker Agent **does not send any messages to the user directly**, only returns structured JSON
- Main Agent is responsible for all user-visible messages
- Worker Agent's last message **must be and only be** the JSON string defined in the Return Contract
- Worker Agent's low-level API calls execute directly through `sn-image-base`, without spawning nested subagents
Workflow
Main Agent Workflow
1. Extract `resume_content`, optional `style`, `aspect_ratio` (default `9:16`), `image_size` (default `2k`), and `output_mode` (default `friendly`) from the user request 2. Validate that `resume_content` is non-empty and contains enough resume information to generate a meaningful page 3. Validate `aspect_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` 4. Send uniform preflight message: `"Using sn-image-resume skill to generate a resume image, please wait..."` 5. Start Worker Agent, passing in complete parameters and working directory 6. When Worker Agent returns:
- `status=ok`: send a short summary and the generated image
- `status=error`: report the real `error` field content to the user
Worker Agent Workflow
Worker Agent receives `resume_content`, `style`, `aspect_ratio`, `image_size`, `output_mode`, and the working directory of this skill (`SKILL_DIR`).
Step 0 — Initialization
1. Generate `task_id` using timestamp format `YYYYMMDD_HHMMSS` 2. Create temporary directory: `/tmp/openclaw/sn-image-resume/<task_id>/` as `TEMP_DIR` 3. Persist normalized inputs:
echo "$RESUME_CONTENT" > "$TEMP_DIR/resume-content.txt" echo "$STYLE" > "$TEMP_DIR/style.txt"
Step 1 — Resume Prompt Generation
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 inThe SenseNova model family plugs directly into agent runtimes such as OpenClaw and hermes-agent, with the skills in this repository extending the models with concrete, end-to-end office capabilities.
Repo: OpenSenseNova/SenseNova-Skills
Other skills on sensenova-skills.
- /sn-da-excel-workflow
Excel 数据分析多步编排器。覆盖:(1) 读取多 Sheet Excel 文件并统计行数,(2) 大文件检测(≥10k 行自动 Parquet 优化),(3) 数据清洗(缺失值、文本标准化、无效字符),(4) 条件筛选与分类提取,(5) 跨 Sheet 统计聚合,(6) 导出 Excel/CSV 并提供下载链接。覆盖从数据读取到报告生成全流程,按步骤编排 capability 子 skill。**遇到以下任一情况就主动使用本 skill,不要自行写几行 pandas 就回答**:①用户出现触发词:Excel 分析 / 表格分析 / 数据分析 /
Open skill - /category-coloring
当Excel文件总行数超过1万行时,通过转换为Parquet格式提升读取性能,提取目标指标并计算最大值,最后将结果输出为Excel并对特定行进行高亮标注。
Open skill - /duplicate-value-coloring
对比Excel多表中的特定系数并对异常值进行颜色标记。
Open skill - /outlier-coloring
识别 Excel 中的超限数值与错误单元格并进行高亮标注。
Open skill - /threshold-cell-coloring
根据Excel总行数自动切换Parquet加速读取,计算特定维度的时间序列平均值,并使用openpyxl输出带有条件格式(如低于均值标绿)和自定义样式的分析报告。
Open skill - /top-value-coloring
根据数据规模动态选择处理策略,对多表数据进行合并、统计筛选,并利用 openpyxl 实现关键指标的自动化样式高亮与格式化导出。
Open skill

