[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GGTCRTHZZWN4YZHRBFKVPS":3,"skill-same:01M6GGTCRTHZZWN4YZHRBFKVPS":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6GGTCRTHZZWN4YZHRBFKVPS","recruiter-job-board-sync",null,"Use for weekly job-board NEW\u002FUPDATE scans and diff scripts.","zapabob\u002FSkills","zapabob","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F130830376?v=4","01M6DBMYZAGRTFQDSQYW3W764P","峯岸 亮","01M6DBMZ3GKDSJ01NZ9XTZD7JD",2,"MIT","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002Ff1\u002Ff100d6b81d261ef00d811c24317ebd4900b2e9b76adf6a69f3568c4934b3fe9e\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"sync","board","recruiter job board sync","macos","linux","windows","update","Recruiting","hermes","hermes agent","snapshot","use","diff","kanban","jobs","scripts","2026-11-10 10:12:30",false,"---\r\nname: recruiter-job-board-sync\r\ndescription: Use for weekly job-board NEW\u002FUPDATE scans and diff scripts.\r\nversion: 1.0.0\r\nauthor: Hermes Agent\r\nlicense: MIT\r\nplatforms: [windows, linux, macos]\r\nmetadata:\r\n  hermes:\r\n    tags: [recruiting, jobs, kanban, diff, snapshot]\r\n    category: job-recruiter\r\n---\r\n\r\n# Recruiter Job-Board Sync Skill\r\n\r\nWeekly NEW \u002F UPDATE \u002F REMOVED diff for tracked job boards. Replaces naive\r\n\"parse cache and flag unseen rows\" logic, which silently reports every parsed\r\nrow as new when the seen-store is empty or namespaced wrong.\r\n\r\nThis skill does NOT post, apply, or message anyone. It only produces a diff.\r\n\r\n## When to Use\r\n\r\n- A weekly\u002Fperiodic recruiter sync card asks for \"new postings\", \"description\r\n  updates\", or \"closed\u002Fremoved\" counts.\r\n- A previous run's numbers look implausible (tens of NEW every single week).\r\n- You are asked to fix or trust a job-scraping\u002Fdiff script.\r\n\r\n## Prerequisites\r\n\r\n- Python 3 on PATH.\r\n- Network access to the tracked boards (HTTP GET only).\r\n- Installed scanner: `%USERPROFILE%\u002FDocuments\u002Fops\u002Fjob-recruiter\u002Fscanner\u002F`\r\n  (`scan_jobs.py`, `selftest_scan.py`, `baseline\u002F`, `snapshots\u002F`).\r\n\r\n## Quick Reference\r\n\r\n```\r\npython %USERPROFILE%\u002FDocuments\u002Fops\u002Fjob-recruiter\u002Fscanner\u002Fscan_jobs.py cycle\r\npython %USERPROFILE%\u002FDocuments\u002Fops\u002Fjob-recruiter\u002Fscanner\u002Fselftest_scan.py\r\n```\r\n\r\n`cycle` = fetch -> parse -> report -> promote baseline.\r\nActions: `fetch`, `parse`, `diff`, `report`, `cycle`, `promote`.\r\n\r\n## Procedure\r\n\r\n1. **Run the self-test first.** `selftest_scan.py` mutates a throwaway copy of\r\n   the baseline and asserts add\u002Fremove\u002Fupdate are detected. If it does not\r\n   print `ALL CHECKS PASSED`, the diff is not trustworthy — stop and fix it.\r\n2. **Run `cycle`.** First ever run prints `state: baseline_established` and\r\n   0\u002F0\u002F0 for every source. That is correct, not a failure: there is no prior\r\n   snapshot to compare against. Report it as \"baseline established\", and do\r\n   NOT invent new-posting numbers from it.\r\n3. **Read `added` \u002F `updated` \u002F `removed` per source.** These are keyed by the\r\n   site's own stable id (URL slug), never by a slugified title.\r\n4. **Sanity-check the magnitude.** Tens of NEW on a board that rarely posts\r\n   means the parser regressed or the baseline was reset — investigate before\r\n   reporting.\r\n5. **Write the report** to\r\n   `%USERPROFILE%\u002FDocuments\u002Fops\u002Fjob-recruiter\u002Freports\u002FYYYY-MM-DD-recruiter.md`\r\n   with: counts per source, root cause if anything was wrong, artifacts, and an\r\n   explicit \"no external posting\u002Fapplication performed\" line.\r\n6. **Reuse the existing kanban card.** Do not create a duplicate for the same\r\n   sync period. Add a `kanban_comment` with the counts and the report path.\r\n\r\n## Pitfalls\r\n\r\n- **Never compare parsed rows against a shared\u002Fforeign seen-store.** A store\r\n  holding only `gmail:*` and unrelated `web` URLs makes every row new by\r\n  construction. Keep per-source snapshots.\r\n- **Never build diff keys from titles.** Japanese titles slugify into\r\n  non-existent URLs, and HTML entities (`&amp;`) leak through.\r\n- **Herp.careers changed URL scheme.** The old\r\n  `https:\u002F\u002Fherp.careers\u002Fv1\u002Ftier4\u002Fjobs\u002F{4-digit}` now returns HTTP 400. Current\r\n  canonical form is `https:\u002F\u002Fherp.careers\u002Fv1\u002Ftier4\u002F{opaque-slug}` (e.g.\r\n  `-ZLzb5ZwQO7t`). Digits in a Herp *title* (`1008_Planning and Control\r\n  Engineer`) are legacy labels, not ids.\r\n- **HRMOS list cards leak non-job rows**: street addresses\r\n  (`東京都港区浜松町2丁目3-1 …`), counters (`全 62 件中 62 件 を表示しています`),\r\n  bare numbers, and employment-type labels (`正社員`). Filter them.\r\n- **A 0\u002F0\u002F0 diff can be real or a bug.** Always run the self-test before\r\n  reporting zeros, otherwise you cannot distinguish \"nothing changed\" from\r\n  \"the diff never fires\".\r\n- **A missing snapshot is not a zero diff.** It must surface as\r\n  `no_snapshot`; silently counting it as 0 hides a broken fetch.\r\n- Grepping a 300KB single-line HTML file for a long pattern can hang past the\r\n  terminal timeout — parse with Python instead.\r\n- On this host, the Security Center blocks `cd DIR && python foo.py` and\r\n  `python -c`. Run `python \"C:\u002Fabs\u002Fpath\u002Fscript.py\"` as a standalone command.\r\n\r\n## Verification\r\n\r\nDone only when all of these are true:\r\n\r\n1. `selftest_scan.py` prints `ALL CHECKS PASSED`.\r\n2. The live run reports a per-source `state` of `baseline_established` or\r\n   `compared` — never `no_snapshot` for a board you intended to scan.\r\n3. Noise probes find zero matches: no `\"title\": \"62\"`, no `東京都` headings, no\r\n   `件中` counters in the snapshot JSON.\r\n4. The report states the three counts, names the artifacts, and states that no\r\n   external application\u002Fposting was performed.\r\n","# Recruiter Job-Board Sync Skill\r\n\r\nWeekly NEW \u002F UPDATE \u002F REMOVED diff for tracked job boards. Replaces naive\r\n\"parse cache and flag unseen rows\" logic, which silently reports every parsed\r\nrow as new when the seen-store is empty or namespaced wrong.\r\n\r\nThis skill does NOT post, apply, or message anyone. It only produces a diff.\r\n\r\n## When to Use\r\n\r\n- A weekly\u002Fperiodic recruiter sync card asks for \"new postings\", \"description\r\n  updates\", or \"closed\u002Fremoved\" counts.\r\n- A previous run's numbers look implausible (tens of NEW every single week).\r\n- You are asked to fix or trust a job-scraping\u002Fdiff script.\r\n\r\n## Prerequisites\r\n\r\n- Python 3 on PATH.\r\n- Network access to the tracked boards (HTTP GET only).\r\n- Installed scanner: `%USERPROFILE%\u002FDocuments\u002Fops\u002Fjob-recruiter\u002Fscanner\u002F`\r\n  (`scan_jobs.py`, `selftest_scan.py`, `baseline\u002F`, `snapshots\u002F`).\r\n\r\n## Quick Reference\r\n\r\n```\r\npython %USERPROFILE%\u002FDocuments\u002Fops\u002Fjob-recruiter\u002Fscanner\u002Fscan_jobs.py cycle\r\npython %USERPROFILE%\u002FDocuments\u002Fops\u002Fjob-recruiter\u002Fscanner\u002Fselftest_scan.py\r\n```\r\n\r\n`cycle` = fetch -> parse -> report -> promote baseline.\r\nActions: `fetch`, `parse`, `diff`, `report`, `cycle`, `promote`.\r\n\r\n## Procedure\r\n\r\n1. **Run the self-test first.** `selftest_scan.py` mutates a throwaway copy of\r\n   the baseline and asserts add\u002Fremove\u002Fupdate are detected. If it does not\r\n   print `ALL CHECKS PASSED`, the diff is not trustworthy — stop and fix it.\r\n2. **Run `cycle`.** First ever run prints `state: baseline_established` and\r\n   0\u002F0\u002F0 for every source. That is correct, not a failure: there is no prior\r\n   snapshot to compare against. Report it as \"baseline established\", and do\r\n   NOT invent new-posting numbers from it.\r\n3. **Read `added` \u002F `updated` \u002F `removed` per source.** These are keyed by the\r\n   site's own stable id (URL slug), never by a slugified title.\r\n4. **Sanity-check the magnitude.** Tens of NEW on a board that rarely posts\r\n   means the parser regressed or the baseline was reset — investigate before\r\n   reporting.\r\n5. **Write the report** to\r\n   `%USERPROFILE%\u002FDocuments\u002Fops\u002Fjob-recruiter\u002Freports\u002FYYYY-MM-DD-recruiter.md`\r\n   with: counts per source, root cause if anything was wrong, artifacts, and an\r\n   explicit \"no external posting\u002Fapplication performed\" line.\r\n6. **Reuse the existing kanban card.** Do not create a duplicate for the same\r\n   sync period. Add a `kanban_comment` with the counts and the report path.\r\n\r\n## Pitfalls\r\n\r\n- **Never compare parsed rows against a shared\u002Fforeign seen-store.** A store\r\n  holding only `gmail:*` and unrelated `web` URLs makes every row new by\r\n  construction. Keep per-source snapshots.\r\n- **Never build diff keys from titles.** Japanese titles slugify into\r\n  non-existent URLs, and HTML entities (`&amp;`) leak through.\r\n- **Herp.careers changed URL scheme.** The old\r\n  `https:\u002F\u002Fherp.careers\u002Fv1\u002Ftier4\u002Fjobs\u002F{4-digit}` now returns HTTP 400. Current\r\n  canonical form is `https:\u002F\u002Fherp.careers\u002Fv1\u002Ftier4\u002F{opaque-slug}` (e.g.\r\n  `-ZLzb5ZwQO7t`). Digits in a Herp *title* (`1008_Planning and Control\r\n  Engineer`) are legacy labels, not ids.\r\n- **HRMOS list cards leak non-job rows**: street addresses\r\n  (`東京都港区浜松町2丁目3-1 …`), counters (`全 62 件中 62 件 を表示しています`),\r\n  bare numbers, and employment-type labels (`正社員`). Filter them.\r\n- **A 0\u002F0\u002F0 diff can be real or a bug.** Always run the self-test before\r\n  reporting zeros, otherwise you cannot distinguish \"nothing changed\" from\r\n  \"the diff never fires\".\r\n- **A missing snapshot is not a zero diff.** It must surface as\r\n  `no_snapshot`; silently counting it as 0 hides a broken fetch.\r\n- Grepping a 300KB single-line HTML file for a long pattern can hang past the\r\n  terminal timeout — parse with Python instead.\r\n- On this host, the Security Center blocks `cd DIR && python foo.py` and\r\n  `python -c`. Run `python \"C:\u002Fabs\u002Fpath\u002Fscript.py\"` as a standalone command.\r\n\r\n## Verification\r\n\r\nDone only when all of these are true:\r\n\r\n1. `selftest_scan.py` prints `ALL CHECKS PASSED`.\r\n2. The live run reports a per-source `state` of `baseline_established` or\r\n   `compared` — never `no_snapshot` for a board you intended to scan.\r\n3. Noise probes find zero matches: no `\"title\": \"62\"`, no `東京都` headings, no\r\n   `件中` counters in the snapshot JSON.\r\n4. The report states the three counts, names the artifacts, and states that no\r\n   external application\u002Fposting was performed.\r\n",{"name":5,"author":40,"license":15,"version":41,"metadata":42,"platforms":47,"description":7},"Hermes Agent","1.0.0",{"hermes":43},{"tags":44,"category":46},[45,33,32,31,29],"recruiting","job-recruiter",[24,23,22],"main","0d1434f89f4bc6b07e9d272accd8c1013768820f","archive\u002Fskill-md-reviewed\u002Fsha256\u002Ff1\u002Ff100d6b81d261ef00d811c24317ebd4900b2e9b76adf6a69f3568c4934b3fe9e",0,"https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills","https:\u002F\u002Fgithub.com\u002Fzapabob","The Open University of JAPAN　2019-now\r\n\r\nTokyo University of Science　2007-2010","2026-10-26 16:29:01",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add zapabob\u002FSkills --skill recruiter-job-board-sync",{"tool":62,"command":63},"bunx","bunx skills add zapabob\u002FSkills --skill recruiter-job-board-sync",{"tool":65,"command":66},"pnpm","pnpm dlx skills add zapabob\u002FSkills --skill recruiter-job-board-sync","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002Ff1\u002Ff100d6b81d261ef00d811c24317ebd4900b2e9b76adf6a69f3568c4934b3fe9e\u002FSKILL.md",true,[],[71,104,139,165,192,209],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":90,"publishedAt":35},"01M6GJTE1GESGGF9K028Y7753E","xurl","X\u002FTwitter via xurl CLI: post, search, DM, media, v2 API.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fxurl\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[77,82,85],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":83,"categoryName":84,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[73,91,22,92,93,23,24,94,95,96,97,98,99,27,28,100,48,101,102,103],"openclaw","cli","github","official","search","https","social-media","api","Media","twitter","social","via","post",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":121,"publishedAt":35},"01M6GJT8S1PXQ8WPXT1HSNBWH2","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwriting-plans\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[110,113,116,117,118],{"categoryNo":111,"categoryName":112,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":114,"categoryName":115,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":83,"categoryName":84,"taxonomyType":80,"taxonomyTypeDesc":81},{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":119,"categoryName":120,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000036","内容创作者",[122,123,124,125,22,126,23,127,24,128,129,130,131,132,133,134,135,136,137,138],"writing","writing plans","plans","design","review","workflow","documentation","tasks","development","code","planning","code-review","subagent","write","superpowers","paths","test-driven-development",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":148,"publishedAt":35},"01M6GJST0H5X7WHBJ3BZK0DVKH","whisper","OpenAI's general-purpose speech recognition model. Supports 99 languages, transcription, translation to English, and language identification. Six model sizes from tiny (39M params) to large (1550M params). Use for speech-to-text, podcast transcription, or multilingual audio processing. Best for robust, multilingual ASR.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwhisper\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[145],{"categoryNo":146,"categoryName":147,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000016","图像与多媒体",[141,22,23,149,150,151,152,153,154,155,156,157,30,158,159,160,161,162,163,164],"openai","speech","multimodal","Transformers","ASR","Audio","text","model","speech recognition","general","multilingual","translation","english","identification","processing","Audio Processing",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":174,"publishedAt":35},"01M6GJSMRQ8EETZTYMG72P70EA","weights-and-biases","W&B: log ML experiments, sweeps, model registry, dashboards.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fweights-and-biases\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[171],{"categoryNo":172,"categoryName":173,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000013","分析与可视化",[175,22,176,177,24,178,179,180,181,182,183,156,184,185,186,187,188,189,190,191],"weights and biases","tensorflow","experiments","pytorch","visualization","registry","real-time","tuning","dashboards","experiment","log","time","Experiment Tracking","Model Registry","Hyperparameter Tuning","WandB","Real-Time Visualization",{"skillNo":193,"name":194,"nameZh":6,"description":195,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":196,"categories":197,"keywords":199,"publishedAt":35},"01M6GJS19KDPRY112JTR326S06","watchers","Poll RSS, JSON APIs, and GitHub with watermark dedup.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwatchers\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[198],{"categoryNo":83,"categoryName":84,"taxonomyType":80,"taxonomyTypeDesc":81},[194,22,200,93,23,201,202,203,204,205,206,27,28,207,208],"terminal","automation","http","monitoring","cron","json","rss","devops","with",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":213,"categories":214,"keywords":217,"publishedAt":35},"01M6GJRHJD2A6Q830SWF9W48BC","serving-llms-vllm","vLLM: high-throughput LLM serving, OpenAI API, quantization.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fvllm\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[215,216],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[218,219,220,23,221,149,222,223,224,152,225,98,226,227,228,229,230,231,232,233],"llms","vLLM","serving llms vllm","research","openai api","tensor","Inference Serving","Production","llm serving","High Throughput","PagedAttention","Continuous Batching","Quantization","Tensor Parallelism","high-throughput","throughput"]