Scratchpad 示例提取器
从源码中抓取最近的 JSDoc 示例,生成一个可运行的 TypeScript 暂存文件。
技能仅读取源文件并在本地写入scratchpad目录,无外部网络调用或敏感数据操作,授予的权限最小化。但流程要求自动提取示例并可能写入代码至本地,缺乏显式的用户确认步骤(除非需要选择runner),且无法确保写入位置的可控性。此外,脚本未实现回滚或删除操作,仅靠不覆盖已有文件来避免数据丢失。作为未验证发布者的技能,来源归因不明确。因此给予12分,扣分原因为权限请求不够显式、缺少用户确认及回滚机制。
脚本逻辑清晰,具备参数验证和错误处理,但未提供测试覆盖,也未实际执行验证。关键路径(如查找JSDoc示例、选择示例、生成唯一文件名)在静态阅读下合理,但异常输入(如文件不存在、无示例)时仅输出错误信息并退出,反馈不够详细。由于静态审查,无法验证可运行性,故给予8分,扣分原因为缺乏测试和实际运行证据,错误反馈质量一般。
技能定义明确,使用场景(提取JSDoc示例到scratchpad)清晰,触发条件(用户要求时)合理,并提供了明确的非适用情况(如无示例时询问)。环境适配方面,技能依赖本地Node.js和文件系统,不依赖海外服务,符合中国大陆网络可用性。但未明确说明对中文注释或中文文件名的处理,可能导致文件名slug化后不可读,且在无示例时需用户交互,触发精度稍受影响。给予10分,扣分原因为中文支持未明确,触发边界部分依赖用户交互。
文档结构清晰,包含描述、工作流、行为说明,且脚本有Usage注释。但缺少版本号、变更日志、明确维护负责人及已知限制说明。许可信息在仓库级MIT许可证中,技能本身未单独声明。示例部分虽在README整体中,但技能目录无FAQ或故障排除。因此给予8分,扣分原因为版本管理、维护责任和已知限制披露不足。
技能核心功能明确:将JSDoc示例提取为TypeScript文件,并通过自动附加runner生成可运行代码,提高了手动复制粘贴的效率。但静态审查无法验证输出文件是否可直接使用,且未提供实际使用效果的证据。在无runner时需用户介入选择,增加了交互成本。作为静态评估,按上限7分,扣分原因为缺乏执行验证和输出直接可用性的证据。
技能附带了脚本源码,可作为主要证据,但未提供测试用例或CI集成证明脚本工作正常。仓库有CI工作流,但未覆盖此技能路径。缺少交叉验证或独立再现结果。因此给予4分,扣分原因为仅静态阅读,缺乏可复现的测试证据。
- 技能的脚本会读取任意指定文件并将其中的示例提取到本地scratchpad目录,若用户误用可能读取敏感文件的内容,但不会外发,需注意使用场景。
- 脚本没有显式的用户确认步骤(除非需要选择runner),自动模式可能直接写入文件,建议在关键操作前增加确认。
- 发布者未经验证,依赖其长期维护存在不确定性,使用前应自行审查代码。
- 脚本对中文文件名可能生成不可读的slug,影响输出文件的可识别性。
这个 Skill 能做什么,适合哪些场景?
该技能定位到当前源码中最靠近光标或选中区域的 JSDoc 的 `**Example**` 示例,并将其提取为一个独立的 TypeScript 文件,存放到 `./scratchpad` 目录。它通过运行一个 Node 脚本来完成提取,并智能处理同名文件的冲突。该技能能够自动识别并执行示例中的 `program` 绑定,或保留已有的 Effect 运行器,为开发者提供快速尝试和验证代码示例的便捷方式。仅需请求即可,无需手动复制粘贴。
确定源文件路径和行号(从 IDE 活动文件或用户指定获取)。运行 node .agents/skills/scratchpad/scripts/extract-example.mjs <source-path> <line> 命令。脚本会找到包含该行或最接近的 JSDoc Example 块,将其提取为一个 TypeScript 文件,并命名如 scratchpad/Schedule-retrying-and-repeating-effects.ts。如果文件已存在,会自动添加数字后缀,避免覆盖。在自动模式下,如果示例中存在顶层 program 绑定,脚本会追加 Effect.runPromise(program).then(console.log, console.error) 代码。如果找不到合适的运行器,脚本退出码为 2,此时会根据用户选择使用 --mode preserve 或 --runner <identifier> 重新运行。最后以可点击的文件链接形式报告创建的文件路径。
- 当开发者想快速尝试某个源码示例时,在 IDE 中选中示例代码,请求“将此示例放入 scratchpad”即可生成可运行的 TS 文件。
- 当用户提供一个明确的文件路径和行号时,技能会从该位置提取对应的 JSDoc 示例。
- 当示例包含 Effect 运行器时,技能会保留原有运行逻辑,方便用户直接测试效果。
- 当需要修改或测试 Effect 中的特定值或函数时,用户可通过 `--runner` 参数指定要运行的 Effect 值。
- 当示例文件需要保持不变以避免覆盖时,用户可使用 `--mode preserve` 模式。
- 当用户只是想要复制或打开示例文件时,技能会提供可点击的链接,方便快速访问。
这个 Skill 有哪些优点和局限?
- 自动化提取最近的 JSDoc 示例,节省手动复制粘贴的时间。
- 处理文件名冲突,通过添加数字后缀避免覆盖。
- 自动识别并运行 `program` 绑定,或保留已有的 Effect 运行器,方便直接测试。
- 支持通过 `--runner` 参数指定要运行的特定 Effect 值。
- 提供了可点击的文件链接,方便在编辑器中打开生成的 scratchpad 文件。
- 脚本逻辑清晰,易于理解和扩展。
- 仅支持 JSDoc 格式的示例,不适用于其他文档格式。
- 需要 Node.js 环境,且依赖仓库中的脚本文件,独立使用可能需手动迁移依赖。
- 如果示例没有明显的运行器,需要用户交互决定如何处理,可能增加操作步骤。
- 该技能没有内置测试,稳定性未得到充分验证。
- 提取的代码可能依赖源项目中的类型或模块,单独运行可能缺少上下文。
- 仅在支持的 IDE/环境中测试过(如 Claude Code、Codex、Cursor 和 OpenCode),其他环境可能兼容。
如何安装这个 Skill?
该技能包含在 T3 Code 仓库中。获取仓库后,技能位于 .repos/effect-smol/.agents/skills/scratchpad/ 目录。要将其用作独立技能,请将该目录复制到您的 Agent Skills 目录中(例如 ~/.claude/skills/ 或项目中的 .agents/skills/)。需要 Node.js 环境。具体安装步骤请参考仓库 README,其中提供了多种安装方式(如 npx t3@latest 或桌面应用)。
如何使用这个 Skill?
在支持 Agent Skills 的 IDE 或编辑器中,打开一个源码文件,将光标放在或选中一个 JSDoc 示例附近。然后触发该技能,例如说:“把最近的示例放到 scratchpad”。技能将自动运行提取脚本,并在消息中返回一个可点击的文件链接。如果您需要指定文件和行号,可以直接提供,例如:“从 src/foo.ts 的第 42 行提取示例到 scratchpad”。请注意,技能默认不会自动运行生成的 scratchpad 文件,除非您明确要求。
这个 Skill 与同类方案有什么区别?
该技能是针对特定仓库的专用技能,主要与手动复制粘贴方式相比。与通用的代码片段工具相比,它更专注地提取 JSDoc 示例,并保留 Effect 相关语义。没有其他已命名的替代品。