Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add Bwkyd/wps-skills --skill wps-resume-cngit clone --depth 1 https://github.com/Bwkyd/wps-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/bwkyd/wps-skills/wps-resume-cn)<a href="https://agentmods.dev/skills/bwkyd/wps-skills/wps-resume-cn"><img src="https://agentmods.dev/badge/skills/bwkyd/wps-skills/wps-resume-cn/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/bwkyd/wps-skills/wps-resume-cn"><img src="https://agentmods.dev/badge/skills/bwkyd/wps-skills/wps-resume-cn.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00092 | $0.02927 |
| Opus 5 | $0.00046 | $0.01463 |
| Sonnet 5 | $0.00018 | $0.00585 |
| Haiku 4.5 | $0.00009 | $0.00293 |
Grade A, and why
wps-resume-cn scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 315 lines — stays where its author put it; the contents beside it link to each section on GitHub.
中式简历生成器
输入个人信息 → 生成排版精美的中国式求职简历(.docx)。
When to Use
- 用户需要制作求职简历
- 用户说"帮我写/做一份简历"
- 用户需要简历模板
- 用户需要优化已有简历的排版
When NOT to Use
- 需要英文/国际格式简历 → 使用
wps-docx-writer - 需要写求职信/Cover Letter → 使用
wps-docx-writer
模板风格
┌───────────────────────────────────────────┐
│ 简历模板选择 │
├───────────────────────────────────────────┤
│ [1] 📋 经典表格式 传统中国式表格简历 │
│ [2] 📄 简约现代式 左右分栏+色块装饰 │
│ [3] 🎓 校招清新式 适合应届生+浅色系 │
│ [4] 💼 高管精英式 深色侧边栏+极简 │
└───────────────────────────────────────────┘
工作流程
Step 1: 收集信息
基本信息(必填):
- 姓名
- 联系方式(手机号、邮箱)
- 求职意向(目标岗位)
中国特色字段(酌情填写):
- 性别、出生年月
- 民族、政治面貌
- 籍贯、现居城市
- 最高学历、毕业院校
- 婚姻状况(可选)
内容板块:
- 教育背景(学校、专业、时间、GPA)
- 工作经历(公司、职位、时间、职责和成果)
- 项目经验(项目名、角色、技术栈、成果)
- 技能特长
- 证书荣誉
- 自我评价
Step 2: 优化内容
简历写作原则:
✅ 用数字量化成果:
❌ "提升了用户体验"
✅ "优化用户注册流程,转化率提升32%,日均注册量从500增至660"
✅ 用STAR法则写经历:
Situation(背景)→ Task(任务)→ Action(行动)→ Result(成果)
✅ 动词开头:
负责、主导、设计、开发、优化、推动、达成、搭建、统筹、协调
❌ 避免:
- 空泛描述(认真负责、吃苦耐劳)
- 无关经历
- 错别字
- 超过2页
Step 3: 生成 .docx 文件
pip install python-docx 2>/dev/null || pip3 install python-docx 2>/dev/null
排版规范:
纸张:A4
页边距:上下2cm,左右2cm(紧凑排版)
照片位:右上角,25mm × 35mm(一寸照)
姓名:22pt 黑体
模块标题:14pt 黑体,带下划线或色块
正文:11pt 宋体,行距1.3倍
时间线:右对齐,灰色
总长度:1页(应届生),1-2页(有经验者)
经典表格式模板结构:
from docx import Document
from docx.shared import Pt, Mm, Cm, RGBColor, Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT, WD_CELL_VERTICAL_ALIGNMENT
from docx.oxml.ns import qn, nsdecls
from docx.oxml import parse_xml
import os
def create_resume(info, output_path=None):
"""
info = {
'name': '张三',
'phone': '13800138000',
'email': '[email protected]',
'target': '软件工程师',
'gender': '男',
'birth': '1995年6月',
'ethnicity': '汉族',
'political': '中共党员',
'origin': '浙江杭州',
'city': '上海',
'education': '硕士',
'school': '浙江大学',
'education_list': [
{'school': '浙江大学', 'major': '计算机科学', 'degree': '硕士',
'time': '2018.09-2021.06', 'gpa': '3.8/4.0'},
],
'work_list': [
{'company': 'XX科技有限公司', 'position': '高级工程师',
'time': '2021.07-至今', 'duties': [
'主导核心系统重构,性能提升40%',
'带领5人团队完成XX项目',
]},
],
'skills': ['Python', 'Java', 'SQL', '项目管理'],
'certificates': ['PMP', 'CET-6'],
'self_eval': '5年软件开发经验,擅长系统架构设计...',
}
"""
doc = Document()
section = doc.sections[0]
section.page_width = Mm(210)
section.page_height = Mm(297)
section.top_margin = Cm(2)
section.bottom_margin = Cm(2)
section.left_margin = Cm(2)
section.right_margin = Cm(2)
def set_font(run, name='宋体', size=11, bold=False, color=None):
run.font.size = Pt(size)
run.font.name = name
run._element.rPr.rFonts.set(qn('w:eastAsia'), name)
run.bold = bold
if color:
run.font.color.rgb = color
def add_section_title(title):
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(12)
p.paragraph_format.space_after = Pt(6)
run = p.add_run(title)
set_font(run, '黑体', 14, True, RGBColor(0x2B, 0x57, 0x9A))
# 底部线
pPr = p._element.get_or_add_pPr()
pBdr = parse_xml(
f'<w:pBdr {nsdecls("w")}>'
f' <w:bottom w:val="single" w:sz="8" w:space="2" '
f'w:color="2B579A"/>'
f'</w:pBdr>'
)
pPr.append(pBdr)
# === 姓名 ===
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(info['name'])
set_font(run, '黑体', 22, True)
# === 联系信息 ===
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
p.paragraph_format.space_after = Pt(4)
contact = f"{info.get('phone','')} | {info.get('email','')} | {info.get('city','')}"
run = p.add_run(contact)
set_font(run, '宋体', 10, False, RGBColor(0x66, 0x66, 0x66))
# === 求职意向 ===
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(f"求职意向:{info.get('target','')}")
set_font(run, '宋体', 11, True)
# === 基本信息表 ===
if any(info.get(k) for k in ['gender','birth','ethnicity','political','origin','education']):
add_section_title('基本信息')
fields = [
('性别', info.get('gender','')),
('出生年月', info.get('birth','')),
('民族', info.get('ethnicity','')),
('政治面貌', info.get('political','')),
('籍贯', info.get('origin','')),
('学历', info.get('education','')),
]
fields = [(k,v) for k,v in fields if v]
# 两列排列
table = doc.add_table(rows=(len(fields)+1)//2, cols=4)
table.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (label, value) in enumerate(fields):
row = i // 2
col_start = (i % 2) * 2
cell_l = table.cell(row, col_start)
cell_v = table.cell(row, col_start + 1)
cell_l.text = label
cell_v.text = value
for c in [cell_l, cell_v]:
for p in c.paragraphs:
for r in p.runs:
set_font(r, '宋体', 10.5)
# === 教育背景 ===
if info.get('education_list'):
add_section_title('教育背景')
for edu in info['education_list']:
p = doc.add_paragraph()
run = p.add_run(f"{edu['school']} | {edu['major']} | {edu['degree']}")
set_font(run, '宋体', 11, True)
run2 = p.add_run(f" {edu['time']}")
set_font(run2, '宋体', 10, False, RGBColor(0x99, 0x99, 0x99))
if edu.get('gpa'):
p2 = doc.add_paragraph()
run3 = p2.add_run(f"GPA: {edu['gpa']}")
set_font(run3, '宋体', 10)
# === 工作经历 ===
if info.get('work_list'):
add_section_title('工作经历')
for work in info['work_list']:
p = doc.add_paragraph()
run = p.add_run(f"{work['company']} | {work['position']}")
set_font(run, '宋体', 11, True)
run2 = p.add_run(f" {work['time']}")
set_font(run2, '宋体', 10, False, RGBColor(0x99, 0x99, 0x99))
for duty in work.get('duties', []):
p2 = doc.add_paragraph()
p2.paragraph_format.left_indent = Cm(0.5)
run3 = p2.add_run(f"• {duty}")
set_font(run3, '宋体', 10.5)
# === 技能特长 ===
if info.get('skills'):
add_section_title('技能特长')
p = doc.add_paragraph()
run = p.add_run(' | '.join(info['skills']))
set_font(run, '宋体', 10.5)
# === 自我评价 ===
if info.get('self_eval'):
add_section_title('自我评价')
p = doc.add_paragraph()
run = p.add_run(info['self_eval'])
set_font(run, '宋体', 10.5)
# 保存
if not output_path:
output_path = f"{info['name']}_简历.docx"
doc.save(output_path)
return os.path.abspath(output_path)
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 315 lines · 92 tokens per session scan A f4a182729849
wps-resume-cn is a skill published in the GitHub repository Bwkyd/wps-skills (8 stars, last pushed 4mo ago), licensed MIT. It adds 92 tokens to every session and 2,927 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
docx-template-translator
Adaptive conversion of LaTeX, PDF, or Markdown sources into a complete Word .docx that follows a user-supplied .docx template. Use when pandoc --reference-doc alone is not enough — for thesis, dissertation, report, or institutional Word formatting that needs cover pages, declarations, TOC, heading numbering, captions…
法律文件脱敏处理
A browser-based and Python tool for removing sensitive details from legal Word documents and restoring them later. It can replace information such as names, dates, prices, bank accounts and case numbers while preserving document formatting.
note-organizer
Use this skill whenever the user wants to organize course materials, lecture notes, PPT/PDF/DOCX files, textbooks, personal notes, senior-student notes, historical exams, review questions, standards, manuals, or scattered study resources into a structured Markdown note library. Use it even when the user only says…
exhibition-outline
A template for turning an exhibition plan into a three-page presentation outline. The pages cover the theme, its explanation and visitor story, and a detailed area-by-area display plan.
tender-analysis
A workflow for reviewing tender documents, which are formal project requests that describe requirements and bidding rules. It extracts project details, technical and business conditions, deadlines, scoring rules, risks, and questions for clarification.
docx
Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when…