bensz-r-developer

Solid

当主要交付物是可复用的 R 函数、稳定 API、S3/S4/R6 类或 R Package,需要设计、开发、重构或审查其接口、测试、文档、并行与性能边界时使用。分析项目中只有需要跨分析复用或形成公共 API 的组件才进入本 Skill。⚠️ 不适用:主要交付物是数据分析流程、科学结果、R Markdown 报告或仅服务当前分析的辅助函数;这些任务使用 bensz-rmd-rules。

Code & Development 48 stars 8 forks Updated yesterday MIT

Install

View on GitHub

Quality Score: 87/100

Stars 20%
56
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# bensz-r-developer ## 目标 开发优雅、可维护且可复用的 R 软件组件:以明确的输入、返回、错误和副作用契约设计函数与公共 API,用领域对象承载真实不变量和生命周期,并以成熟工具管理文档、测试、并行和性能。 本 Skill 关注的是“R 代码怎样稳定地被调用”,而不是“某次分析怎样可靠地跑完”。触发依据是主要交付物和复用边界,不是任务里是否出现 `.R` 文件或函数: | 场景 | 主导 Skill | | --- | --- | | 主要交付物是可独立测试、文档化、版本化���跨项目复用的函数、类、API、Package | `bensz-r-developer` | | 主要交付物是数据流、统计结果、Rmd/HTML 报告、论文图表,函数只服务当前分析 | `bensz-rmd-rules` | | 同时交付分析流水线与可复用组件 | 由主要交付物决定主 Skill;分析主导时先由 `bensz-rmd-rules` 定义组件契约,再由本 Skill 实现组件,最后回到分析流程集成验证 | 不负责单纯运行既有代码,也不把分析项目中的每个 `_functions.R` 或 helper 都泛化成 Package。若主要验收标准是科学结果正确、缓存可恢复或报告可交付,应交给 `bensz-rmd-rules`;仅在其中出现具有独立复用价值的组件时参与协作。 ## 流程 ### 输入 确认主要交付物、复用范围(当前分析/当前项目/跨项目/公开 Package)、任务类型(函数/脚本/Package、新建/兼容修改)、数据与公开 API、对象生命周期、返回/错误、`output.dir`/`cache.dir` 职责、R/平台/依赖/硬件/复现约束,并读取现有 `DESCRIPTION`、`NAMESPACE`、`R/`、`tests/`、`src/`、`renv.lock` 与项目指令。不得读取凭据、环境文件或无关数据。保守默认不得改变公共 API;会改变类系统、覆盖、依赖或性能语义时先声明假设。 ### 执行步骤 #### 1. 盘点现状与定义契约 先判定主要验收对象:是“函数/API/Package 自身的可复用契约”,还是“分析结果、数据流与报告”。再确认目标代码是否需要独立版本、稳定公共接口、跨项目复用或独立测试;仅服务当前分析单元的 helper 即使写在 `.R` 文件中,也仍由 `bensz-rmd-rules` 管理。 确认本 Skill 应主导后,读取调用链和测试,列出不变量、I/O、错误、副作用、并行及兼容边界。已有项目保持命名、类系统和公开 API,除非用户授权迁移。混合任务记录主 Skill、组件边界与交接点,避免两个 Skill 同时改写同一层职责。 #### 2. 选择类系统并建立最小对象模型 对象确有身份、不变量、状态或多步生命周期时才建类;无状态工具保持普通函数: - S3:轻量值对象、单分派和多数分析型 API。 - S4:需要正式 slot、严格验证、多分派或 Bioconductor 互操作。 - R6:需要引用语义、可变资源或服务式生命周期。 类 API 至少有构造器、验证器、摘要打印和泛型/方法;不要让调用方拼内部结构。详见 [references/class-api-design.md](references/class-api-design.md)。 #### 3. 实现输出与缓存契约 自动落盘显式提供 `output.dir`;重要中间产物另...

Details

Author
huangwb8
Repository
huangwb8/skills
Created
8 months ago
Last Updated
yesterday
Language
Python
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category