No automated validation for skill submissions: 65 skills ship invalid `name:` frontmatter

Author: Chirag6722Created Aug 12, 2026Updated Aug 12, 2026

Problem

This repo is a community-contributed catalog of ~880 skills (48 top-level + 832 under composio-skills/), accepting skills purely through PR review. There is no automated validation of any kind.github/ contains no workflows, and there is no script a contributor or reviewer can run to check a submission.

Skill metadata is not decorative: Codex discovers a skill by reading the YAML frontmatter in SKILL.md, and the name field is expected to be a lowercase hyphenated slug matching the skill's directory. When it is not, the skill either fails to load or is registered under a name that does not match the directory users install it as.

Manual review has already let malformed metadata through. Running a check across the repo today:

  • 64 skills under composio-skills/ have a name: that is Title Case with spaces, e.g.

    yaml
    # composio-skills/ahrefs-automation/SKILL.md
    name: Ahrefs Automation      # should be: ahrefs-automation

    (ahrefs, apify, apollo, ashby, attio, braintree, capsule-crm, clockify, cloudinary, coinbase, … 64 in total). Neighbouring skills such as composio-skills/algolia-automation/ use the correct name: algolia-automation form, so this is inconsistency introduced by unchecked bulk contribution, not a deliberate convention.

  • 1 top-level skill declares a name that does not match its directory: video-downloader/SKILL.md declares name: youtube-downloader.

  • composio-skills/ is the only top-level directory absent from the README index, so the README/tree consistency the list depends on is also unenforced.

Root cause

Contribution correctness depends entirely on a human reviewer noticing a bad frontmatter field in a PR that may add hundreds of files. There is no machine-readable definition of what a valid skill looks like, no script to run it, and no CI job to run it on pull requests. As the catalog grows, drift is guaranteed and undetectable.

Proposed solution

  1. scripts/validate_skills.py — a dependency-free (stdlib-only) validator that walks every skill directory and enforces:

    • SKILL.md exists,
    • it opens with a YAML frontmatter block,
    • name is present, is a lowercase [a-z0-9]+(-[a-z0-9]+)* slug, and matches the directory name,
    • description is present, non-empty, and within a sane length budget (descriptions are loaded eagerly into the agent's context, so an oversized one costs every session),
    • every top-level skill directory is linked from the README index and every README skill link resolves to a real directory.

    Exit non-zero with a grouped, actionable report; support --json for tooling.

  2. tests/test_validate_skills.py — pytest coverage of each rule using temporary skill trees (valid skill passes, missing SKILL.md, missing frontmatter, bad slug, directory/name mismatch, empty and oversized description, README desync).

  3. .github/workflows/validate-skills.yml — run the validator and the tests on every pull request and push to master, so a malformed submission fails before review.

  4. Fix the existing violations the validator surfaces: normalise the 64 Title Case name: fields to their directory slugs, correct video-downloader, and add composio-skills/ to the README index — so the repo lands green and stays green.

Happy to open a PR implementing all four.

Source: composio-community/awesome-codex-skills