metadata-check

star 69

Reviews short high-value strings — page titles, meta descriptions, schema description fields, FAQ answers, GitHub repo taglines, profile bios, social-card copy, and other metadata where Flesch and paragraph-level readability checks don't apply. Checks front-loading, concreteness, filler, active voice, title/description duplication, difficult words, SERP-truncation fit, and one-idea-per-field. Use when the user asks to review metadata, a tagline, a bio, or SEO strings, or proactively after generating any short string with audience-facing impact. Chained into by astro-seo, wp-readme-optimizer, github-repo, and github-profile for their metadata outputs. For multi-paragraph prose, use the `readability-check` skill instead.

jdevalk By jdevalk schedule Updated 6/10/2026

name: metadata-check description: > Reviews short high-value strings — page titles, meta descriptions, schema description fields, FAQ answers, GitHub repo taglines, profile bios, social-card copy, and other metadata where Flesch and paragraph-level readability checks don't apply. Checks front-loading, concreteness, filler, active voice, title/description duplication, difficult words, SERP-truncation fit, and one-idea-per-field. Use when the user asks to review metadata, a tagline, a bio, or SEO strings, or proactively after generating any short string with audience-facing impact. Chained into by astro-seo, wp-readme-optimizer, github-repo, and github-profile for their metadata outputs. For multi-paragraph prose, use the readability-check skill instead.

Metadata check

Reviews short, high-value strings where every character counts — titles, meta descriptions, schema descriptions, FAQ answers, taglines, bios, and social-card copy. Flesch scoring and the ten-category readability rubric don't fit a 5–30 word string; this skill applies the checks that do.

Use this skill for anything in the metadata-string shape. For multi-paragraph prose (blog posts, READMEs, CONTRIBUTING files), use readability-check instead.

What to check

For each string, check these points. Every check is either ✓ (pass), ⚠ (needs work), or ✗ (problem).

  • Front-load the distinguishing word. The most specific, searchable term sits near the start. "Astro SEO: the definitive guide" beats "The definitive guide to Astro SEO" — the reader's eye hits the topic first.
  • Concrete over abstract. Names, numbers, specific claims. "Reduce LCP by 40%" beats "Improve performance significantly."
  • Filler and hedging — aggressive. Every word costs shelf space. Cut really, just, very, actually, basically, simply, a bit, kind of, I think. In metadata these aren't style ticks, they're wasted SERP characters.
  • Active voice unless the object is the subject. "Audit your GitHub profile" beats "Your GitHub profile can be audited."
  • No title/description duplication. A meta description that restates the title burns ~60 of 200 characters for nothing. The description should promise what's inside the page, not re-announce what it is.
  • Difficult words. Prefer the common synonym unless the domain term is what the user searches for. Between utilize and use, use use. Domain terms the target audience expects are fine (hydration, middleware, structured data).
  • SERP and platform truncation. Know the limit for the surface:
    • Google SERP: titles clipped around 55–65 characters, descriptions around 155–160.
    • GitHub repo description: ~350 chars, but only the first ~100 show in search results and on profile cards.
    • Twitter/X bio: 160 chars.
    • Open Graph description: usually shown at ~200 chars. Anything past the cut should be disposable, not a key promise.
  • One idea per field. Titles and descriptions that try to promise two things land fuzzy. Pick the sharpest one.

What to skip

Don't run this skill on:

  • URLs, schema @id values, filenames, enum values, or any technical identifier.
  • Multi-paragraph prose — route that to readability-check.
  • Strings the user did not write and cannot change (imported content, upstream defaults).

Output format

Per string, return:

### [Field name] — [length] chars

> [The string itself]

- Front-loading: [✓/⚠/✗] [one-line reason if not ✓]
- Concreteness: [✓/⚠/✗] [reason]
- Filler: [✓/⚠/✗] [reason]
- Active voice: [✓/⚠/✗] [reason]
- Duplication: [✓/⚠/✗] [reason]
- Word choice: [✓/⚠/✗] [reason]
- Truncation fit: [✓/⚠/✗] [reason] — platform: [SERP/GitHub/Twitter/OG]
- One idea: [✓/⚠/✗] [reason]

**Rewrite:** [only if any check failed — a concrete replacement string, not a suggestion]

Keep the audit tight — metadata feedback should be actionable in seconds, and you're almost always running it across a batch of strings at once. If a string is already clean, don't pad the output; just mark all ✓ and move on.

Install via CLI
npx skills add https://github.com/jdevalk/skills --skill metadata-check
Repository Details
star Stars 69
call_split Forks 8
navigation Branch main
article Path SKILL.md
More from Creator