Skip to content

feat: fix skill frontmatter validation across all 68 skills#67

Open
popey wants to merge 1 commit intoNeoLabHQ:masterfrom
popey:improve/skill-review-optimization
Open

feat: fix skill frontmatter validation across all 68 skills#67
popey wants to merge 1 commit intoNeoLabHQ:masterfrom
popey:improve/skill-review-optimization

Conversation

@popey
Copy link

@popey popey commented Mar 17, 2026

Hullo @LeoVS09 👋

I ran your skills through tessl skill review at work and found some targeted improvements. All 68 skills were scoring 0% due to frontmatter validation issues that prevented the LLM judge from even running. Here's the full before/after for the top 10 (by improvement):

Skill Before After Change
notes 0% 90% +90%
worktrees 0% 89% +89%
thought-based-reasoning 0% 81% +81%
test-skill 0% 80% +80%
build-mcp 0% 80% +80%
create-skill 0% 76% +76%
test-prompt 0% 76% +76%
subagent-driven-development 0% 76% +76%
root-cause-tracing 0% 72% +72%
brainstorm 0% 72% +72%
test-driven-development 0% 72% +72%
write-tests 0% 68% +68%
prompt-engineering 0% 65% +65%
multi-agent-patterns 0% 63% +63%
apply-skill-best-practices 0% 63% +63%
setup-code-formating 0% 60% +60%
merge-worktree 0% 60% +60%
add-typescript-best-practices 0% 60% +60%
create-worktree 0% 59% +59%
why 0% 59% +59%
load-issues 0% 58% +58%
review-local-changes 0% 55% +55%
create-command 0% 55% +55%
query 0% 55% +55%
compare-worktrees 0% 55% +55%
create-pr 0% 55% +55%
analyse-problem 0% 55% +55%
cause-and-effect 0% 55% +55%
setup-arxiv-mcp 0% 55% +55%
setup-codemap-cli 0% 55% +55%
kaizen 0% 54% +54%
create-hook 0% 51% +51%
plan-do-check-act 0% 50% +50%
fix-tests 0% 48% +48%
update-docs 0% 48% +48%
create-agent 0% 48% +48%
setup-serena-mcp 0% 48% +48%
agent-evaluation 0% 47% +47%
context-engineering 0% 47% +47%
create-workflow-command 0% 47% +47%
decay 0% 47% +47%
do-and-judge 0% 47% +47%
do-in-parallel 0% 47% +47%
judge-with-debate 0% 47% +47%
judge 0% 47% +47%
launch-sub-agent 0% 47% +47%
add-task 0% 47% +47%
software-architecture 0% 45% +45%
analyse 0% 44% +44%
attach-review-to-pr 0% 44% +44%
actualize 0% 42% +42%
propose-hypotheses 0% 42% +42%
reset 0% 42% +42%
analyze-issue 0% 41% +41%
do-competitively 0% 40% +40%
do-in-steps 0% 40% +40%
status 0% 40% +40%
setup-context7-mcp 0% 40% +40%
plan 0% 40% +40%
review-pr 0% 39% +39%
critique 0% 36% +36%
tree-of-thoughts 0% 36% +36%
create-ideas 0% 36% +36%
implement 0% 36% +36%
commit 0% 30% +30%
memorize 0% 22% +22%
write-concisely 0% 15% +15%
reflect 0% 14% +14%
Changes made

Frontmatter name field fixes (all 68 skills)

All skills used a plugin:skill-name format (e.g., code-review:review-local-changes) in the name field. The tessl validator requires names to contain only lowercase letters, numbers, and hyphens — no colons. This caused every skill to fail deterministic validation, blocking the LLM judge entirely.

Fix: Removed the plugin namespace prefix, keeping just the skill name (e.g., review-local-changes). This also aligns with the project's own convention documented in CLAUDE.md: "Keep YAML name: field matching folder name for consistency."

Reserved word fix (1 skill)

apply-anthropic-skill-best-practices contained the reserved word "anthropic" in the name field. Renamed to apply-skill-best-practices.

YAML parsing fixes (2 skills)

create-agent and create-workflow-command had unquoted argument-hint values containing square brackets and colons, which broke YAML parsing. Wrapped these values in quotes.

allowed-tools format fix (1 skill)

review-local-changes used a JSON array ["Bash", "Glob", ...] for allowed-tools instead of the expected comma-separated string format. Converted to Bash, Glob, Grep, Read, Task.

Honest disclosure — I work at @tesslio where we build tooling around skills like these. Not a pitch - just saw room for improvement and wanted to contribute.

Want to self-improve your skills? Just point your agent (Claude Code, Codex, etc.) at this Tessl guide and ask it to optimize your skill. Ping me - @popey - if you hit any snags.

Thanks in advance 🙏

Hullo @LeoVS09 👋

I ran your skills through `tessl skill review` at work and found some targeted improvements. All 68 skills were scoring **0%** due to frontmatter validation issues that prevented the LLM judge from even running. Here's the full before/after for the top 10 (by improvement):

![Skill Review Score Card](./score_card.png)

