Improves your SKILL.md using tessl skill review plus validation and context. Reads skill bundle (SKILL.md + related files), validates syntax, explains WHY changes help, catches mistakes. Use when improving your own skill, skill file, skill description, reviewing skill quality, skill scoring, making your skill better, or learning the skill rubric.
89
Quality
100%
Does it follow best practices?
Impact
88%
1.25xAverage score across 12 eval scenarios
A developer has created a notification-sender skill to help agents send alerts through various channels. The skill file has grown large over time as more examples and configuration options were added inline. Users have noticed that the skill takes a long time to parse and the core instructions are buried under walls of examples.
A reference file (REFERENCE.md) already exists in the same skill directory and contains detailed examples, template configurations, and provider-specific options. The developer wants to slim down the main SKILL.md so it remains focused and scannable, while keeping the detailed reference material accessible.
Analyze the skill bundle below and produce a set of recommendations to reduce the length of SKILL.md by using the existing reference file more effectively. Include a revised version of SKILL.md in your output.
Produce two files:
recommendations.md — explaining what content should move where and why, with before/after examples for each proposed changeSKILL.md — the revised, shorter version of the skill fileThe following files are provided as inputs. Extract them before beginning.
Send alerts through Slack, email, and PagerDuty using our internal notification service.
To send a Slack message, use the notify CLI:
notify slack --channel "#ops-alerts" --message "Deployment complete" --severity infoAvailable severity levels: info, warning, critical. Each maps to a different color in the Slack message:
info → blue sidebarwarning → yellow sidebarcritical → red sidebar, also triggers @here mentionThread replies can be sent using --thread-ts <timestamp> to keep alert threads organized.
For attachments, use --attachment <file-path>. Supported formats: PNG, PDF, TXT, JSON (max 5MB).
Slack rate limits: 1 message/second per channel. If sending bursts, add --delay 1200 (milliseconds) between calls.
Emoji reactions can be added after the fact with notify slack react --channel "#ops-alerts" --ts <ts> --emoji thumbsup.
To send email:
notify email --to "oncall@company.com" --subject "Alert: High CPU" --body "CPU usage exceeded 90% on prod-web-01"HTML bodies are supported with --html-body <file>. Plain text is preferred for simple alerts.
CC and BCC: use --cc "manager@company.com" and --bcc "audit@company.com" for copies.
Email templates are stored in /etc/notify/templates/. Available templates:
incident.html — for incident notificationsdeployment.html — for deployment summariesweekly_report.html — for weekly digest emailsTemplate variables use {{variable_name}} syntax. Pass them with --var key=value.
Reply-to can be set with --reply-to <address> to route responses to a different inbox.
SMTP configuration is auto-loaded from environment. If sending fails, check NOTIFY_SMTP_HOST and NOTIFY_SMTP_PORT vars.
To trigger a PagerDuty incident:
notify pagerduty --service "prod-payments" --summary "Payment processor down" --severity criticalSeverity levels map to PagerDuty urgency: info→low, warning→medium, critical→high.
Dedup keys prevent duplicate incidents: --dedup-key <string>. Use the same key to resolve an incident.
To resolve: notify pagerduty resolve --dedup-key <string>.
Custom details can be attached: --details '{"host": "prod-web-01", "region": "us-east-1"}'.
PagerDuty escalation policies are configured in the PagerDuty UI, not here.
Send to multiple channels at once:
notify multi --channels slack,email,pagerduty \
--slack-channel "#ops-alerts" \
--email-to "oncall@company.com" \
--pagerduty-service "prod-api" \
--message "Critical: database unreachable" \
--severity criticalThis sends to all specified channels simultaneously.
If a notification fails, notify exits with code 1 and prints an error to stderr. Common errors:
ECONNREFUSED — SMTP or API endpoint unreachableRATE_LIMIT — Too many requests; add delayAUTH_FAILED — Check API keys in environmentRetry logic: --retry 3 --retry-delay 5 retries up to 3 times with 5-second delays.
See REFERENCE.md for complete CLI reference and advanced configurations. =============== END FILE ===============
=============== FILE: skills/notification-sender/REFERENCE.md ===============
| Flag | Description | Default |
|---|---|---|
--channel | Target Slack channel | required |
--message | Message text | required |
--severity | info/warning/critical | info |
--thread-ts | Thread parent timestamp | — |
--attachment | File path to attach | — |
--delay | ms delay for rate limiting | 0 |
--emoji | Reaction emoji (with react subcommand) | — |
info → blue sidebarwarning → yellow sidebarcritical → red sidebar + @here mention1 message/second per channel. Use --delay 1200 for bursts.
| Flag | Description | Default |
|---|---|---|
--to | Recipient address | required |
--subject | Email subject | required |
--body | Plain text body | — |
--html-body | HTML body file path | — |
--cc | CC addresses | — |
--bcc | BCC addresses | — |
--reply-to | Reply-to address | — |
--var | Template variable (key=value) | — |
incident.html — for incident notificationsdeployment.html — for deployment summariesweekly_report.html — for weekly digest emailsTemplates are in /etc/notify/templates/. Variables use {{variable_name}} syntax.
| Flag | Description | Default |
|---|---|---|
--service | PagerDuty service name | required |
--summary | Incident summary | required |
--severity | info/warning/critical | warning |
--dedup-key | Deduplication key | — |
--details | JSON details object | — |
info → low urgencywarning → medium urgencycritical → high urgencynotify pagerduty resolve --dedup-key <string>| Flag | Description |
|---|---|
--channels | Comma-separated: slack,email,pagerduty |
--message | Shared message for all channels |
--severity | Shared severity for all channels |
| Code | Meaning | Fix |
|---|---|---|
| ECONNREFUSED | Endpoint unreachable | Check NOTIFY_SMTP_HOST, NOTIFY_API_URL |
| RATE_LIMIT | Too many requests | Add --delay |
| AUTH_FAILED | Bad credentials | Check API keys |
--retry <n> and --retry-delay <seconds> for automatic retries.
NOTIFY_SMTP_HOST — SMTP server hostnameNOTIFY_SMTP_PORT — SMTP port (default 587)NOTIFY_SLACK_TOKEN — Slack bot tokenNOTIFY_PD_KEY — PagerDuty integration key
=============== END FILE ===============Install with Tessl CLI
npx tessl i tessl-labs/skill-optimizerevals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
skills
skill-optimizer