Reactive streams and event-driven programming in Golang using samber/ro — ReactiveX implementation with 150+ type-safe operators, cold/hot observables, 5 subject types (Publish, Behavior, Replay, Async, Unicast), declarative pipelines via Pipe, 40+ plugins (HTTP, cron, fsnotify, JSON, logging), automatic backpressure, error propagation, and Go context integration. Apply when using or adopting samber/ro, when the codebase imports github.com/samber/ro, or when building asynchronous event-driven pipelines, real-time data processing, streams, or reactive architectures in Go. Not for finite slice transforms (-> See golang-samber-lo skill).
84
82%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Quality
Discovery
100%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
This is an excellent skill description that is highly specific, comprehensive, and well-structured. It lists concrete capabilities, includes abundant natural trigger terms, explicitly states when to apply the skill, and even provides a negative boundary to prevent conflicts with a related skill. The only minor concern is that the description is quite dense, but the information is all relevant and useful for skill selection.
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | The description lists numerous specific concrete capabilities: 150+ type-safe operators, cold/hot observables, 5 named subject types, declarative pipelines via Pipe, 40+ plugins with examples (HTTP, cron, fsnotify, JSON, logging), automatic backpressure, error propagation, and Go context integration. | 3 / 3 |
Completeness | Clearly answers both 'what' (reactive streams with specific operators, subjects, plugins, etc.) and 'when' with an explicit 'Apply when...' clause covering library usage, import detection, and use-case triggers. Also includes a helpful negative boundary ('Not for finite slice transforms') with a cross-reference. | 3 / 3 |
Trigger Term Quality | Excellent coverage of natural trigger terms: 'samber/ro', 'ReactiveX', 'reactive streams', 'event-driven', 'observables', 'backpressure', 'asynchronous', 'real-time data processing', 'streams', 'reactive architectures', 'Go', 'Golang', and the import path 'github.com/samber/ro'. These are terms users would naturally use. | 3 / 3 |
Distinctiveness Conflict Risk | Highly distinctive — it targets a specific Go library (samber/ro) with a clear niche in reactive/event-driven programming. The explicit negative boundary distinguishing it from the golang-samber-lo skill further reduces conflict risk. | 3 / 3 |
Total | 12 / 12 Passed |
Implementation
64%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This is a solid, well-organized skill that provides actionable guidance for using samber/ro with executable code examples, comprehensive operator tables, and clear decision frameworks for when to use ro vs lo. Its main weaknesses are some redundancy between sections (common mistakes and best practices overlap), the lack of bundle files to back up the four referenced guide documents, and the absence of explicit end-to-end workflow patterns with validation steps in the main file.
Suggestions
Consolidate the 'Common Mistakes' and 'Best Practices' sections — they overlap significantly (e.g., error handling, typed Pipe, bounding streams, preferring lo). Merge into a single 'Guidelines & Pitfalls' table to save tokens.
Provide the referenced bundle files (subjects-guide.md, operators-guide.md, plugin-ecosystem.md, patterns.md) or remove the references — currently they point to non-existent files.
Add a concrete end-to-end workflow example showing the full lifecycle: create observable → chain operators → subscribe → handle shutdown/cleanup, with explicit verification steps (e.g., checking for goroutine leaks).
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The skill is generally well-structured but includes some unnecessary explanation that Claude would already know (e.g., the 'Why samber/ro' section explaining why channels are unwieldy, the lo vs ro comparison table is somewhat redundant given the scenario table above it). The common mistakes and best practices sections overlap significantly. However, the tables are efficient and most content earns its place. | 2 / 3 |
Actionability | The core concepts section provides fully executable, copy-paste ready Go code with clear output comments. The operator quick reference table gives concrete function names. Installation is a single command. The common mistakes table provides specific fixes with actual function names and patterns. | 3 / 3 |
Workflow Clarity | The skill covers a library with many operators rather than a multi-step destructive workflow, so explicit validation checkpoints are less critical. However, the progression from cold→hot observables and the decision tables provide reasonable workflow guidance. The missing piece is that there's no explicit workflow for building a pipeline end-to-end (create → transform → subscribe → cleanup) with validation/verification steps, and the 'bound infinite streams' advice lacks a concrete sequential workflow. | 2 / 3 |
Progressive Disclosure | The skill references four separate guide files (subjects-guide.md, operators-guide.md, plugin-ecosystem.md, patterns.md) which is good structure, but no bundle files are provided, meaning these references are broken/unverifiable. The main SKILL.md itself is fairly long with inline tables that could potentially be in reference files, though the inline content is useful as a quick reference. Cross-references to other skills are well-signaled. | 2 / 3 |
Total | 9 / 12 Passed |
Validation
81%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 9 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
metadata_field | 'metadata' should map string keys to string values | Warning |
frontmatter_unknown_keys | Unknown frontmatter key(s) found; consider removing or moving to metadata | Warning |
Total | 9 / 11 Passed | |
e9761db
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.