Reactive Resume Builder
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.
Coaches a job seeker through salary negotiation in five stages, with four core tactics, five pressure scenarios and ready-made Chinese phrasing for HR conversations.
SKILL.md written in Chinese; this summary is our English description.
$ npx skills add Ssupercoder/Salary-Negotiation-Skill --skill salary-negotiation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Ssupercoder/Salary-Negotiation-Skill salary-negotiation --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/Ssupercoder/Salary-Negotiation-Skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/salary-negotiation-openclaw-skill-main .claude/skills/salary-negotiation && 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 "salary-negotiation" agent skill from https://github.com/Ssupercoder/Salary-Negotiation-Skill/tree/main/salary-negotiation-openclaw-skill-main into .claude/skills/salary-negotiation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary-negotiation", 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/Ssupercoder/Salary-Negotiation-Skill/tree/main/salary-negotiation-openclaw-skill-mainType 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 Ssupercoder/Salary-Negotiation-Skill --skill salary-negotiation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Ssupercoder/Salary-Negotiation-Skill salary-negotiation --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ssupercoder/Salary-Negotiation-Skill.git skills-src && mkdir -p .agents/skills && cp -r skills-src/salary-negotiation-openclaw-skill-main .agents/skills/salary-negotiation && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "salary-negotiation" agent skill from https://github.com/Ssupercoder/Salary-Negotiation-Skill/tree/main/salary-negotiation-openclaw-skill-main into .agents/skills/salary-negotiation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary-negotiation", 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 Ssupercoder/Salary-Negotiation-Skill --skill salary-negotiation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Ssupercoder/Salary-Negotiation-Skill salary-negotiation --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ssupercoder/Salary-Negotiation-Skill.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/salary-negotiation-openclaw-skill-main .cursor/skills/salary-negotiation && 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 "salary-negotiation" agent skill from https://github.com/Ssupercoder/Salary-Negotiation-Skill/tree/main/salary-negotiation-openclaw-skill-main into .cursor/skills/salary-negotiation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary-negotiation", 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/Ssupercoder/Salary-Negotiation-Skill.git --path salary-negotiation-openclaw-skill-main--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 Ssupercoder/Salary-Negotiation-Skill --skill salary-negotiation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Ssupercoder/Salary-Negotiation-Skill salary-negotiation --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ssupercoder/Salary-Negotiation-Skill.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/salary-negotiation-openclaw-skill-main .gemini/skills/salary-negotiation && 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 "salary-negotiation" agent skill from https://github.com/Ssupercoder/Salary-Negotiation-Skill/tree/main/salary-negotiation-openclaw-skill-main into .gemini/skills/salary-negotiation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary-negotiation", 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 Ssupercoder/Salary-Negotiation-Skill salary-negotiationInstalls 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 Ssupercoder/Salary-Negotiation-Skill --skill salary-negotiation -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Ssupercoder/Salary-Negotiation-Skill.git skills-src && mkdir -p .github/skills && cp -r skills-src/salary-negotiation-openclaw-skill-main .github/skills/salary-negotiation && 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 "salary-negotiation" agent skill from https://github.com/Ssupercoder/Salary-Negotiation-Skill/tree/main/salary-negotiation-openclaw-skill-main into .github/skills/salary-negotiation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary-negotiation", 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 Ssupercoder/Salary-Negotiation-Skill --skill salary-negotiation -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Ssupercoder/Salary-Negotiation-Skill salary-negotiation --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ssupercoder/Salary-Negotiation-Skill.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/salary-negotiation-openclaw-skill-main .opencode/skills/salary-negotiation && 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 "salary-negotiation" agent skill from https://github.com/Ssupercoder/Salary-Negotiation-Skill/tree/main/salary-negotiation-openclaw-skill-main into .opencode/skills/salary-negotiation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary-negotiation", 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.
salary-negotiationCoaches a job seeker through salary negotiation in five stages, with four core tactics, five pressure scenarios and ready-made Chinese phrasing for HR conversations.
The SKILL.md is written in Chinese and distilled from the Salary-Negotiation-Skill project, which was originally a Python service built on a Qwen2.5-7B model served with vLLM. The agent moves through five stages in conversation: collecting information, building a strategy, practicing or running the negotiation, helping decide on an offer, and following up after you accept or decline.
It asks for four required details first, the target company, the role, years of experience and education, and fills in the rest as the talk goes on: expected salary range, other offers, current pay, target level, deadlines and bargaining strengths such as an internship conversion. The strategy set has four tactics: asking HR to name a budget first, a STAR-style statement of quantified achievements, shifting to signing bonus, equity, bonus or promotion terms when base pay is stuck, and anchoring with a real, specific competing offer without threats.
Five pressure scripts, tight budget, anchoring trap, lowball probe, deadline pressure and level downgrade, each come with a typical HR line, a suggested reply and a risk rating. An opening-price rule sets the first ask 12% above your stated maximum, with a floor at 95% of it. It is not meant for looking up pay ranges, building skills before a job search, or polishing a resume.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 2688ef8. 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.
Ships script files (Python), which the agent can run.
From 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 no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Salary Negotiation Coach loads about 1.2k tokens when it runs, and up to ~2.7k if it reads all its reference files. Until then it costs about 26 tokens; SKILL.md has 345 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 Ssupercoder/Salary-Negotiation-Skill at commit 2688ef8, republished under its MIT licence (© Ssupercoder). 345 words, ~1,156 tokens.
.claude/skills/salary-negotiation/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.本 skill 基于 Ssupercoder/Salary-Negotiation-Skill 的策略与场景知识库蒸馏而成。原项目是一个 Qwen2.5-7B + vLLM 的 Python 服务,本 skill 把它"对话引擎 + 状态机 + 策略库"的精华改造成通用 AI agent 可消费的指令式 skill。
用户正在准备或正在进行薪资谈判(校招 offer / 跳槽 / 晋升调薪)时使用,典型触发:
不适用:单纯查询行业薪资范围 / 求职前的能力建设 / 简历优化(请用其他 skill)。
对话自然推进,无需显式状态管理:
| 阶段 | 中文名 | 进入条件 | 退出条件 |
|---|---|---|---|
| P1 | 信息收集 | 用户开始谈薪咨询 | 必要字段齐全 |
| P2 | 策略制定 | P1 信息齐全 | 用户进入实战或拿到 offer |
| P3 | 实战谈判 | 用户请求模拟 / 实战发生 | 模拟完成或拿到 offer |
| P4 | 决策辅助 | 用户拿到 offer 或谈判结果 | 用户做出决策 |
| P5 | 后续跟进 | 用户接受 / 拒绝 offer | 流程结束 |
收集策略:不要一次性问完所有字段。先问 4 个必要项,对话推进中再补其他。
原则:不先报价,让 HR 先暴露预算区间。 话术骨架:
在谈具体数字之前,我想先了解一下这个岗位的薪酬带宽,以及贵司对 {role} 这个级别的定位。基于我目前的背景和手上其他机会,我相信我们能找到一个双方都满意的数字。
如果 HR 坚持你先说:给范围不报点 —— "市场上这个级别在 {min}k-{max}k 之间,我期望在区间偏上的位置。"
结构:Situation + Task + Action + Result。结果必须量化(百分比 / 金额 / 时间)。 示例:
在上一家公司,我负责的品牌升级项目(S),需要在 3 个月内完成全渠道视觉体系重构(T)。我主导了设计系统搭建,协调了 5 人小组,引入 AIGC 辅助流程(A),最终提前 2 周交付,用户品牌认知度提升 35%,设计效率提升 50%(R)。
base 谈不动时转向:
话术骨架:
理解贵司的预算管理。如果 base 确实到了上限,能否在签字费或股票归属速度上做一些调整?这些对我来说也有实质价值。我目前另一个机会在总包上更有竞争力,但我更倾向贵司的平台,所以希望能找到一个平衡点。
三条铁律:真实(不虚构)、适度(提而不炫)、具体(给数字)。 禁忌:不威胁"不给 XX 我就去别家"、不透露所有 offer 细节、不过度承诺"只要给 XX 我一定来"。
每次进入 P3,主动问用户:"想练哪个场景?"或"HR 最近说过什么?"
| 场景 | HR 典型话术 | 推荐回法核心 | 风险 |
|---|---|---|---|
| 预算有限 | "这个 offer 已经是最高档了,没更多预算" | 先质疑"是统一标准还是我这个 case?"→ 转向替代补偿 | medium |
| 锚定陷阱 | "你手上其他 offer 什么水平?" | 反问询价,把球踢回去 | low |
| 压价试探 | "你的期望超预算,65k 行不行?" | 不直接降价,先质疑定价依据,再用 STAR 重申价值 | high |
| 时间压力 | "offer 本周必须确认,过期作废" | 争取延期("明天下班前给您答复"),暗示有评估标准 | medium |
| 职级压低 | "只能给你定 T3-1" | 质疑定级依据,要求薪资反映价值差异 | high |
已知用户 expected_salary_max = X 时:
X × 1.12 (高出期望上限 12%,留谈判空间)X × 0.95 (期望上限的 95%)X × 1.20 (期望上限的 120%,超过基本拿不到)if user.has_other_offer:
add(S4_offer_anchor, priority="high")
if user.years >= 5:
add(S2_star_value_statement, priority="high")
if user.is_new_grad:
add(S3_alternative_compensation, priority="medium") # 校招 base 空间小,争取签字费每个回复尽量采用话术卡片结构,方便用户一键复制:
💼 **场景**:预算有限
🏢 **HR**:这个 offer 已经是这个级别的最高档了,我们确实没有更多预算
❌ **错误回法**:那好吧,我接受(直接放弃谈判空间)
✅ **推荐回法**:
理解贵司的预算管理。想确认一下,这个上限是视觉设计师的统一标准,
还是针对我这个 specific offer 的?另外,如果 base 确实到了上限,
能否在签字费或股票归属速度上做一些调整?这些对我来说也有实质价值。
⚠️ **风险**:medium
📌 **后续追问**:如果 HR 说统一标准 → ...;如果 HR 说确实没空间 → ...模拟 HR 时,先声明"我现在扮演 {公司} 的 HR,可以随时喊停",语气要冷淡 + 程式化,不主动给让步,等用户先开口谈数字。
如果用户提到"威胁 HR" / "伪造 offer" / "集体抬价"等请求,直接拒绝并解释原因。
策略与场景知识蒸馏自:
strategies/negotiation_strategies.py — 4 策略 + 5 场景models/state_machine.py — 5 阶段流程models/schema.py — 用户元数据字段config.py — 系统配置参考如果你在实际使用中发现策略不够用,可以补充自己的实战经验到 实战案例库 附录。
详见 examples/ 目录。可由用户和社区补充真实案例,每个案例包含:背景 + 使用的策略 + 实际结果。
| 误区 | 后果 | 正确做法 |
|---|---|---|
| HR 问期望,直接报数字 | 暴露底线,失去主动权 | 反问询价 |
| 被时间压力吓到马上接受 | 错过谈判窗口 | 争取 24-48h 思考时间 |
| 对方说"预算有限"就相信 | 可能是话术 | 质疑 + 替代补偿 |
| 拒绝时语气过激 | 烧桥 | 感谢 + 留余地 |
| 拿别家 offer 直接威胁 | 触发 HR 防备 | 暗示而非明说 |
© Ssupercoder, 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 4 other files (references) in salary-negotiation-openclaw-skill-main of Ssupercoder/Salary-Negotiation-Skill.
Open the folder on GitHubat commit 2688ef8
Salary Negotiation Coach 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 |
|---|---|---|---|---|---|---|
| Salary Negotiation Coach this skillSsupercoder/Salary-Negotiation-Skill | 618 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Reactive Resume Builderreactive-resume/reactive-resume | 44k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Career-Ops Job Search Centercareer-ops-hq/career-ops | 74k | — | ~3.3k | Automated safety check: Pass | MIT | |
| freehire Tech Job SearchMadsLorentzen/ai-job-search | 45k | — | ~2.7k | Automated safety check: Pass | MIT | |
| LinkedIn Job SearchMadsLorentzen/ai-job-search | 45k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Job Posting ScraperMadsLorentzen/ai-job-search | 45k | 1 repos | ~5.7k | Automated safety check: Pass | MIT |
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.
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.
MadsLorentzen/ai-job-search
Searches live software, data and engineering job listings through the freehire.me public API, or fetches one posting, with filters for country, region and skills.
MadsLorentzen/ai-job-search
Searches LinkedIn's public job listings for any location or remote work and fetches the full description of a posting, with no login or API key.
MadsLorentzen/ai-job-search
Finds new job postings that match your profile through installed portal-search CLIs, dedupes against past runs and your application tracker, and rates each one's fit.
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.
Ssupercoder/Salary-Negotiation-Skill
Coaches you through pay negotiation after a job offer in five stages, from collecting details to strategy, HR role-play, decision support and follow-up, aimed at tech workers in China.
Categories
Coaches a job seeker through salary negotiation in five stages, with four core tactics, five pressure scenarios and ready-made Chinese phrasing for HR conversations. 5-7B model served with vLLM. The agent moves through five stages in conversation: collecting information, building a strategy, practicing or running the negotiation, helping decide on an offer, and following up after you accept or decline.
Salary Negotiation Coach fits situations like: preparing to negotiate a campus or lateral job offer; practicing a mock conversation with an HR contact; answering HR claims such as a limited budget or a firm deadline; comparing two offers before choosing one.
Run `npx skills add Ssupercoder/Salary-Negotiation-Skill --skill salary-negotiation -a claude-code`. Or copy the skill folder (salary-negotiation-openclaw-skill-main in Ssupercoder/Salary-Negotiation-Skill) into .claude/skills/salary-negotiation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Ssupercoder/Salary-Negotiation-Skill --skill salary-negotiation -a codex`. Or copy the skill folder (salary-negotiation-openclaw-skill-main in Ssupercoder/Salary-Negotiation-Skill) into .agents/skills/salary-negotiation 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 Ssupercoder/Salary-Negotiation-Skill --skill salary-negotiation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/salary-negotiation, .gemini/skills/salary-negotiation, .github/skills/salary-negotiation and .opencode/skills/salary-negotiation in your project.
Going by SKILL.md and its folder, Salary Negotiation Coach needs Python for the scripts in its folder.
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.
Salary Negotiation Coach is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.2k tokens (SKILL.md is roughly 4.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Salary Negotiation Coach: Reactive Resume Builder (reactive-resume/reactive-resume, 44k stars), Career-Ops Job Search Center (career-ops-hq/career-ops, 74k stars), freehire Tech Job Search (MadsLorentzen/ai-job-search, 45k stars) and LinkedIn Job Search (MadsLorentzen/ai-job-search, 45k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Ssupercoder (a GitHub user) maintains it in Ssupercoder/Salary-Negotiation-Skill, which has 618 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on July 15, 2026.
Source: Ssupercoder/Salary-Negotiation-Skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.