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 GresonKwan/JobOK --skill jobokgit clone --depth 1 https://github.com/GresonKwan/JobOKWrote 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/gresonkwan/jobok/jobok)<a href="https://agentmods.dev/skills/gresonkwan/jobok/jobok"><img src="https://agentmods.dev/badge/skills/gresonkwan/jobok/jobok.svg" alt="Measured on agentmods" 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.00046 | $0.01281 |
| Opus 5 | $0.00023 | $0.00641 |
| Sonnet 5 | $0.00009 | $0.00256 |
| Haiku 4.5 | $0.00005 | $0.00128 |
Grade A, and why
job-ok 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 8d 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 — 87 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Job OK
Job OK 是一个面向中文求职者的本地求职 Skill。它帮助学生、实习生和早期职场人把真实经历整理成可追溯的求职证据,再用于岗位匹配、简历优化、投递跟踪和面试表达训练。
核心原则:先证据,后结论;先岗位匹配,后简历改写;用户手动确认任何外部投递动作。
使用边界
- 默认使用中文,除非用户要求其他语言。
- 默认把简历、联系方式、截图、聊天记录等敏感材料保留在本地。
- 输出中区分
fact、assumption、inference、user_preference。 - 不编造学历、实习、项目、奖项、指标、证书、技能或公司经历。
- 不承诺面试、offer、薪资结果或平台曝光。
- 不自动投递、不自动私信 HR、不绕过登录、不批量爬取招聘平台。
- 不用于企业侧招聘、候选人排名或人事决策。
本地案例目录
每服务一个求职者,创建或复用:
job-search-cases/<yyyy-mm-dd-user-slug>/
├── brief.yaml
├── raw/
│ ├── resume/
│ └── job-posts/
├── profile.yaml
├── experience-assets.md
├── strengths.md
├── target-roles.csv
├── jobs.jsonl
├── job-matches.csv
├── resume-review.md
├── resume-versions/
├── interview-story-bank.md
├── interview-practice.md
├── application-tracker.csv
└── review-log.md
优先从 assets/templates/ 复制模板到案例目录,再开始分析。
工作流
- 先 Intake。 收集简历、目标城市、目标岗位、教育背景、项目/实习经历、限制条件、排除岗位、偏好行业和风险备注。核心信息不足时先追问,不急着推荐岗位或改简历。参考
references/intake-flow.md。 - 提取真实经历。 把简历和用户回答整理到
experience-assets.md。可用scripts/extract_resume_text.py提取.pdf、.docx、.txt、.md简历文本。 - 挖掘优势。 每个优势都必须走完
证据 -> 行为 -> 能力 -> 岗位信号。参考references/strength-taxonomy.md,在strengths.md记录可信度和缺失证据。 - 生成岗位假设。 输出 3-5 个目标岗位簇到
target-roles.csv。参考references/job-matching-rubric.md,写清匹配证据、差距、30 天补强动作和适合公司类型。 - 整理真实 JD。 只接受用户提供的岗位链接、截图、复制 JD、CSV 导出、Markdown 表格或浏览器可见页面。用
scripts/normalize_jobs.py生成jobs.jsonl。使用平台资料前先读references/platform-boundaries.md。 - 评分和短名单。 用
scripts/score_job_matches.py做确定性初筛。分数只用于 triage,不代表真实录取概率。低分岗位进入观察池,不进入投递列表。 - 优化简历。 参考
references/resume-rubric.md。每条建议必须能回到真实经历。输出resume-review.md,并在resume-versions/记录不同岗位版本。 - 训练面试表达。 参考
references/interview-training.md。一次只问一个问题,等待用户回答,再追问和复盘。首版只处理文本或语音转写稿。 - 跟踪和复盘。 每次投递、回复、面试、拒信或新增 JD 后,更新
application-tracker.csv和review-log.md。
辅助脚本
python3 .agents/skills/job-ok/scripts/extract_resume_text.py \
--input job-search-cases/<case>/raw/resume/resume.pdf \
--output job-search-cases/<case>/raw/resume/resume.txt
python3 .agents/skills/job-ok/scripts/normalize_jobs.py \
--input job-search-cases/<case>/raw/job-posts/jobs.md \
--output job-search-cases/<case>/jobs.jsonl \
--source-type user_paste
python3 .agents/skills/job-ok/scripts/score_job_matches.py \
--profile job-search-cases/<case>/profile.yaml \
--strengths job-search-cases/<case>/strengths.md \
--jobs job-search-cases/<case>/jobs.jsonl \
--output job-search-cases/<case>/job-matches.csv
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.
- 8d ago First seen · 87 lines · 46 tokens per session scan A c055e3b8fbc2
job-ok is a skill published in the GitHub repository GresonKwan/JobOK (384 stars, last pushed 2mo ago), licensed MIT. It adds 46 tokens to every session and 1,281 once invoked, about $0.0002 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-30.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
next-partial-prefetching-adoption
Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…
chronicle
Analyze Copilot session history for standup reports, usage tips, session search, and session reindexing. Use when the user asks for a standup, daily summary, usage tips, workflow recommendations, wants to search or find past sessions by keyword/file/PR, wants to reindex their session store, or asks about deleting…
babysit-pr
Babysit a GitHub pull request after creation by continuously polling review comments, CI checks/workflow runs, and mergeability state until the PR is merged/closed or user help is required. Diagnose failures, retry likely flaky failures up to 3 times, auto-fix/push branch-related issues when appropriate, and keep…