Evidence and guardrail records are created by invoking the nils-cli primitives directly from the workflow. Do not add gh-fix-ci script
flags for evidence unless a future change needs deterministic script-owned behavior.
Use this skill when the user wants end-to-end CI fixing (no manual review pauses): diagnose, fix, commit, push, and keep iterating until CI
is green.
-
Before editing production behavior, capture failing-test evidence or an explicit waiver with test-first-evidence.
-
This gate applies before editing production behavior.
-
CI failure evidence may satisfy the failing-test evidence requirement when it includes the failing check, command/log snippet, exit status
or failure classification, and affected test/job name.
-
If the fix is docs-only, generated-only, infra-unavailable, or cannot be reproduced locally, record a waiver reason and substitute
validation before editing production files.
-
Each behavior-changing iteration starts a record before edits:
test-first-evidence init --out <run-dir>/test-first \
--classification <classification> \
--production-path <path> \
--format json
-
Record CI failure evidence before edits when CI is the failing signal:
test-first-evidence record-failing --out <run-dir>/test-first \
--command "<ci-or-local-command>" \
--exit-code <code> \
--summary "<check>: <failure>" \
--test-name "<job-or-test>" \
--artifact <redacted-artifact> \
--format json
-
Record an explicit waiver before edits when the failure is docs-only, generated-only, infrastructure-only, external-provider-only, or not
locally reproducible:
test-first-evidence record-waiver --out <run-dir>/test-first \
--reason "<reason>" \
--substitute-validation "<validation>" \
--format json
-
After the fix and before semantic-commit-autostage, push, or final report, record and verify final validation:
test-first-evidence record-final --out <run-dir>/test-first \
--command "<validation-command>" \
--status pass \
--summary "<summary>" \
--format json
then test-first-evidence verify --out <run-dir>/test-first --format json.
-
Each fix iteration summary must include Change classification, Failing test before fix or Waiver reason, Final validation, and
the test-first-evidence.json path.