CtrlK
BlogDocsLog inGet started
Tessl Logo

generate-voice-guide

Generate a personal voice guide for X (Twitter) and/or LinkedIn by scanning a user's past posts and iteratively refining with sample-and-feedback loops. Produces a structured markdown voice guide that sibling skills (create-x-content, create-linkedin-content) consume to draft in-voice posts. Different from brand-voice-extractor, which analyses company blogs/landing pages — this skill is for personal social voice.

62

Quality

78%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./skills/brand/capabilities/generate-voice-guide/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

77%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 highly actionable, well-sequenced agent workflow with concrete tool IDs, defaults, feedback loops, and error/fallback handling — workflow clarity and actionability are excellent. The main costs are token efficiency (duplicated config schema, thrice-stated iteration floor) and a dangling reference to template files that are not part of the skill bundle.

Suggestions

Remove the duplicate config.json schema: keep it only in the 'Config File' section and have Phase 4 step 3 point to it, saving ~10 lines.

State the 5-iteration floor once (the stopping rule) and trim its re-statement in Tips, or fold the Tips item into the stopping rule.

Either bundle the voice-x.md/voice-linkedin.md structural templates in a references/ directory with clear pointers, or drop the reference wording and rely solely on the inline 'Template Skeleton' so nothing dangles.

DimensionReasoningScore

Conciseness

The body is mostly efficient and does not explain concepts Claude already knows, but it could be tightened: the config.json schema appears twice (Phase 4 step 3 and the 'Config File' section), and the 5-iteration floor is stated three times (stopping rule, Tips, and the --iterations-min default). This matches anchor 3 ('mostly efficient but includes some unnecessary explanation or could be tightened') rather than 4, since the duplication is more than a minor instance.

3 / 5

Actionability

Guidance is fully executable for an agent-executed, instruction-only skill: exact Apify actor IDs ('apidojo/twitter-user-tweets-scraper', 'harvestapi/linkedin-profile-posts'), the required env var, concrete defaults (50 X / 25 LinkedIn posts), verbatim copy-paste commands ('/generate-voice-guide --profile @GooseworksAI --platforms x,linkedin --output ~/.goose-skills/voice-guides'), exact output paths, a JSON config update procedure, and verbatim feedback prompts. Per the rubric's code-vs-instruction note, absence of code is not penalized when guidance is this actionable; specific examples cover the common cases, matching anchor 5.

5 / 5

Workflow Clarity

The four phases are clearly sequenced with an explicit feedback loop (generate 3 samples → show → ask for feedback → revise → repeat), an explicit stopping rule with a push-back script, an error path for a missing APIFY_API_TOKEN, and a fallback when no scraper is available. This matches anchor 5 (clear sequence, explicit validation via the user feedback loop, error recovery); not 4 because checkpoints and recovery paths are explicit rather than minor-gapped.

5 / 5

Progressive Disclosure

No bundle files exist (no references/, scripts/, or assets/ directories), so this is a ~180-line single-file skill with good section headers. However, Phase 2 references 'voice-x.md / voice-linkedin.md template references' that are neither bundled nor clearly resolved (the Dependencies section says they are external and 'not required to run'), and content such as the duplicated config schema and template skeleton is inlined where a reference file could carry it. This fits anchor 3 ('references present but not clearly signaled; content that should be separate is inline') better than 4, since the template references cannot be navigated to.

3 / 5

Total

16

/

20

Passed

Description

70%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, specific description with a clearly stated purpose, concrete actions, natural trigger terms, and excellent explicit differentiation from the closest competing skill. Its main weakness is the absence of any 'Use when…' clause or equivalent explicit trigger guidance, which leaves the 'when to use' half of completeness only weakly implied.

Suggestions

Add an explicit 'Use when…' clause with concrete triggers, e.g. 'Use when a user wants a voice guide for their (or someone else's) X/LinkedIn posts, wants to write in their own voice, or when a content-drafting skill needs a voice guide that doesn't exist yet.'

Include a few more natural phrasings users would actually say (e.g. 'mimic my writing style', 'ghostwrite my posts', 'capture my voice') to broaden trigger-term coverage.

Optionally name one or two concrete guide components (persona, dos/don'ts, hook patterns) to tighten the gap between 'several specific actions' and comprehensive coverage.

DimensionReasoningScore

Specificity

Concrete actions are explicit: 'Generate a personal voice guide for X (Twitter) and/or LinkedIn by scanning a user's past posts and iteratively refining with sample-and-feedback loops' and 'Produces a structured markdown voice guide that sibling skills… consume'. Several specific actions are named (scan posts, iterative refinement, produce markdown guide), matching anchor 4; not a 5 because the coverage of what the guide contains and how it is used is summarized rather than comprehensive.

4 / 5

Completeness

The 'what' is clear (generate voice guides from past posts for X/LinkedIn with sample-and-feedback refinement), but there is no 'Use when…' clause or equivalent explicit trigger guidance. Per the judging guidelines, a missing 'Use when…' clause caps completeness at 3; the brand-voice-extractor differentiation only weakly implies 'when', which matches anchor 3 exactly ('clear what but when missing or only weakly implied').

3 / 5

Trigger Term Quality

Natural user-facing terms are present — 'voice guide', 'X (Twitter)', 'LinkedIn', 'past posts', 'in-voice posts', 'personal social voice'. Good keyword coverage fits anchor 4; not 5 because common variations users might say ('write like me', 'mimic my writing style', 'ghostwrite', 'Twitter handle') are missing, though not merely technical jargon, so above 3.

4 / 5

Distinctiveness Conflict Risk

The description explicitly carves out a niche and disambiguates the nearest neighbor: 'Different from brand-voice-extractor, which analyses company blogs/landing pages — this skill is for personal social voice', and names the consuming sibling skills (create-x-content, create-linkedin-content). This is a clear niche with distinct triggers and minimal conflict risk, matching anchor 5.

5 / 5

Total

16

/

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

frontmatter_unknown_keys

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

Warning

Total

15

/

16

Passed

Repository
gooseworks-ai/goose-skills
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.