CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

iii-stream

Durable real-time streams with a CRUD function surface plus reactive triggers that fire on item changes and WebSocket subscriber lifecycle — reach for it to build live backends without polling. iii-stream is deprecated (iii-stream) and will be removed in an upcoming release. Behavior is unchanged for now. Migration guide: https://iii.dev/docs/upgrading/migrate-from-streams

Quality

80%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./engine/src/workers/stream/skills/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

75%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-organized, information-dense reference that documents genuine non-obvious behavior (async trigger dispatch, join-as-auth-gate, adapter fan-out limits) with an executable binding example. It scores a uniform 4: consistently efficient and actionable, but with duplicated use-case bullets, no handler-side code examples, and no post-bind verification step.

Suggestions

Merge the "Reach for them when" bullets into the "When to Use" section — they currently repeat the same projection/audit-log/authorization scenarios.

Add a minimal handler example showing the `{ unauthorized: true }` return for `stream:join` and branching on the event for join/leave, since these are the skill's most distinctive behaviors.

Add a verification step after binding, e.g. confirming the trigger is registered or exercising one write to see it fire, to complete the workflow with a checkpoint.

DimensionReasoningScore

Conciseness

The body is dense with non-obvious specifics ("fire-and-forget, so the originating call returns before handlers finish", "empty-as-wildcard, exact-match-otherwise semantics") and explains nothing Claude already knows. It misses anchor 5 because the "Reach for them when" bullets largely restate the earlier "When to Use" bullets ("derived projections, audit logs, notifications" vs "a projection, audit log, or downstream notification"), and the deprecation notice repeats the frontmatter verbatim.

4 / 5

Actionability

The "How to bind" section gives a complete, executable `iii.registerTrigger({...})` TypeScript example with annotated config fields, the functions section enumerates concrete operations, and "call `iii get function info` on the trigger type or handler function id" is a specific command. Below anchor 5 because no handler implementation is shown — the `{ unauthorized: true }` return and `stream::update` op application are described but not demonstrated.

4 / 5

Workflow Clarity

The bind workflow is a clear numbered sequence ("1. Register a handler... 2. Register the trigger") followed by the matching semantics, and no destructive or batch operation triggers the anchor-3 cap. It stops short of anchor 5 because there is no verification step (e.g., confirming the trigger fires or the subscription was accepted) after binding.

4 / 5

Progressive Disclosure

The body (~70 lines) is cleanly sectioned (When to Use, Boundaries, Functions, Reactive triggers) and appropriately defers event-payload detail to the `iii get function info` command rather than inlining it; no bundle files exist to nest or bury. It is held below anchor 5 because at this length and API breadth a separate reference for event shapes or handler patterns would lighten the main file, and the guideline's under-50-line exception for a flat single file does not strictly apply.

4 / 5

Total

16

/

20

Passed

Description

75%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A solidly specific, third-person description that states concrete capabilities and includes an explicit trigger clause, scoring a uniform 4 across dimensions. Its main weaknesses are a single general use-when scenario, missing natural synonyms (pub/sub, presence, broadcast), and a deprecation sentence with an unsubstituted template placeholder ("deprecated (iii-stream)") that pads without adding capability information.

Suggestions

Fix the template artifact "iii-stream is deprecated (iii-stream)" — the parenthetical should name the replacement/successor rather than repeating the skill name.

Make the 'when' concrete with trigger phrases, e.g. "Use when building live dashboards, chat presence, notifications, or any backend that needs push updates instead of polling".

Name one or two concrete operations (e.g. "set, update, and delete items") to lift specificity from action categories to actions.

DimensionReasoningScore

Specificity

Lists several concrete capabilities — "a CRUD function surface", "reactive triggers that fire on item changes", "WebSocket subscriber lifecycle", "build live backends without polling" — with only minor gaps (no individual operations like set/update/delete are named). It is above anchor 3 (domain plus only 1-2 actions) but below anchor 5, which expects comprehensive coverage of specific actions.

4 / 5

Completeness

Both questions are answered: the "what" is the durable stream CRUD-plus-triggers surface, and "reach for it to build live backends without polling" is an explicit 'Use when'-equivalent clause, so the anchor-3 cap for missing trigger guidance does not apply. It is below anchor 5 because the 'when' is a single general scenario rather than a set of concrete trigger phrases.

4 / 5

Trigger Term Quality

Good natural-keyword coverage: "real-time streams", "live backends", "without polling", "WebSocket", "CRUD", "reactive triggers", "subscriber" are phrases a user building this kind of backend would plausibly say. It falls short of anchor 5 because common synonyms like "pub/sub", "broadcast", "presence", or "push updates" are absent.

4 / 5

Distinctiveness Conflict Risk

The specific combination of "CRUD function surface", "reactive triggers", and "WebSocket subscriber lifecycle" carves a clear niche distinct from generic state/KV or WebSocket skills. Minor overlap risk remains with sibling real-time or state-store skills, matching anchor 4 rather than the minimal-conflict anchor 5.

4 / 5

Total

16

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

iii-hq/iii

Path

engine/src/workers/stream/skills/SKILL.md

Reviewed

Table of Contents

Is this your skill?

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.