Editorial resume
Generate a single-page A4 PDF resume in editorial bilingual (中/英) style — the kind that lands top-tier tech jobs. Trigger when the user asks to build, write, update, polish, or export their resume; or wants a "looks-like-Peng-Zhiwei's-resume" PDF. Reads the user's context (chat history, attached docs, GitHub repos, LinkedIn dump, prior drafts) and produces a printable PDF without asking 20 questions.From its SKILL.md
npx -y skills add wilson534/editorial-resumeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.5 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Editorial Resume
A single-page A4 resume PDF generator with editorial bilingual layout. Outputs resume.pdf from the user's context with zero or minimal questions.
When to use
- User asks "帮我做简历 / write my resume / update my CV / export my resume to PDF"
- User wants a printable PDF version of their portfolio/profile
- User uploads an old resume / LinkedIn export / GitHub README and wants it polished into a standard tier-1-tech resume
What you do
You are responsible for end-to-end PDF generation. Do NOT make the user fill a form. The whole point is "one shot from context".
Step 1 — Gather information from context
Mine the conversation history, any attached files, and the user's repo for:
| Field | Where to look |
|---|---|
| Name (Zh + En) | first message, signature, GitHub profile, prior resume |
| Role / title | inferred from job target the user mentions, or current role |
| Tagline / one-liner | what kind of work they ship; pull from their bio |
| Contacts | GitHub, email, WeChat, phone, personal site, LinkedIn |
| 个人简介 (summary) | 2-4 sentences synthesizing what they've shipped |
| 实习经历 (internships) | dated work entries with org, role, 3-4 bullets each |
| 项目经历 (projects) | independent projects with link, role, 3 bullets |
| 教育背景 | school + major + GPA + honors |
| 奖项荣誉 (awards) | competition wins, scholarships, recognitions |
| 技能 (skills) | grouped: tools / stack / methods / domain |
| 黑客松项目 (hackathons) | one-line each, optional |
If a section is genuinely missing from context, omit it — don't fabricate. Better a 1-page resume with 5 sections than a stretched one with empty padding.
If critical fields are missing (name, at least one work/project), ask once in a single bundled message (not a sequence of small questions).
Step 2 — Read the reference
Open examples/example-resume.html to internalize:
- The CSS variables, fonts, font sizes, line heights — copy these verbatim, do not redesign
- The bilingual mixing: Chinese for sections/labels, English for tech terms wrapped in
<span class="en-lg">for typographic harmony - The bullet density: each bullet is 1-2 lines, leads with a verb or quantified outcome
- The 1-page A4 constraint — total content height must fit ~1090px
Step 3 — Write the resume HTML
Create a new HTML file at the user's project root (e.g. resume.html) that:
- Reuses
examples/example-resume.html's CSS block byte-for-byte (including the:rootvariables and all class definitions) - Replaces the content within
.pagewith the user's data, following the same DOM structure - Embeds the avatar as
<img class="avatar" src="...">— accept any local path or web URL the user provides; if no avatar, omit the<img>tag and let.header-leftflex naturally - Keeps all
<span class="en-lg">…</span>wrapping for English terms in titles (improves typographic balance with mixed CJK)
Step 4 — Render PDF + auto-fit to one page
Run scripts/render.py with the HTML path:
python3 scripts/render.py /path/to/resume.html
This:
- Renders via Playwright's bundled Chromium (the only reliable headless renderer for CJK on macOS — system Chrome's headless mode renders CJK as blank)
- Outputs
resume.pdfnext to the HTML - Reports the page count
- If >1 page: progressively tightens
.sectionmargin-top,.entrymargin-bottom, and.pagepadding until it fits, or reports back so you can suggest content cuts
If rendering still spills to page 2 after auto-fit, suggest the user cut content (drop the weakest bullet, merge two short entries, etc.) — never let a resume be 1.05 pages.
Step 5 — Show result
Print the absolute path of the generated PDF. If the environment supports it, also show a screenshot/preview of the first page so the user can sanity-check before sharing.
Style rules (non-negotiable)
- Single page A4 — never 2 pages. Density beats whitespace for fresh-grad/IC resumes.
- No emojis in the resume body.
- No filler adjectives ("热爱", "擅长沟通", "团队合作精神") — replace with quantified outcomes.
- Bullets lead with verb + outcome: "主导 X 0-1 定义与交付,达成 Y 指标" beats "参与了 X 的工作".
- English tech terms keep their casing:
LangChain,LangGraph,Agent,Marketplace,to-Reader— wrap in<span class="en-lg">if it improves rhythm. - Numbers > prose: "599 名学生扫描,识别 76 篇有论文记录" beats "扫描了大量论文".
First-time setup (only if Playwright is missing)
pip3 install playwright
python3 -m playwright install chromium
The render script checks for these and prints clear errors if missing.
Files
examples/example-resume.html— reference resume (彭智炜's actual one). Read this to learn the style. Don't copy his content.examples/example-avatar.jpg— reference avatar (use only as visual reference for portrait crop ratio: 76×102, slight 3px radius).scripts/render.py— Playwright PDF renderer with auto-fit-to-one-page logic.
What ships with it: 6 files
271.0 KB alongside SKILL.md, 1 of them executable
examples/
- example-avatar.jpg104.7 KB
- example-resume.html156.3 KB
scripts/
- render.pyruns5.2 KB
- .gitignore35 B
- LICENSE1.1 KB
- README.md3.7 KB