{"_id":"@bestblogs/skills","name":"@bestblogs/skills","dist-tags":{"latest":"2.0.8"},"versions":{"2.0.8":{"name":"@bestblogs/skills","version":"2.0.8","description":"BestBlogs Skills for Claude Code — personalized reading, discovery, and capture powered by @bestblogs/cli","bin":{"bestblogs-skills":"bin/index.js"},"publishConfig":{"access":"public"},"keywords":["bestblogs","claude-code","skills","ai","reading"],"author":{"name":"Gino Zhang","email":"ginobefun@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ginobefun/BestBlogs.git","directory":"skills"},"homepage":"https://bestblogs.dev","engines":{"node":">=16"},"gitHead":"38d2621a802c07bda205e682faa203064ae05e49","_id":"@bestblogs/skills@2.0.8","bugs":{"url":"https://github.com/ginobefun/BestBlogs/issues"},"_nodeVersion":"22.19.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-uAUNrnFz9g6obNQk3Rkdz66wiOnYws5mGND26Yo34/bDHGTAw9tVG7flofrTv9Hu6JhT4STUf3lDhGxDS74Z2A==","shasum":"64ae91f4ed46057efb359810f6af0eee6dc58ca3","tarball":"https://registry.npmjs.org/@bestblogs/skills/-/skills-2.0.8.tgz","fileCount":11,"unpackedSize":31555,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAjYmp0yfFSAgCFYyAonTrXdNLaNFYVVdCST7aCpngsKAiBPyiXhExHb7wnLBhkDF0arCAP+YxZSuVMZJiOoRSu33g=="}]},"_npmUser":{"name":"ginobefun","email":"ginobefun@gmail.com"},"directories":{},"maintainers":[{"name":"ginobefun","email":"ginobefun@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/skills_2.0.8_1776664089159_0.29535648360382805"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T05:48:09.092Z","2.0.8":"2026-04-20T05:48:09.293Z","modified":"2026-04-20T05:48:09.449Z"},"maintainers":[{"name":"ginobefun","email":"ginobefun@gmail.com"}],"description":"BestBlogs Skills for Claude Code — personalized reading, discovery, and capture powered by @bestblogs/cli","homepage":"https://bestblogs.dev","keywords":["bestblogs","claude-code","skills","ai","reading"],"repository":{"type":"git","url":"git+https://github.com/ginobefun/BestBlogs.git","directory":"skills"},"author":{"name":"Gino Zhang","email":"ginobefun@gmail.com"},"bugs":{"url":"https://github.com/ginobefun/BestBlogs/issues"},"license":"MIT","readme":"# bestblogs-skills\n\n一组给智能体（Claude Code、Cursor 等支持 SKILL.md 约定的客户端）使用的 BestBlogs 技能包。\n\n每个 skill 都是一份 `SKILL.md` 文件，描述触发词、原语清单、动作示例与错误处理。内部实现统一 shell out 到 `bestblogs` CLI（见 `../bestblogs-cli/`）并消费其 `--json` 输出。\n\n## 包含的 Skills\n\n| Skill | 触发场景 | 原语数 |\n|---|---|---|\n| [`bestblogs-profile`](skills/bestblogs-profile/SKILL.md) | 冷启动 / 查看画像 | 2 |\n| [`bestblogs-discover`](skills/bestblogs-discover/SKILL.md) | 今日 / 个性化 / 关注流 / 热趋 / 搜索 / 周刊 | 7 |\n| [`bestblogs-read`](skills/bestblogs-read/SKILL.md) | 深读一条内容（meta + markdown + read 回传） | 1（编排级） |\n| [`bestblogs-capture`](skills/bestblogs-capture/SKILL.md) | 收藏 / 划线 / 笔记 / 历史 | 12 |\n| [`bestblogs-explain`](skills/bestblogs-explain/SKILL.md) | 画像 / 来源贡献 / 评分 | 3 |\n\n合计 **25 个稳定原语**，覆盖 v2.0.7 首发范围。\n\n## 前置\n\n先全局安装 CLI：\n\n```bash\nnpm install -g @bestblogs/cli\nbestblogs auth login\n```\n\n## 安装到 Claude Code\n\n```bash\n./install.sh\n```\n\n脚本会把 `skills/*` 软链到 `~/.claude/skills/bestblogs/*`，Claude Code 重启后即可按 description 主动触发。\n\n也可以手动 clone + 指定 skill dir：\n\n```bash\ngit clone https://github.com/ginobefun/bestblogs-monorepo.git\nln -s $(pwd)/bestblogs-monorepo/bestblogs-skills/skills/* ~/.claude/skills/\n```\n\n## 给其他 agent 生态用\n\nskills 不依赖 MCP。任何能 shell out 到 CLI 的 agent（OpenClaw、Cursor 的 custom tool、自研 agent）都可直接用：\n\n```\nTOOL_SCHEMA:\n  name: bestblogs_discover_today\n  invocation: bestblogs discover today --limit 20 --json\n  output_schema: see ../bestblogs-cli/src/api/types.ts CandidateExplainSchema\n```\n\n## 约定\n\n所有 SKILL.md 遵循同一结构：\n\n1. Frontmatter：`name` + `description`（包含丰富触发关键词）\n2. 何时使用\n3. 原语清单（与 CLI 一一对应）\n4. 前置检查\n5. 动作示例（所有示例都带 `--json`）\n6. 错误处理\n7. 组合建议（指向其他 skill）\n\n## 解释字段（跨 skill 共享契约）\n\n`discover today / for-you / following` 以及 brief 类返回的每条候选都带：\n\n| 字段 | 含义 |\n|---|---|\n| `candidateSource` | `my_brief` / `public_brief` / `for_you` / `following` / `public_brief_fallback` |\n| `selectionReason` | 一句话自然语言，≤50 字 |\n| `fallbackApplied` | 是否降级回退 |\n| `personalized` | 是否个性化 |\n\nAgent 展示候选时应尊重这些字段——既是 UX 的透明度，也是 Skill 层与后端 v2.0.7 的稳定契约。\n\n## Release\n\ntag 形式 `skills-vX.Y.Z`。版本与 CLI major 对齐但可独立发布。\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-e6fca555bd5f5ee8dcb8f774fc859476"}