DEV Community

DeadY2J
DeadY2J

Posted on

I built a repo where a first PR is one folder, and a 144-line validator reviews the format

I'm a beginner in open source. A few weeks ago a fairly big pull request of mine was merged into someone else's project, and the review taught me how much of a maintainer's time goes into checking things a machine could check.

So I tried to design a small repo where that part is automatic: skills-es, an open catalog of Spanish-language skills for Claude Code.

Disclosure: I built it with Claude's help and reviewed the result myself.

The idea

A "skill" is a folder with a SKILL.md file: reusable instructions an AI coding assistant can follow. Almost every catalog is in English, so this one is in Spanish.

The contribution unit is one folder:

skills/
my-skill/
SKILL.md
ejemplos/ejemplo.md

Adding a skill never touches code. That matters for people sending their first PR.

The validator

Instead of the maintainer checking the format by hand, a Python script (standard library only, 144 lines) runs in CI on every PR. For each skill it checks:

name is kebab-case and matches the folder name
description is 20-1024 characters and has no < or >
there is a "when to use" section
an example file exists
no secrets (ghp_..., AKIA..., private keys), binaries, or executables

It returns all errors of a skill at once, not just the first, so a newcomer fixes everything in one round.

Some choices I made:

No YAML dependency. I parse the frontmatter by hand and only allow key: value on one line. It's less flexible, but there is nothing to install and the error messages are clearer. The trade-off: it will break the day someone wants a multi-line value.

Tests that build skills in a temp folder. Each rule has its own unit test (13 in total) that creates a tiny skill, breaks exactly one thing, and asserts the error. Adding a rule means adding one test.

Regex for secrets. Cheap and good enough for obvious leaks, but I'm not sure it's the right call versus a dedicated scanner in CI.

Making the first PR easy
CONTRIBUTING.md walks through fork, branch, folder, validate, PR.
A PR template with a checklist.
Ten issues labelled good first issue, each with acceptance criteria and a hint about where to look.
What I don't know yet
Whether a hand-rolled frontmatter parser is a mistake I'll regret.
Whether secret detection by regex is enough.
Whether anyone besides me needs these skills. That's the real test, and no amount of CI answers it.

If you want to try it or send a skill, the repo is here: https://github.com/DeadY2J/skills-es

And if you've built contribution tooling for a small project, I'd love to hear what you'd do differently.

Top comments (0)