| Skill | Before | After | Change |
|-------|--------|-------|--------|
| notes | 0% | 90% | +90% |
| worktrees | 0% | 89% | +89% |
| thought-based-reasoning | 0% | 81% | +81% |
| test-skill | 0% | 80% | +80% |
| build-mcp | 0% | 80% | +80% |
| create-skill | 0% | 76% | +76% |
| test-prompt | 0% | 76% | +76% |
| subagent-driven-development | 0% | 76% | +76% |
| root-cause-tracing | 0% | 72% | +72% |
| brainstorm | 0% | 72% | +72% |
| test-driven-development | 0% | 72% | +72% |
| write-tests | 0% | 68% | +68% |
| prompt-engineering | 0% | 65% | +65% |
| multi-agent-patterns | 0% | 63% | +63% |
| apply-skill-best-practices | 0% | 63% | +63% |
| setup-code-formating | 0% | 60% | +60% |
| merge-worktree | 0% | 60% | +60% |
| add-typescript-best-practices | 0% | 60% | +60% |
| create-worktree | 0% | 59% | +59% |
| why | 0% | 59% | +59% |
| load-issues | 0% | 58% | +58% |
| review-local-changes | 0% | 55% | +55% |
| create-command | 0% | 55% | +55% |
| query | 0% | 55% | +55% |
| compare-worktrees | 0% | 55% | +55% |
| create-pr | 0% | 55% | +55% |
| analyse-problem | 0% | 55% | +55% |
| cause-and-effect | 0% | 55% | +55% |
| setup-arxiv-mcp | 0% | 55% | +55% |
| setup-codemap-cli | 0% | 55% | +55% |
| kaizen | 0% | 54% | +54% |
| create-hook | 0% | 51% | +51% |
| plan-do-check-act | 0% | 50% | +50% |
| fix-tests | 0% | 48% | +48% |
| update-docs | 0% | 48% | +48% |
| create-agent | 0% | 48% | +48% |
| setup-serena-mcp | 0% | 48% | +48% |
| agent-evaluation | 0% | 47% | +47% |
| context-engineering | 0% | 47% | +47% |
| create-workflow-command | 0% | 47% | +47% |
| decay | 0% | 47% | +47% |
| do-and-judge | 0% | 47% | +47% |
| do-in-parallel | 0% | 47% | +47% |
| judge-with-debate | 0% | 47% | +47% |
| judge | 0% | 47% | +47% |
| launch-sub-agent | 0% | 47% | +47% |
| add-task | 0% | 47% | +47% |
| software-architecture | 0% | 45% | +45% |
| analyse | 0% | 44% | +44% |
| attach-review-to-pr | 0% | 44% | +44% |
| actualize | 0% | 42% | +42% |
| propose-hypotheses | 0% | 42% | +42% |
| reset | 0% | 42% | +42% |
| analyze-issue | 0% | 41% | +41% |
| do-competitively | 0% | 40% | +40% |
| do-in-steps | 0% | 40% | +40% |
| status | 0% | 40% | +40% |
| setup-context7-mcp | 0% | 40% | +40% |
| plan | 0% | 40% | +40% |
| review-pr | 0% | 39% | +39% |
| critique | 0% | 36% | +36% |
| tree-of-thoughts | 0% | 36% | +36% |
| create-ideas | 0% | 36% | +36% |
| implement | 0% | 36% | +36% |
| commit | 0% | 30% | +30% |
| memorize | 0% | 22% | +22% |
| write-concisely | 0% | 15% | +15% |
| reflect | 0% | 14% | +14% |

<details>
<summary>Changes made</summary>

### Frontmatter `name` field fixes (all 68 skills)

All skills used a `plugin:skill-name` format (e.g., `code-review:review-local-changes`) in the `name` field. The tessl validator requires names to contain only lowercase letters, numbers, and hyphens — no colons. This caused every skill to fail deterministic validation, blocking the LLM judge entirely.

**Fix**: Removed the plugin namespace prefix, keeping just the skill name (e.g., `review-local-changes`). This also aligns with the project's own convention documented in CLAUDE.md: "Keep YAML `name:` field matching folder name for consistency."

### Reserved word fix (1 skill)

`apply-anthropic-skill-best-practices` contained the reserved word "anthropic" in the name field. Renamed to `apply-skill-best-practices`.

### YAML parsing fixes (2 skills)

`create-agent` and `create-workflow-command` had unquoted `argument-hint` values containing square brackets and colons, which broke YAML parsing. Wrapped these values in quotes.

### `allowed-tools` format fix (1 skill)

`review-local-changes` used a JSON array `["Bash", "Glob", ...]` for `allowed-tools` instead of the expected comma-separated string format. Converted to `Bash, Glob, Grep, Read, Task`.

</details>

Honest disclosure — I work at @tesslio where we build tooling around skills like these. Not a pitch - just saw room for improvement and wanted to contribute.

Want to self-improve your skills? Just point your agent (Claude Code, Codex, etc.) at [this Tessl guide](https://docs.tessl.io/evaluate/optimize-a-skill-using-best-practices) and ask it to optimize your skill. Ping me - [@popey](https://github.com/popey) - if you hit any snags.

Thanks in advance 🙏
@LeoVS09
Copy link
Contributor

LeoVS09 commented Mar 19, 2026

Thank you for your contribution, @popey, and I like your way of sharing your product!

Current frontmatter configuration is not a bug, but an intentional design choice that we used to keep backward compatibility support of the initial Claude Code skills format. You can read more about it there #68

In general, I agree with these changes, but we need to think about how to not break some scripts and GitHub actions that already use it.
On top of that, I have a few corrections:

  • Rename of /sdd:plan to /plan will not work as needed, because it will break or overwrite the built-in /plan command in Claude Code.
  • Change of allowed tools from allowed-tools: ["Bash", "Glob", "Grep", "Read", "Task"] to allowed-tools: Bash, Glob, Grep, Read, Task, also not exactly what we want. Some older Claude code versions had bugs with such a string format. The [".."] pattern is more strict and was working more stably over the versions. Is it a new requirement by Agent Skills to migrate to a simpler/readable version?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants