CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

google-chat-messages

Send Google Chat messages via incoming webhooks — text, rich cards (cardsV2), threaded replies. TypeScript types, card builder utility, widget reference inline. Use whenever the user wants to post to Google Chat from a script, build a chatbot reply, send a notification card, build a Google Chat webhook integration, or troubleshoot card / threading issues.

Quality

86%

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

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-structured, domain-rich body that teaches Google Chat's genuinely non-standard API details with concrete, mostly executable examples and clear asset navigation. The main defects are the non-existent `sendCard` function referenced in two sections, minor redundancy in the widget examples, and the absence of an explicit validation step in the workflow.

Suggestions

Fix the broken function references: replace `sendCard(...)` in the Threading and Common Patterns sections with the actual `sendWebhook(webhookUrl, card, options)` export (or add a sendCard convenience wrapper to webhook-sender.ts), and drop the `const response =` capture since the sender returns void.

Tighten the widget reference: merge the redundant decoratedText variants ("With wrap text" duplicates wrapText already shown in "Clickable") and consider moving the 20-row Known Icons table to a references/ file so SKILL.md stays an overview.

Add an explicit validation checkpoint to the workflow, e.g., Step 3a: send a simple test text message to confirm the webhook URL works before composing cards, echoing the 400-error guidance in Error Prevention.

DimensionReasoningScore

Conciseness

The body is dense with genuinely non-obvious domain knowledge (Google Chat's non-Markdown formatting `*bold*`/`<url|text>`, cardsV2 wrapper requirements, messageReplyOption threading) presented almost entirely as compact tables and code, with no padding about concepts Claude already knows. Not 5: some trim opportunities remain — the decoratedText section has six variants where "With wrap text" duplicates the wrapText usage already shown in "Clickable", and the 20-row icon table plus ~200-line widget reference make the file heavier than needed.

4 / 5

Actionability

Mostly executable guidance: concrete sendText call, complete cardsV2 message object, widget object literals, and full Common Patterns using buildCard. Not 5: the Threading and Common Patterns sections call `sendCard(...)`, which does not exist — webhook-sender.ts exports only `sendWebhook` and `sendText`, and card-builder.ts exports only `buildCard`/`buildText` — so those examples fail as written; also `const response = await sendCard(...)` captures a value the void-returning sender never provides. Not 3: the gaps are isolated and the correct function is available in the referenced assets.

4 / 5

Workflow Clarity

Clear three-step sequence (get webhook URL → choose message type via decision table → send using assets) with an Error Prevention table covering recovery ("Webhook returns 400 | Check JSON structure", "Thread replies not threading | Append &messageReplyOption=...") and a sender that surfaces error bodies. Not 5: the workflow itself lacks an explicit validation checkpoint (e.g., send a test message to verify the webhook URL before composing cards); not 3: error-cause→fix guidance is explicitly present even though it sits outside the step sequence.

4 / 5

Progressive Disclosure

Scored against the actual bundle: all three assets (types.ts, card-builder.ts, webhook-sender.ts) exist, are referenced one level deep, and are clearly signaled both in Step 3 and in a dedicated Asset Files table. Not 5: the ~200-line inline widget reference and 20-row icon table are candidates for a separate references/ file, leaving SKILL.md as an overview; not 3: structure, section headers, and navigation are good and every referenced path resolves.

4 / 5

Total

16

/

20

Passed

Description

92%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 strong description that explicitly states concrete capabilities (text, cardsV2, threaded replies) and pairs them with a clear, multi-scenario 'Use whenever' trigger clause in third person. The only weakness is moderate synonym coverage in trigger terms (no 'Google Workspace' or 'chat space' variants).

DimensionReasoningScore

Specificity

"Send Google Chat messages via incoming webhooks — text, rich cards (cardsV2), threaded replies" lists multiple concrete actions that comprehensively cover the webhook-sending domain (webhooks can only send, so text/cards/threads is the full capability surface), plus concrete artifacts ("TypeScript types, card builder utility, widget reference inline"). Not 4 because there are no meaningful coverage gaps for this domain; not below because every action named is specific, not generic.

5 / 5

Completeness

Clearly answers both: what ("Send Google Chat messages via incoming webhooks — text, rich cards (cardsV2), threaded replies") and when ("Use whenever the user wants to post to Google Chat from a script, build a chatbot reply, send a notification card...") with concrete trigger phrases. This matches the anchor-5 example structure exactly; an explicit 'Use when' clause with multiple concrete triggers cannot score higher or lower.

5 / 5

Trigger Term Quality

Triggers are natural and varied: "post to Google Chat from a script", "build a chatbot reply", "send a notification card", "build a Google Chat webhook integration", "troubleshoot card / threading issues" — phrasings users would actually say. Not 5 because a few natural synonyms are missing (e.g., "Google Workspace", "chat space", "chat notification"); not 3 because coverage goes well beyond a single keyword with five distinct, realistic trigger scenarios.

4 / 5

Distinctiveness Conflict Risk

"Google Chat messages via incoming webhooks" is a clear niche with product-specific triggers (cardsV2, threadKey-adjacent terms, webhook), giving minimal conflict risk with other skills. Not 4: the only mild overlap candidate ("build a chatbot reply") is anchored by the surrounding Google Chat context, so it does not rise to a real overlap concern.

5 / 5

Total

19

/

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

relative_links

Relative link issues: 1 missing

Warning

Total

15

/

16

Passed

Repository

jezweb/claude-skills

Path

plugins/integrations/skills/google-chat-messages/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.