AiOffice 能力组合,开箱即用,为您的工作流提速
<skill_overview> 安全且可预测地序列化和反序列化 Rust 类型 设计请求/响应 DTO 解析 JSON 或配置文件 自定义字段名称或默认值 处理版本化架构 Serde GitHub Serde 文档 </skill_overview> 对 DTO 使用 #[derive(Serialize, Deserialize)] 保持 DTO 与域实体分离 优先选择强类型结构而不是值 <field_attributes> 使用#[serde(rename_all = "camelCase")] 用于 JSON API 使用 #[serde(default)] 用于可选字段 使用 #[serde(skip_serializing_if = "Option::is_none")] 省略 null 使用 #[serde(flatten)] 合并嵌套字段 #[derive(Serialize, Deserialize)] #[serde(rename_all = "camelCase")] struct UserDto { #[serde(default)] display_name: String, #[serde(skip_serializing_if = "Option::is_none")] email: Option, } </field_attributes> <validation_and_schema> 使用 #[serde(deny_unknown_fields)] 进行严格输入 通过枚举或标记变体版本有效负载</validation_and_schema> <custom_serialization> 仅在必要时使用serialize_with/deserialize_with 首选自定义格式的新类型包装器 </custom_serialization> <anti_patterns> 避免公共 API 的未标记枚举 避免手动将枚举映射到原始字符串 避免核心流程的 serde_json::Value </anti_patterns>
<skill_overview> 维护 Rust 安全保证并降低安全风险 使用不安全代码 处理不受信任的输入 FFI 边界 使用共享状态 Rustonomicon - 满足安全和不安全 Rustonomicon - 不安全的作用 </skill_overview> <safe_vs_unsafe> 更喜欢安全 Rust;除非绝对必要,否则避免不安全 保持不安全块小且经过良好审核 不安全代码所需的文档不变量 </safe_vs_unsafe> <unsafe_boundaries> 验证不安全函数的所有输入 将不安全代码包装在安全、最小的 API 中 切勿创建无效值(错误的枚举判别式、空 fn 指针) </unsafe_boundaries> <input_validation> 将外部输入视为不可信 解析为经过验证的类型(newtypes、枚举)无效输入时快速失败 </input_validation> <secrets_handling> 不记录机密或凭据 避免将机密保存在长期存在的字符串中 </secrets_handling> <anti_patterns> 没有不变量的大型不安全块 解析输入而不进行验证 记录敏感数据 </anti_patterns>
<skill_overview> 保持 Rust 代码快速,同时保持惯用语 优化热循环 减少分配 选择数据结构 衡量性能影响 Rust Book - 性能 </skill_overview> <zero_cost_abstractions> 自由使用迭代器和闭包;他们编译成高效的代码 在微优化之前更喜欢富有表现力、安全的代码和测量 </zero_cost_abstractions> 更喜欢借用 (&str, &[T]) 而不是分配 (String, Vec) 当大小已知时使用 Vec::with_capacity 进行预分配 避免不必要的克隆;尽可能传递引用 let mut buf = Vec::with_capacity(1024); <hot_paths> 避免在紧密循环中重复格式化或分配 尽可能重用缓冲区和临时值 </hot_paths> 使用实际数据大小进行基准测试 比较更改前后 <anti_patterns> 在分析之前进行优化 在每次迭代时进行克隆 无限增长集合 </anti_patterns>
<skill_overview> 为 Rust 服务实现结构化日志记录和跟踪 添加日志或诊断 围绕操作创建跨度 配置跟踪订阅者 确保不记录敏感数据 跟踪 GitHub </skill_overview> <events_and_spans> 对有持续时间的操作使用跨度 将事件用于时间点事实 将结构化字段附加到跨度和事件 </events_and_spans> <structed_logging> 优先选择结构化字段而不是字符串插值 使用一致的字段名称和类型跟踪::info!(user_id, action = "登录", "用户操作"); </structed_logging> 使用 #[instrument] 自动创建跨度 使用 #[instrument(skip(secret))] 跳过敏感字段 #[tracing::instrument(skip(password))] fnauthenticate(username: &str, password: &str) { /* ... */ } <subscriber_setup> 在 main 中尽早初始化订阅者 对日志级别使用基于环境的过滤 保持默认级别对于生产来说合理Tracing_subscriber::fmt().with_env_filter("info").init(); </subscriber_setup> <sensitive_data> <never_log> 密码和令牌 API 密钥和秘密 PII(不需要时) </never_log> </sensitive_data> <anti_patterns> 避免 println!用于生产日志记录避免信息日志中的高基数字段</anti_patterns>
<skill_overview> 在 Rust 中设计可预测且符合人体工程学的错误处理 设计错误类型 用结果传播错误 在 API 边界处映射错误 在恐慌和结果之间进行选择 The Rust Book - 错误处理 </skill_overview> <panic_vs_result> <use_panic_when> 不可恢复的、打破不变的失败 程序中的错误(逻辑错误) </use_panic_when> <use_result_when> 预期错误(未找到,验证) I/O 或外部依赖项失败 </use_result_when> </panic_vs_result> <error_types> 为模块或服务定义专用错误枚举 为自定义错误实现 Display 和 Error 使用 From 转换较低级别的错误 enum ServiceError { NotFound, InvalidInput, Io(std::io::Error) } </error_types> 使用 ?传播错误 使用map_err或自定义变体添加上下文 保留原始错误以进行调试 <boundary_mapping> 将内部错误映射到公共错误代码/消息 不要向客户端泄漏敏感详细信息 </boundary_mapping> <anti_patterns> 避免展开/期望正常流程 避免没有结构的纯字符串错误 不要对验证失败感到恐慌 </anti_patterns>
<skill_overview> 编写惯用的、可读的和可维护的 Rust 编写新的 Rust 代码 审查命名和样式 重构惯用模式 设置格式和 lint 规则 Rust API 指南 rustfmt Clippy </skill_overview> <naming_conventions> 函数、变量、模块、文件 类型、特征、枚举、枚举变体 常量、静态项 使用 as_* 进行廉价转换 使用 to_* 进行可能昂贵的转换</naming_conventions> 始终在提交之前运行Cargo fmt 优先使用尾随逗号以减少差异噪音 避免手动对齐;让 rustfmt决定 <ownership_and_borrowing> 更喜欢借用而不是克隆 将 &str 或 &[T] 作为只读输入 使用迭代器而不是基于索引的循环 当调用者应该拥有数据时返回拥有的值 fn find_user(name: &str, users: &[User]) -> Option<&User> { /* ... */ } </ownership_and_borrowing> <pattern_matching> 使用详尽匹配枚举 避免 catch-all _ 除非确实无法访问 使用 if let / while let 进行单变体匹配 </pattern_matching> <anti_patterns> 避免在非测试代码中展开/期望 不要克隆以静默借用检查器 避免大型可变共享状态 </anti_patterns>
<skill_overview> 使用 axum 构建健壮、类型化和可维护的 HTTP API 创建新的 axum 端点 设计路由器和路由组 使用请求数据提取器 安全地共享应用程序状态 实现中间件和错误映射 Axum GitHub Axum Extractors 文档 </skill_overview> 将 Router::route 与方法路由器一起使用以确保清晰 使用嵌套路由器对相关端点进行分组 优先使用类型化路径和查询提取器而不是手动解析 使用后备处理未知路由一致使用 axum::{routing::{get, post}, Router};
<skill_overview> 编写正确、无死锁的并发 Rust 代码 生成线程或任务 跨线程共享状态 使用通道进行消息传递 编写异步/等待代码 Rust 书 - 并发 Rust 书 - 异步/等待 </skill_overview> <message_passing> 优先选择通道以避免共享可变状态 通过通道移动所有权以强制安全使用 std::sync::mpsc;
<skill_overview> 构建健壮、高性能且文档齐全的 ASP.NET Core API 创建新的 API 端点 选择控制器与最小 API 设置身份验证/授权 实现缓存或速率限制 使用 OpenAPI 记录 API Microsoft Web API 文档 </skill_overview> <controllers_vs_minimal> <use_controllers_when> 具有复杂路由的大型应用程序 需要过滤器、模型绑定功能 团队更喜欢 MVC 结构 使用过滤器的复杂授权</use_controllers_when> <use_minimal_when> 微服务、小型 API 简单端点,无需太多中间件 性能关键型场景 偏好较少的仪式/样板 </use_minimal_when> <controller_example> [ApiController] [Route("api/[controller]")] public class UsersController : ControllerBase { private readonly IUserService _userService; }
分析创始人的业务和当前阶段,提供 3 个具体的、可操作的进入市场策略,以推动可衡量的市场渗透和客户获取。
Zarr 是一个 Python 库,用于通过分块和压缩来存储大型 N 维数组。应用此技能可实现高效的并行 I/O、云原生工作流程以及与 NumPy、Dask 和 Xarray 的无缝集成。
具有现代工具和最佳实践的高级后端完整工具包。
使用 pytest、fixtures、mocking、参数化和测试驱动开发实践在 Python 中实施稳健测试策略的综合指南。
有关分析、分析和优化 Python 代码以获得更好性能的综合指南,包括 CPU 分析、内存优化和实现最佳实践。
使用现代打包工具 pyproject.toml 创建、构建和分发 Python 包以及发布到 PyPI 的综合指南。
版本:生产就绪 ✅ 软件包:openai@6.7.0 最后更新:2025-10-25
使用现代框架、架构模式和最佳实践构建可扩展、可维护和生产就绪的 Node.js 后端应用程序的综合指南。
NeMo Guardrails 在运行时向 LLM 应用程序添加可编程安全导轨。
在工作流程中编写正确的 n8n 表达式的专家指南。
在 n8n 代码节点中编写 Python 代码的专家指南。