feat(skill-quality): check 23 — completion-criteria signal (advisory heuristic) - #3006
Conversation
…heuristic The audit-side half of the course lane 7 completion-criteria adoption: flags a numbered procedure of three or more steps whose text carries no completion-signal token (the premature-completion shape), WARN-only, fence-aware, mawk-portable (no ERE intervals). Three pass/fail/ignore test cases; the check's gotcha entry points authors at the write-side doctrine in docs-hygiene:write-for-agents via the Skill tool. The check skill's own listing-budget procedure gains the done-condition the new check asked of it. skill-quality 0.16.0; catalog regenerated with the description. Closes #2963. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4
|
Claude finished @kyle-sexton's task in 54s —— View job Security review complete ✅
No security issues found. Reviewed the full diff (
No workflow files, permissions, dependency pins, or credential-handling paths are touched. This falls under the skip gate's "no security-relevant surface" condition, so no findings to report. |
|
Last security-reviewed head: |
|
Claude finished @kyle-sexton's task in 5m 13s —— View job Code review complete
Reviewed the diff against Finding
Everything else checked out
Verification notesThis lane's Bash access is scoped to |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a114c70a7a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Codex review caught the backtick-only fence toggle: a ~~~-fenced illustrative list would false-positive. Both CommonMark fence forms now toggle (interval-free, consistent with the check-21 scanner), with a tilde-fence regression case added. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4
|
Claude finished @kyle-sexton's task in 1m 1s —— View job Security review complete ✅
No security issues found. Per the skip gate, only the commits since the last-reviewed head (
This falls under the skip gate's "no security-relevant surface" condition — no findings to report. |
|
Claude has reviewed this PR 3 times. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
…restart Both review lanes traced the same defect: a blank line never closed a step block, so two adjacent short lists merged into one spurious-warn block (and one list's signal could clear the other). A numbered item that restarts numbering (n <= previous) after a blank line now closes the prior block; loose ascending lists stay one block. Accepted side effect documented in-script: all-ones-numbered loose lists close per item and under-report, consistent with the advisory posture. Two regression cases (adjacent-lists no-warn; loose-list still-warns). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4
|
Claude finished @kyle-sexton's task in 47s —— View job Security review complete ✅
No security issues found. Per the skip gate, only the commits since the last-reviewed head (
This falls under the skip gate's "no security-relevant surface" condition — no findings to report. |
|
Claude finished @kyle-sexton's task in 3m 24s —— View job Code review complete
Scope: commits since the last full code-review pass ( Previously flagged finding: confirmed fixedThe blank-line block-merge bug flagged in the prior review (and independently) — two unrelated short numbered lists separated only by a blank line silently merging into one trackable block — is fixed in
Good fix, well-targeted, tested at the actual mechanism (numbering-restart-after-blank), not just the symptom. New finding (posted inline)One remaining gap in the tilde-fence commit itself, posted inline on Also checked, no issues
Verification notesThis lane's Bash access is scoped to |
Review P3: the shared toggle let a literal ~~~ inside a backtick fence unmask mid-block (and vice versa). The opener's marker is now tracked and only a matching marker closes, mirroring the check-21 scanner's semantics interval-free; mixed-marker regression case added (seven check-23 cases total) and the changelog count corrected per the review nit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4
|
Claude finished @kyle-sexton's task in 2m 9s —— View job Code review complete
Scope per Previously flagged finding: confirmed fixedThe P3 mixed-fence-marker gap flagged in the prior code-review pass — the shared /^[[:space:]]*(```|~~~)/ {
m = ($0 ~ /^[[:space:]]*```/) ? "b" : "t"
if (!fence) { fence = 1; fence_ch = m } else if (m == fence_ch) fence = 0
next
}Hand-traced against the new test fixture (23g — a All three findings raised across this PR's review history are now addressed in-branch:
Also checked in this commit
No new findingsNothing further to flag in Verification notesThis lane's Bash access is scoped to |
|
Claude finished @kyle-sexton's task in 1m 10s —— View job Security review complete ✅
No security issues found. Per the skip gate, only the commits since the last-reviewed head (
This falls under the skip gate's "no security-relevant surface" condition — no findings to report. |
Closes #2963
Summary
Adds the audit-side half of the course lane 7 completion-criteria adoption:
skill-quality:checkgains Check 23 — an advisory (WARN-only) heuristic flagging numbered procedures of three or more steps whose text carries no completion-signal token, the premature-completion shape where a step is markable done at the first plausible output. skill-quality 0.15.13 → 0.16.0. Sequencing honored: lands after #2962 (docs-hygiene:write-for-agents0.17.0), whose doctrine the check's SKILL.md gotcha entry now points authors at via the Skill tool.Fix
scripts/check-skill.sh: Check 23, modeled on Check 18's advisory-heuristic shape — fence-aware awk scan grouping consecutive ordered-list steps (blank-tolerant, continuation-line aware), firing only when a ≥3-step block contains none of a deliberately broad completion-signal token set; detects the absence of any done-condition, never grades one. Written interval-free so it runs identically under gawk and mawk.scripts/check-skill.test.sh: three cases — signal-free procedure warns; done-condition procedure silent; fenced illustrative list ignored.skills/check/SKILL.md: check count twenty-two → twenty-three in the description and body; new gotcha bullet documenting the heuristic's limits and pointing at/docs-hygiene:write-for-agents; the skill's own listing-budget procedure gains the done-condition the new check asked of it (it was Check 23's first real catch).plugin.json0.16.0 + description;CHANGELOG.mdentry;docs/CATALOG.mdregenerated for the description change.Verification
check-skill.test.sh: the three new cases pass; the suite's 21 pre-existing failures in this container are an environment artifact (mawk lacks ERE intervals, breaking Check 21's scanner container-side only) — reproduced on unmodifiedorigin/mainand filed as skill-quality: check-skill.sh fresh-eyes scanner breaks under mawk — ERE interval expressions unsupported #3005; CI runs gawk where the suite is green.shellcheckandshfmt -dclean on the modified script.check-skill.sh checkPASS (and Check 23's warn on the skill's own procedure was fixed rather than suppressed).validate-plugins.shend-to-end pass (catalog + cheat sheet + identity-prerequisites in sync),markdownlint-cli20 issues,check-changelog-parity.sh --checkand--check-bump origin/mainboth exit 0.Related
96a97750)docs/specs/write-for-agents-brief.mdacceptance criterion 5; course lane 7 (playbooks/docs-hygiene: aihero course lane 7: authoring-time steering doctrine (writing-for-agents re-decision) #2909)🤖 Generated with Claude Code
https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4
Generated by Claude Code