CtrlK
BlogDocsLog inGet started
Tessl Logo

hns-lsel-curator

Local Self-Evolution Loop (LSEL) curator — the CLUSTER + drain engine for the GOOS-local PROPOSE→APPLY seam closure (SPEC-LSEL-LOCAL-EVOLUTION-001). Companion-offset drain of .moai/lessons-inbox.jsonl with a drain-side severity filter that drops the ~65% Bash-timeout/sandbox noise, event_key clustering with a frequency gate, and a Generative-Agents-style 1-10 importance score. Candidates stage at .moai/state/lsel/clusters.json. M1 = drain only (NO PROPOSE, NO APPLY, NO memory/ writes).

52

Quality

58%

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 ./.claude/skills/hns-lsel-curator/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

56%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.

The body is action-rich with concrete commands and real validation checkpoints, but it is over-long, repeats caveats across milestone sections, and inlines reference-grade material (schemas, category lists) that should live in separate files given nothing is bundled.

Suggestions

Extract the proposal payload schema, CSA forced-gate categories, and reflect.sh mechanics into reference files under ./references/ and link to them one level deep, reducing the inline SKILL.md to an overview.

Deduplicate the companion-offset / ephemeral-live-clusters.json caveat — state it once in the drain section and reference it, rather than repeating it in session-drain, PROPOSE, and verification.

Trim milestone history and SPEC-citation prose (dates, 'stalled for 3 weeks', 'died with its owning session') to the minimum needed to justify a design choice; move time-sensitive version/date detail to a deprecated/old-patterns section.

DimensionReasoningScore

Conciseness

At ~383 lines the body is noticeably verbose: it restates the ephemeral-live-file / companion-offset caveat 3+ times, narrates milestone history ('died with its owning session (2026-08-04)', 'stalled for 3 weeks'), and carries many date-stamps and SPEC citations that pad without aiding action.

2 / 5

Actionability

Provides concrete executable invocations and flags — 'drain.sh --inbox <path> --state-dir <dir>', 'session_drain.sh', 'reflect.sh --memory-dir <m> [--threshold 150]' — plus runnable jq verification snippets; minor gaps (placeholder <drain-start-timestamp>, scripts described rather than bundled).

4 / 5

Workflow Clarity

The drain is a numbered 7-step pipeline followed by an explicit 'Verification' section with a pass/fail jq predicate ('must print: true') and a mutant-probe feedback loop, and REFLECTION has a no-op gate; the multi-stage M1–M4 layout scatters rather than consolidates the sequence, keeping it just below 5.

4 / 5

Progressive Disclosure

No bundle files exist (references/, scripts/, assets/ absent), so all content — proposal payload schema tables, CSA forced-gate category lists, reflect.sh mechanics — is inlined; section headers give structure but material that belongs in separate reference files is not split out.

3 / 5

Total

13

/

20

Passed

Description

60%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.

The description is highly specific and distinctive with a clear concrete action set, but it is written in internal project jargon with no natural user-facing trigger terms and omits any 'Use when…' trigger guidance, capping completeness at 3.

Suggestions

Add an explicit 'Use when…' trigger clause so Claude knows when to invoke this skill (e.g., 'Use when draining or clustering lessons-inbox stubs, or when asked about the LSEL drain/cluster pipeline').

Replace or supplement internal jargon ('PROPOSE→APPLY seam closure', 'companion-offset', 'event_key clustering') with natural trigger phrases and synonyms a user would actually say.

Lead with the user-facing capability ('drains and clusters tool-failure lessons') before the SPEC/engine framing so the trigger surface is scannable.

DimensionReasoningScore

Specificity

Names multiple concrete actions — 'Companion-offset drain', 'drain-side severity filter that drops the ~65% Bash-timeout/sandbox noise', 'event_key clustering with a frequency gate', '1-10 importance score', 'Candidates stage at .moai/state/lsel/clusters.json' — covering the full drain→cluster→score→stage pipeline comprehensively.

5 / 5

Completeness

It clearly states the 'what' (drain/cluster/stage candidates, M1 scope) but contains no 'Use when…' clause or equivalent explicit trigger guidance, which per the rubric caps completeness at 3.

3 / 5

Trigger Term Quality

The terms are almost entirely internal jargon ('LSEL', 'CLUSTER + drain engine', 'PROPOSE→APPLY seam', 'companion-offset', 'event_key', 'Generative-Agents-style'); only 'drain' and 'cluster' act as semi-generic keywords a user might say, with no synonym or natural-phrase coverage.

2 / 5

Distinctiveness Conflict Risk

The niche is extremely specific — 'LSEL curator', 'CLUSTER + drain engine', concrete .moai paths and SPEC references — making it very unlikely to trigger for an unrelated skill.

5 / 5

Total

15

/

20

Passed

Validation

93%

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

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

allowed_tools_field

'allowed-tools' contains unusual tool name(s)

Warning

Total

15

/

16

Passed

Repository
modu-ai/moai-adk
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.