Repository navigation
Run CI's repository checks with one local command - #45
Merged
Merged
Conversation
CONTRIBUTING said there was no test command: contributors had to read validate.yml (13.5 KB of inline bash and Python) and replay each step. - tools/validate.py runs the skill-lint checks: manifests, plugin shape, SKILL.md structure, frontmatter YAML, revision agreement, agent assets, both ports, and the hero image. Same ::error:: messages; every category runs, exit 1 if any failed. Marker checks stay whole-line (rule 4). - tools/test_validate.py breaks a copy of the checkout one way per test, including a marker left only in prose. - validate.yml's skill-lint job calls the script; job names are unchanged. - CONTRIBUTING, docs/evals.md and the README layout name the command. Closes #37, #38. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TgCNfwCj3YG9xP3pMB6z2k
This was referenced Nov 2, 2026
ovhirup
marked this pull request as ready for review
November 2, 2026 08:00
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #35. Closes #37 and #38.
Problem
CONTRIBUTING.mdsaid: "There is no separate test command — the workflow is the test suite." To check a change before pushing, you had to read.github/workflows/validate.yml, about 13.5 KB of inline bash and Python, and replay it step by step. In practice the first real run was in CI.Change
tools/validate.pyruns everything theskill-lintjob checked inline, with the same::error::messages:Every category runs on each call, so one run shows every failing category, and the exit code is 1 if any failed. A category that was a bash step stops at its first problem, as the step did. Marker and revision checks stay exact whole-line matches (CONTRIBUTING rule 4). Without PyYAML it exits 2 with an install hint instead of skipping the YAML check.
tools/test_validate.pycopies the checkout and breaks it one way per test: a marker left only in prose, a frontmatterpolicy-revthat disagrees with the block, a port README revision that disagrees with its port, a missing asset, a pluginagents/directory, a version mismatch, and the CLI exit code.validate.yml: theskill-lintjob now runspython3 tools/validate.pyin place of the inline steps. Job names are unchanged, so required status checks still match. The unit-test steps and therecipesjob are untouched.CONTRIBUTING.md,docs/evals.mdand the README layout tree now point to the command.This edits a CI pipeline, so it is a change the policy says to review carefully.
Verification
main's inline steps, extracted verbatim fromvalidate.yml, and the new script on the same copy of the tree with 15 different breaks. The sorted::error::lines and the pass/fail result were identical in all 15 (ALL SAME). The breaks:agents/directorypython3 tools/validate.py: every category reports OK on this branch.cd tools && python3 -m unittest discover: 53 passed, up from 45, with none skipped.cd measured && python3 -m unittest test_measured: OK, andapprove.py --self-checkreportsSOD: PASS.Not done as written
#38 asks for a deliberately broken commit on a scratch branch, to show CI failing with the old message. I didn't push a broken branch to the shared remote. The 15-scenario parity run above covers the same claim locally, and this PR's own CI run shows the new step passing.
This branch is independent of #43 and #44. Whichever merges second may need a one-line rebase of the README tools line or
docs/evals.md.Generated by Claude Code