CtrlK
BlogDocsLog inGet started
Tessl Logo

configure-notifications

Configure notification integrations (Telegram, Discord, Slack) via natural language

51

Quality

56%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

High

Do not use without reviewing

Fix and improve this skill with Tessl

tessl review fix ./skills/configure-notifications/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

52%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 highly actionable with concrete, validated commands and well-sequenced interactive workflows including test-and-debug steps. However, it is severely monolithic: three near-duplicate provider walkthroughs plus two extra subsystems (hook templates, custom integrations) all live inline in one ~1,200-line file with no progressive disclosure, and the cross-section repetition wastes significant context tokens.

Suggestions

Move each provider guide (Telegram, Discord, Slack), the template-variables reference, and the custom-integration wizard into separate reference files (e.g. references/telegram.md), leaving SKILL.md as a routing overview with one-level-deep, clearly signaled links.

Deduplicate the shared elements — the events multiSelect list, the 'How This Skill Works' preamble, and the detect-existing-config jq scaffolding — into a single shared section referenced by each provider flow.

Replace non-executable placeholders like '$COMMAND "${ARGS[@]//{{event}}/test}"' and the AUTH_HEADER curl snippet with complete, copy-paste-ready commands, and define or inline what validateTemplate() involves.

DimensionReasoningScore

Conciseness

The ~1,200-line body repeats near-identical scaffolding across the Telegram, Discord, and Slack sections — each restates 'This is an interactive, natural-language configuration skill...', a config-detection jq block, and the identical four-option events multiSelect list (repeated 4+ times verbatim). This is noticeably verbose with several padded/redundant sections (anchor 2), not 3, because the redundancy is systematic rather than occasional; not 1 because most content is concrete commands rather than explanations of concepts Claude already knows.

2 / 5

Actionability

Concrete, mostly copy-paste-ready jq/curl blocks with exact validation patterns ('digits:alphanumeric', 'https://hooks.slack.com/services/') and HTTP error diagnostics for 401/400/403. It is not a 5 because a few snippets are non-executable as written (e.g. '${AUTH_HEADER:+"-H \"$AUTH_HEADER\""}' and '$COMMAND "${ARGS[@]//{{event}}/test}"') and the Discord bot-API test path is absent; not a 3 because the bulk of the guidance is genuinely executable with minor gaps only.

4 / 5

Workflow Clarity

Each provider flow is clearly sequenced (Steps 1-9/10) with routing, existing-config detection, input validation with re-ask loops, a test step, and error-recovery guidance (401 Unauthorized -> invalid token; 400 chat not found -> wrong chat ID). It is not a 5 because some checkpoints are implicit — 'Validate the template using validateTemplate()' references an undefined function, and the event-specific disable snippet only shows one example rather than a complete loop.

4 / 5

Progressive Disclosure

The skill is a single monolithic ~1,200-line SKILL.md with no bundle files at all; per-provider setup guides, the template-variable reference tables, the Slack mention-format table, and the entire custom-integration wizard are all inlined content that clearly belongs in separate reference files. This matches anchor 2 ('content that clearly belongs in separate files is inlined') — not 3, because there are zero external references and the inlining is wholesale, though the internal headers and routing section keep it above anchor 1's 'no structure'.

2 / 5

Total

12

/

20

Passed

Description

61%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 concise, specific about the three providers, and distinctive, but it is missing an explicit 'when to use' trigger clause, which caps its completeness and limits its natural-term coverage. It also undersells the skill's actual scope (hook templates, custom webhooks/CLI integrations are covered in the body but not mentioned).

Suggestions

Add a 'Use when...' clause, e.g. 'Use when the user wants to set up alerts or notifications for Telegram, Discord, or Slack, or mentions webhooks, bot tokens, or notification setup.'

Include natural synonyms users say such as 'alert me', 'notify me', or 'ping me when a session ends' to broaden trigger coverage.

Reflect the body's fuller scope (message templates, custom webhook/n8n/CLI integrations) so the description matches what the skill actually does.

DimensionReasoningScore

Specificity

The description names the domain ('notification integrations') and the three concrete providers (Telegram, Discord, Slack) plus the interaction mode ('via natural language'), but 'Configure' is a single generic verb — the skill's other capabilities (message templates, custom webhooks, CLI integrations) are absent, matching anchor 3 ('domain and 1-2 concrete actions, but not comprehensive'). It is not a 4 because it does not list several specific actions, and not a 2 because the domain is concretely named beyond a generic mention.

3 / 5

Completeness

The 'what' is clear (configure notification integrations for three named providers via natural language), but there is no 'Use when...' clause or equivalent explicit trigger guidance — the rubric explicitly caps completeness at 3 in that case. It is not a 2 because the 'what' is specific rather than vague.

3 / 5

Trigger Term Quality

'notification', 'Telegram', 'Discord', and 'Slack' are exactly the terms a user would naturally say ('set up telegram notifications'). It falls short of anchor 5 because common variations like 'alert me', 'notify me', 'ping', or 'webhook' are missing, and it exceeds anchor 3 because the provider keywords present are precisely the natural ones.

4 / 5

Distinctiveness Conflict Risk

Notification setup for three named chat platforms is a clear niche with distinct triggers and only minor overlap risk with adjacent configuration skills. It is not a 5 because the description lacks explicit trigger phrases that would make it fully unambiguous, and not a 3 because the named providers make it substantially more distinct than 'works with document files'.

4 / 5

Total

14

/

20

Passed

Validation

87%

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

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (1215 lines); consider splitting into references/ and linking

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

14

/

16

Passed

Repository
Yeachan-Heo/oh-my-claudecode
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.