[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DDG1DAVCXBZTS28T7Y6CZP":3,"skill-same:01M6DDG1DAVCXBZTS28T7Y6CZP":157},{"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":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":6,"ownerHtmlUrl":56,"ownerBlogUrl":6,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6DDG1DAVCXBZTS28T7Y6CZP","watchers",null,"Poll RSS, JSON APIs, and GitHub with watermark dedup.","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\u002F29\u002F29c01df1882d6e15c36a4c0af5a854a3c4fab5cf1c6657c02a0979315e8c606a\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36],"macos","terminal","github","linux","automation","http","monitoring","cron","json","rss","hermes","hermes agent","devops","2026-11-10 10:12:30",false,"---\nname: watchers\ndescription: Poll RSS, JSON APIs, and GitHub with watermark dedup.\nversion: 1.0.0\nauthor: Hermes Agent\nlicense: MIT\nplatforms: [linux, macos]\nmetadata:\n  hermes:\n    tags: [cron, polling, rss, github, http, automation, monitoring]\n    category: devops\n    requires_toolsets: [terminal]\n    related_skills: []\n---\n\n# Watchers\n\nPoll external sources on an interval and react only to new items. Three ready-made scripts plus a shared watermark helper; wire them into a cron job (or run them ad-hoc from the terminal).\n\n## When to Use\n\n- User wants to watch an RSS\u002FAtom feed and be notified of new entries\n- User wants to watch a GitHub repo's issues \u002F pulls \u002F releases \u002F commits\n- User wants to poll an arbitrary JSON endpoint and get notified on new items\n- User asks for \"a watcher for X\" or \"notify me when X changes\"\n\n## Mental model\n\nA watcher is just a script that:\n\n1. Fetches data from the external source\n2. Compares against a watermark file of previously-seen IDs\n3. Writes the new watermark back\n4. Prints new items to stdout (or nothing on no-change)\n\nThe scripts below handle all three. The agent runs them via the terminal tool — from a cron job, a webhook, or an interactive chat — and reports what's new.\n\n## Ready-made scripts\n\nAll three live in `$HERMES_HOME\u002Fskills\u002Fdevops\u002Fwatchers\u002Fscripts\u002F` once the skill is installed. Each reads `WATCHER_STATE_DIR` (defaults to `$HERMES_HOME\u002Fwatcher-state\u002F`) for its state file, keyed by the `--name` argument.\n\n| Script | What it watches | Dedup key |\n|---|---|---|\n| `watch_rss.py` | RSS 2.0 or Atom feed URL | `\u003Cguid>` \u002F `\u003Cid>` |\n| `watch_http_json.py` | Any JSON endpoint returning a list of objects | Configurable id field |\n| `watch_github.py` | GitHub issues \u002F pulls \u002F releases \u002F commits for a repo | `id` \u002F `sha` |\n\nAll three:\n\n- First run records a baseline — never replays existing feed\n- Watermark is a bounded ID set (max 500) to cap memory\n- Output format: `## \u003Ctitle>\\n\u003Curl>\\n\\n\u003Coptional body>` per item\n- Empty stdout on no-new — the caller treats that as silent\n- Non-zero exit on fetch errors\n\n## Usage\n\nRun a watcher directly from the terminal tool:\n\n```bash\npython $HERMES_HOME\u002Fskills\u002Fdevops\u002Fwatchers\u002Fscripts\u002Fwatch_rss.py \\\n  --name hn --url https:\u002F\u002Fnews.ycombinator.com\u002Frss --max 5\n```\n\nWatch a GitHub repo (set `GITHUB_TOKEN` in `${HERMES_HOME:-~\u002F.hermes}\u002F.env` to avoid the 60 req\u002Fhr anonymous rate limit):\n\n```bash\npython $HERMES_HOME\u002Fskills\u002Fdevops\u002Fwatchers\u002Fscripts\u002Fwatch_github.py \\\n  --name hermes-issues --repo NousResearch\u002Fhermes-agent --scope issues\n```\n\nPoll an arbitrary JSON API:\n\n```bash\npython $HERMES_HOME\u002Fskills\u002Fdevops\u002Fwatchers\u002Fscripts\u002Fwatch_http_json.py \\\n  --name api --url https:\u002F\u002Fapi.example.com\u002Fevents \\\n  --id-field event_id --items-path data.events\n```\n\n## Wiring into cron\n\nAsk the agent to schedule a cron job with a prompt like:\n\n> Every 15 minutes, run `watch_rss.py --name hn --url https:\u002F\u002Fnews.ycombinator.com\u002Frss`. If it prints anything, summarize the headlines and deliver them. If it prints nothing, stay silent.\n\nThe agent invokes the script via the terminal tool inside the cron job's agent loop; no changes to cron's built-in `--script` flag are needed.\n\n## State files\n\nEvery watcher writes `$HERMES_HOME\u002Fwatcher-state\u002F\u003Cname>.json`. Inspect:\n\n```bash\ncat $HERMES_HOME\u002Fwatcher-state\u002Fhn.json\n```\n\nForce a replay (next run treated as first poll):\n\n```bash\nrm $HERMES_HOME\u002Fwatcher-state\u002Fhn.json\n```\n\n## Writing your own\n\nAll three scripts use the same template: load watermark, fetch, diff, save, emit. `scripts\u002F_watermark.py` is the shared helper; import it to get atomic writes + bounded ID set + first-run baseline for free. See any of the three reference scripts for how little boilerplate it takes.\n\n## Common Pitfalls\n\n1. **Printing a \"no new items\" header every tick.** Callers rely on empty stdout = silent. If you print anything on an empty delta, you spam the channel. The shipped scripts handle this; custom scripts must too.\n2. **Expecting the first run to emit items.** It won't — first run records a baseline. If you need an initial digest, delete the state file after the first run or add a `--prime-with-latest N` flag in your own script.\n3. **Unbounded watermark growth.** The shared helper caps at 500 IDs. Raise it for high-churn feeds; lower it on constrained filesystems.\n4. **Putting the state dir where the agent's sandbox can't write.** `$HERMES_HOME\u002Fwatcher-state\u002F` is always writable. Docker\u002FModal backends may not see arbitrary host paths.\n","# Watchers\n\nPoll external sources on an interval and react only to new items. Three ready-made scripts plus a shared watermark helper; wire them into a cron job (or run them ad-hoc from the terminal).\n\n## When to Use\n\n- User wants to watch an RSS\u002FAtom feed and be notified of new entries\n- User wants to watch a GitHub repo's issues \u002F pulls \u002F releases \u002F commits\n- User wants to poll an arbitrary JSON endpoint and get notified on new items\n- User asks for \"a watcher for X\" or \"notify me when X changes\"\n\n## Mental model\n\nA watcher is just a script that:\n\n1. Fetches data from the external source\n2. Compares against a watermark file of previously-seen IDs\n3. Writes the new watermark back\n4. Prints new items to stdout (or nothing on no-change)\n\nThe scripts below handle all three. The agent runs them via the terminal tool — from a cron job, a webhook, or an interactive chat — and reports what's new.\n\n## Ready-made scripts\n\nAll three live in `$HERMES_HOME\u002Fskills\u002Fdevops\u002Fwatchers\u002Fscripts\u002F` once the skill is installed. Each reads `WATCHER_STATE_DIR` (defaults to `$HERMES_HOME\u002Fwatcher-state\u002F`) for its state file, keyed by the `--name` argument.\n\n| Script | What it watches | Dedup key |\n|---|---|---|\n| `watch_rss.py` | RSS 2.0 or Atom feed URL | `\u003Cguid>` \u002F `\u003Cid>` |\n| `watch_http_json.py` | Any JSON endpoint returning a list of objects | Configurable id field |\n| `watch_github.py` | GitHub issues \u002F pulls \u002F releases \u002F commits for a repo | `id` \u002F `sha` |\n\nAll three:\n\n- First run records a baseline — never replays existing feed\n- Watermark is a bounded ID set (max 500) to cap memory\n- Output format: `## \u003Ctitle>\\n\u003Curl>\\n\\n\u003Coptional body>` per item\n- Empty stdout on no-new — the caller treats that as silent\n- Non-zero exit on fetch errors\n\n## Usage\n\nRun a watcher directly from the terminal tool:\n\n```bash\npython $HERMES_HOME\u002Fskills\u002Fdevops\u002Fwatchers\u002Fscripts\u002Fwatch_rss.py \\\n  --name hn --url https:\u002F\u002Fnews.ycombinator.com\u002Frss --max 5\n```\n\nWatch a GitHub repo (set `GITHUB_TOKEN` in `${HERMES_HOME:-~\u002F.hermes}\u002F.env` to avoid the 60 req\u002Fhr anonymous rate limit):\n\n```bash\npython $HERMES_HOME\u002Fskills\u002Fdevops\u002Fwatchers\u002Fscripts\u002Fwatch_github.py \\\n  --name hermes-issues --repo NousResearch\u002Fhermes-agent --scope issues\n```\n\nPoll an arbitrary JSON API:\n\n```bash\npython $HERMES_HOME\u002Fskills\u002Fdevops\u002Fwatchers\u002Fscripts\u002Fwatch_http_json.py \\\n  --name api --url https:\u002F\u002Fapi.example.com\u002Fevents \\\n  --id-field event_id --items-path data.events\n```\n\n## Wiring into cron\n\nAsk the agent to schedule a cron job with a prompt like:\n\n> Every 15 minutes, run `watch_rss.py --name hn --url https:\u002F\u002Fnews.ycombinator.com\u002Frss`. If it prints anything, summarize the headlines and deliver them. If it prints nothing, stay silent.\n\nThe agent invokes the script via the terminal tool inside the cron job's agent loop; no changes to cron's built-in `--script` flag are needed.\n\n## State files\n\nEvery watcher writes `$HERMES_HOME\u002Fwatcher-state\u002F\u003Cname>.json`. Inspect:\n\n```bash\ncat $HERMES_HOME\u002Fwatcher-state\u002Fhn.json\n```\n\nForce a replay (next run treated as first poll):\n\n```bash\nrm $HERMES_HOME\u002Fwatcher-state\u002Fhn.json\n```\n\n## Writing your own\n\nAll three scripts use the same template: load watermark, fetch, diff, save, emit. `scripts\u002F_watermark.py` is the shared helper; import it to get atomic writes + bounded ID set + first-run baseline for free. See any of the three reference scripts for how little boilerplate it takes.\n\n## Common Pitfalls\n\n1. **Printing a \"no new items\" header every tick.** Callers rely on empty stdout = silent. If you print anything on an empty delta, you spam the channel. The shipped scripts handle this; custom scripts must too.\n2. **Expecting the first run to emit items.** It won't — first run records a baseline. If you need an initial digest, delete the state file after the first run or add a `--prime-with-latest N` flag in your own script.\n3. **Unbounded watermark growth.** The shared helper caps at 500 IDs. Raise it for high-churn feeds; lower it on constrained filesystems.\n4. **Putting the state dir where the agent's sandbox can't write.** `$HERMES_HOME\u002Fwatcher-state\u002F` is always writable. Docker\u002FModal backends may not see arbitrary host paths.\n",{"name":5,"author":42,"license":15,"version":43,"metadata":44,"platforms":50,"description":7},"Hermes Agent","1.0.0",{"hermes":45},{"tags":46,"category":36,"related_skills":48,"requires_toolsets":49},[31,47,33,26,29,28,30],"polling",[],[25],[27,24],"main","0d1434f89f4bc6b07e9d272accd8c1013768820f","archive\u002Fskill-md-reviewed\u002Fsha256\u002F29\u002F29c01df1882d6e15c36a4c0af5a854a3c4fab5cf1c6657c02a0979315e8c606a",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":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add zapabob\u002FSkills --skill watchers",{"tool":65,"command":66},"bunx","bunx skills add zapabob\u002FSkills --skill watchers",{"tool":68,"command":69},"pnpm","pnpm dlx skills add zapabob\u002FSkills --skill watchers","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002F29\u002F29c01df1882d6e15c36a4c0af5a854a3c4fab5cf1c6657c02a0979315e8c606a\u002FSKILL.md",true,[73,79,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"data\u002Fdomain-complexity.csv","ASSET","资产文件",7325,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fdata\u002Fdomain-complexity.csv",{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"data\u002Fprd-purpose.md","REFERENCE","参考文档",7246,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fdata\u002Fprd-purpose.md",{"path":86,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":87,"sourceHtmlUrl":88},"data\u002Fproject-types.csv",3145,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fdata\u002Fproject-types.csv",{"path":90,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":91,"sourceHtmlUrl":92},"steps-c\u002Fstep-01-init.md",7785,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-01-init.md",{"path":94,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":95,"sourceHtmlUrl":96},"steps-c\u002Fstep-01b-continue.md",5751,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-01b-continue.md",{"path":98,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":99,"sourceHtmlUrl":100},"steps-c\u002Fstep-02-discovery.md",8096,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-02-discovery.md",{"path":102,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":103,"sourceHtmlUrl":104},"steps-c\u002Fstep-02b-vision.md",6775,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-02b-vision.md",{"path":106,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":107,"sourceHtmlUrl":108},"steps-c\u002Fstep-02c-executive-summary.md",7250,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-02c-executive-summary.md",{"path":110,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":111,"sourceHtmlUrl":112},"steps-c\u002Fstep-03-success.md",9189,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-03-success.md",{"path":114,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":115,"sourceHtmlUrl":116},"steps-c\u002Fstep-04-journeys.md",9040,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-04-journeys.md",{"path":118,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":119,"sourceHtmlUrl":120},"steps-c\u002Fstep-05-domain.md",6919,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-05-domain.md",{"path":122,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":123,"sourceHtmlUrl":124},"steps-c\u002Fstep-06-innovation.md",8680,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-06-innovation.md",{"path":126,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":127,"sourceHtmlUrl":128},"steps-c\u002Fstep-07-project-type.md",8799,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-07-project-type.md",{"path":130,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":131,"sourceHtmlUrl":132},"steps-c\u002Fstep-08-scoping.md",7870,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-08-scoping.md",{"path":134,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":135,"sourceHtmlUrl":136},"steps-c\u002Fstep-09-functional.md",9199,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-09-functional.md",{"path":138,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":139,"sourceHtmlUrl":140},"steps-c\u002Fstep-10-nonfunctional.md",9000,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-10-nonfunctional.md",{"path":142,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":143,"sourceHtmlUrl":144},"steps-c\u002Fstep-11-polish.md",9329,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-11-polish.md",{"path":146,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":147,"sourceHtmlUrl":148},"steps-c\u002Fstep-12-complete.md",5683,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fsteps-c\u002Fstep-12-complete.md",{"path":150,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":151,"sourceHtmlUrl":152},"templates\u002Fprd-template.md",164,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Ftemplates\u002Fprd-template.md",{"path":154,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":155,"sourceHtmlUrl":156},"workflow.md",2923,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fnexandro\u002Fblob\u002Fmaster\u002Fskills\u002Fbmad-create-prd\u002Fworkflow.md",[158,187,222,249,276,283],{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":173,"publishedAt":37},"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",[164,167,168],{"categoryNo":165,"categoryName":166,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":169,"categoryName":170,"taxonomyType":171,"taxonomyTypeDesc":172},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[160,174,24,175,26,27,176,177,178,179,180,181,182,34,35,183,51,184,185,186],"openclaw","cli","windows","official","search","https","social-media","api","Media","twitter","social","via","post",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":204,"publishedAt":37},"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",[193,196,199,200,201],{"categoryNo":194,"categoryName":195,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":197,"categoryName":198,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":169,"categoryName":170,"taxonomyType":171,"taxonomyTypeDesc":172},{"categoryNo":202,"categoryName":203,"taxonomyType":171,"taxonomyTypeDesc":172},"01JBSEEDCAT000000000000036","内容创作者",[205,206,207,208,24,209,27,210,176,211,212,213,214,215,216,217,218,219,220,221],"writing","writing plans","plans","design","review","workflow","documentation","tasks","development","code","planning","code-review","subagent","write","superpowers","paths","test-driven-development",{"skillNo":223,"name":224,"nameZh":6,"description":225,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":226,"categories":227,"keywords":231,"publishedAt":37},"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",[228],{"categoryNo":229,"categoryName":230,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[224,24,27,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248],"openai","speech","multimodal","Transformers","ASR","Audio","text","model","speech recognition","use","general","multilingual","translation","english","identification","processing","Audio Processing",{"skillNo":250,"name":251,"nameZh":6,"description":252,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":253,"categories":254,"keywords":258,"publishedAt":37},"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",[255],{"categoryNo":256,"categoryName":257,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000013","分析与可视化",[259,24,260,261,176,262,263,264,265,266,267,239,268,269,270,271,272,273,274,275],"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":277,"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":278,"categories":279,"keywords":281,"publishedAt":37},"01M6GJS19KDPRY112JTR326S06","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwatchers\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[280],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[5,24,25,26,27,28,29,30,31,32,33,34,35,36,282],"with",{"skillNo":284,"name":285,"nameZh":6,"description":286,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":287,"categories":288,"keywords":291,"publishedAt":37},"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",[289,290],{"categoryNo":165,"categoryName":166,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":169,"categoryName":170,"taxonomyType":171,"taxonomyTypeDesc":172},[292,293,294,27,295,232,296,297,298,235,299,181,300,301,302,303,304,305,306,307],"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"]