CtrlK
BlogDocsLog inGet started
Tessl Logo

slack-gif-creator

Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y".

81

4.65x
Quality

75%

Does it follow best practices?

Impact

93%

4.65x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./plugins/all-skills/skills/slack-gif-creator/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

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

Highly actionable and well-structured as a working toolkit reference: concrete code for every primitive, explicit Slack constraints, and a sensible design-build-validate-iterate workflow. Its weaknesses are length-related: duplicated size-limit guidance, four overlapping composition examples, and a monolithic single-file layout where the per-primitive API details belong in a separate reference file.

Suggestions

Move the per-primitive API listings for the 14 animation templates into a single reference file (e.g., references/primitives.md), keeping SKILL.md to the Slack constraints, validators, one or two representative primitives, and the composition workflow — this would address both the progressive disclosure and conciseness gaps.

Deduplicate the emoji size-limit guidance: the strategies in 'Slack's Requirements' ('Limit to 10-15 frames total... Avoid gradients') are repeated nearly verbatim in 'Optimization Strategies'; keep one canonical section and cross-reference it.

Trim the four composition demonstrations (the inline 'compose primitives freely' pattern plus three 'Example Composition Patterns') to one or two, and define or import the helper functions they rely on (create_blank_frame, draw_emoji, math, Image) so the examples are executable as written.

DimensionReasoningScore

Conciseness

The body is mostly efficient code examples, but there is real duplication and padding: the emoji size strategies appear twice ('Limit to 10-15 frames total... Use 32-48 colors maximum' in Slack's Requirements, repeated nearly verbatim in Optimization Strategies), four separate composition demonstrations exist, and 'creative freedom' boilerplate is stated three times ('Complete creative freedom is available', 'The goal is creative freedom within Slack's technical constraints'). This fits anchor 3 ('mostly efficient but includes some unnecessary explanation or could be tightened'), short of anchor 4's 'minor instances' of over-explanation.

3 / 5

Actionability

Concrete, near-executable code for every validator, primitive, and helper (e.g., 'frames = create_shake_animation(object_type='emoji', ...)', 'passes, info = check_slack_size('emoji.gif', is_emoji=True)'). Minor gaps keep it at anchor 4: some examples use undefined helpers ('create_blank_frame', 'draw_emoji', 'bg_color' in the compose pattern) or omit imports (math, Image), so it is not fully copy-paste ready as anchor 5 requires.

4 / 5

Workflow Clarity

A clear five-step sequence exists ('Understand the creative vision... Design the animation... Apply primitives... Validate constraints... Iterate if needed') with validation built in (validators section, 'check_slack_size('reaction.gif', is_emoji=True)' closing examples, and an over-size feedback loop in Optimization Strategies). It sits at anchor 4 rather than 5 because the checkpoints are distributed rather than an explicit validate-fix-revalidate loop, and the workflow itself ('What should happen? What's the mood?') is high-level.

4 / 5

Progressive Disclosure

Section headers are clear and consistent, but everything — including ~300 lines of per-primitive API detail for 14 templates — is inlined in a single ~645-line SKILL.md with no separate reference files (no references/, scripts/, or assets/ bundle exists, and the core/ and templates/ modules referenced by imports cannot be verified). This matches anchor 3: 'content that should be separate is inline', short of anchor 4's 'most content is appropriately placed'.

3 / 5

Total

14

/

20

Passed

Description

87%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: it states concrete capabilities in third person, defines a clear Slack-GIF niche, and includes an explicit 'applies when' clause with a natural user quote as the trigger. The only weakness is slightly incomplete keyword coverage (no file-extension or common synonyms like 'reaction GIF').

DimensionReasoningScore

Specificity

Names the domain ('creating animated GIFs optimized for Slack') and several concrete capabilities ('validators for size constraints', 'composable animation primitives'). It lists several specific actions with minor gaps — it does not mention helpers like text rendering, palettes, or effects — matching anchor 4 rather than anchor 5's comprehensive coverage, and it is clearly above anchor 3's '1-2 concrete actions'.

4 / 5

Completeness

Explicitly answers both parts: what ('Toolkit for creating animated GIFs optimized for Slack, with validators... and composable animation primitives') and when ('This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like...'). This matches anchor 5's 'clearly and explicitly answers both what AND when with concrete trigger phrases'; anchor 4 would require a less explicit 'when' clause.

5 / 5

Trigger Term Quality

Good natural keyword coverage: 'animated GIFs', 'emoji animations', 'Slack', and a realistic user quote ('make me a GIF for Slack of X doing Y'). A few natural terms are missing (e.g., '.gif' file extension, 'reaction GIF', 'emoji'), so it fits anchor 4 rather than anchor 5's synonym-and-extension completeness, while clearly exceeding anchor 3's generic 'Works with PDF files' level.

4 / 5

Distinctiveness Conflict Risk

The Slack-specific niche (GIFs optimized for Slack's size/dimension constraints) with distinct trigger phrases ('GIF for Slack', 'emoji animations for Slack') gives minimal conflict risk with other skills, matching anchor 5's 'clear niche with distinct triggers'. At worst there is minor overlap with a hypothetical generic GIF-creation skill, but the Slack scoping keeps it above anchor 4.

5 / 5

Total

18

/

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 (648 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
davepoon/buildwithclaude
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.