Thanks for wanting to contribute. One rule up front:
All pull requests to this repository must be raised through no-mistakes.
This repo is no-mistakes. Contributions should be done using the tool itself, which reduces the maintainer's burden of reviewing and merging contributions.
The Require no-mistakes GitHub Actions workflow runs on every PR and fails if the body is missing the deterministic signature and structured pipeline step attestation that no-mistakes writes. PRs without them will not be reviewed or merged.
If you revise the PR description after no-mistakes creates it, preserve the generated ## Pipeline section. Replacing the whole body removes the signature or attestation and makes the required check fail until no-mistakes writes the section again.
Every opened or edited event gets an independent run, including first-time-fork runs that become actionable through GitHub's normal approval process. The integration contract for consumers such as Wheelhouse is:
- The stable check name is
PR must be raised via no-mistakes. - The workflow run's
display_titleidentifies the PR number, event action,run_number, and immutablerun_id. For a PR, increasingrun_numberorders distinct events; a re-run retains that event identity and incrementsrun_attempt. - The run's
head_shabinds the evidence to the reviewed commit. After the latestopenedoreditedrun reachesstatus: completed,conclusion: successmeans that event's body contained the signature and a parseable v1 pipeline attestation whosehead_shamatchesgithub.event.pull_request.head.shaand whosereview,test, anddocumentsteps arecompleted.conclusion: failuremeans it did not.action_requiredorcancelledis not compliance evidence and must be handled conservatively. - Fork runs stay on the
pull_requestboundary with read-only contents permission, no repository secrets, and no checkout or execution of fork code. Approval permits only this body check; it does not grant write authority.
-
Fork the repo, then clone the parent repo or set your local
originback to the parent repo (git@github.com:kunchenguid/no-mistakes.git). -
Create a branch and make your changes.
-
Initialize or refresh the gate with your fork as the push target:
no-mistakes init --fork-url git@github.com:<you>/no-mistakes.git. -
Commit your changes.
-
Push through the gate instead of pushing to
origin:git push no-mistakes
-
Run
no-mistakesto attach to the pipeline, watch findings, and auto-fix or review as needed. -
Once the pipeline passes, it pushes the branch to your fork and opens the PR against the parent repo for you.
See the quick start for the full first-run walkthrough.
- Go 1.25+, standard toolchain. See
AGENTS.mdfor agent instructions. - Run
make fmt,make lint, andmake testbefore pushing. Runmake e2etoo when you touch agent integrations, the e2e harness, or recorded fixtures. The pipeline will run them again, but a fast local pass saves rounds. - Run
make skillwhen you change the canonical agent skill content underinternal/skill;make lintfails if any committed no-mistakes skill file has drifted. - Use
make e2e-recordonly when an upstream agent wire format changes or you are adding a new agent or fixture flavor. It overwritesinternal/e2e/fixtures/, spends real API quota, and the diff should be reviewed before committing. - Keep
README.mdhigh-level. Deep reference material belongs indocs/. - Do not hand-edit
CHANGELOG.mdor.release-please-manifest.json. They are regenerated by release-please from your conventional commit messages, and a separateGenerated files must not be hand-editedcheck will fail the PR if either is touched.
- Agent/model:
codex-cli 0.145.0using its configured default model. The JSON event stream did not report a model identifier, so none is claimed. - Command:
codex exec --ephemeral --ignore-rules --sandbox read-only --json --color never -C <temporary-synthetic-repo> -against a temporary synthetic Git repo with read-only access and no live project input. - Input: two tiny staged diffs - a Go test that reads
app.goand checks for a function-signature token whileReady()returnsfalse, and a Go test that parsespolicy.jsoninto a typed struct and asserts enabled enforcement semantics. - Outcome: it flagged the source-token test and accepted the typed JSON semantic test. This is qualitative policy evidence only, not a live-LLM CI gate.
Open an issue, or talk to me on Discord.