Repository navigation
v3.7.3
A skill is a folder of instructions. The model still decides when to load it and how to follow it. Better Skill Creator helps you write that folder, check that it loads for the right requests, and pack it into a file you can share.
v3.7.3 does not change install commands or flags. It clears two stalls: a package could still contain a secret whose name only looked different, and the command that grades a skill against a baseline was missing from the guides people copy.
Why secret names were getting into the package
Packaging copies the skill folder into a .skill file, which is a zip. Before the copy, the tool skips names that look like secrets: .env, private keys, and credential files. The skip compared the name exactly as it was written.
That exact compare was the bottleneck. .env with a trailing space, notes.pem., .id_rsa, and İD_RSA did not match, so they were copied. On Windows the system ignores trailing dots and spaces, so a name like .env can be the real .env. A shared skill could then carry a password or a key even though the filter reported those names as skipped.
v3.7.3 folds the name first, then uses the same skip list. It removes trailing dots and spaces and invisible characters, treats a leading dot on a key name as the key name, and treats compatibility letters such as İ as the plain letter. .id_rsa is handled as id_rsa. .git. and dist. are handled as the excluded directories .git and dist. A path piece that folds into .. is skipped, so packaging stays inside the skill folder.
What you do. Ordinary source names such as guide.md need nothing. If you meant to ship a file and its folded name is now a secret, .git, or dist, rename it to an ordinary name and package again. There is no switch that puts a skipped secret name back into the archive. This repository was checked: none of its own files were newly skipped.
Why grading plans could not be run
Calling a skill better means running the same task twice: once with the skill, and once without it or once with the previous version. Trigger tests only answer whether the model loaded the skill. They do not answer whether the skill did the task.
v3.7.2 added a local grader for that second question. It does not call the model. It checks the plan, and it can grade saved files when you have already reviewed the check (an exact JSON value, or a count of CSV rows). The guides people follow still listed trigger tests and a comparison of those trigger results. A written plan that said "run authoring_eval.py" had no command to copy. That missing name was the bottleneck.
From skills/skill-creator/ in a checkout of this repository:
preflightreads the task list and fixture paths and reports how many runs the plan needs. Fix errors here before you start runs.preparecreates a new run folder and records the model and run id. It does not createeval_metadata.json. You copy that case's assertions, and any reviewed checks, fromevals/evals.jsonbefore grading.checkgrades the checks you have marked reviewed. Anything it cannot decide is a leftover for a reviewer.mergewrites the finalgrading.jsonbeside the run. Pass the reviewer's leftover grades only whencheckstill has leftovers. When every assertion was graded from the files, leave that input off.
What you do with grades you already saved. merge replaces grading.json. If a reviewer's grade is stored at that same path, copy it to reference-grades.json before the next merge. The copied file still needs the run id and model that prepare wrote. This repository has no saved grade that needs that copy. The guide and the schema example already use reference-grades.json.
Trigger tests stay on bsc.py eval. Comparing those trigger results stays on bsc.py compare. Run the file grader as python -m scripts.authoring_eval from skills/skill-creator/.
Files to upload
Upload these as two different files:
skill-creator-3.7.3.skillis the skill. Use it where a host asks for a skill file. It has no plugin manifest.better-skill-creator-plugin-3.7.3.zipis the Claude Code plugin. It does not contain the.skillarchive. Use it when you install the plugin.
The longer ledger is the v3.7.3 section of CHANGELOG.md. v3.7.2 remains the previous release.