← All posts

Twelve Skills Have a Placeholder Tagline — a Sign of What Breaks in Bulk Import

2026-10-21

When an importer cannot find a description, it writes something plausible instead of failing. That is the most expensive kind of bug, because the output looks fine.


Three exact-duplicate tagline groups cover twelve skills in the directory:

TaglineSkillsSource
"A skill from the GitHub repository zenstory-ai/video-recap-skills."6zenstory-ai
"A skill from the GitHub repository jykim/claude-obsidian-skills."4jykim
"Automatically detect source types and build AI skills using Skill Seek…"2yusufkaraaslan

None of these are descriptions. They are fallback strings produced by an import pipeline that could not extract a real one, and then published anyway.

Why this happens

A bulk importer has to make a decision for every file it encounters. When the frontmatter is missing a description, or uses a shape the parser does not recognise, it has two options: fail the entry, or substitute something.

Substitution is the friendlier choice in the moment and the worse choice over time, because it produces entries that look complete. The skill has a name, a category, a score, a page — everything except a description that tells anyone what it does. The failure is invisible in every aggregate.

The general pattern

We have found the same shape in two other places this week:

In every case, the defect is a silent default: a value that makes the record complete-looking without being true.

What we are changing

The import pipeline should treat a missing description as a hard failure rather than substituting a sentence. An entry that cannot describe itself should not be published; it should appear in an import report.

The same rule applies to dimensions: zero is a legitimate score, so it cannot double as "not evaluated". Missing dimensions need their own state.

What to check in your own pipeline

If you ingest structured content at volume, look for the places where your code does this:

description: parsed.description || `A skill from ${repo}`
score: parsed.score || 8

Both lines are reasonable at the moment they are written and both produce data that is wrong in a way no one will notice. The fix is to make the fallback loud: leave the field null, mark the record incomplete, and surface it.

The twelve placeholder taglines cost us a paragraph of embarrassment. The 174 zeroed dimensions cost more.