aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-22 17:03:03 -0500
committerCraig Jennings <c@cjennings.net>2026-05-22 17:03:03 -0500
commit068458ecaa3dfc081ee80a2e1adbe7ee53f97a30 (patch)
tree96fc8254ba335dc6e3649fbfae2422d01a829356
parent3cb467e6aa4356f9912d661ef12d581d61b65cb6 (diff)
downloadrulesets-068458ecaa3dfc081ee80a2e1adbe7ee53f97a30.tar.gz
rulesets-068458ecaa3dfc081ee80a2e1adbe7ee53f97a30.zip
docs(commits): add a /voice-unavailable fallback to the publish gate
The publish flow made the /voice pass mandatory but had no fallback for when the skill isn't installed, which a fresh or partial environment can hit. Added one to the Single-skill gate: when /voice can't run, walk the patterns inline (the flow already names which matter), state the skill was unavailable and the pass was applied by hand, and flag the missing skill for install. The gate is the pattern walk, not the tooling — the skill is just the convenient way to run it. The original audit framed this as a "humanizer unavailable" gap. Humanizer is /voice now, so only the /voice-unavailable case remained.
-rw-r--r--claude-rules/commits.md2
1 files changed, 2 insertions, 0 deletions
diff --git a/claude-rules/commits.md b/claude-rules/commits.md
index a467d93..d5bcd10 100644
--- a/claude-rules/commits.md
+++ b/claude-rules/commits.md
@@ -416,6 +416,8 @@ handles trivial diffs, and acknowledgment-only replies don't need it at all.
**Single-skill gate.** Each of the three subflows above runs `/voice personal` before printing the draft — 39 patterns covering AI-writing signs, universal good-writing rules, and the 8 personal-only patterns. Publish artifacts (commits, PR titles + bodies, PR review comments) always use personal mode; the `.ai/`-tracking check at the top of Step 2 decides only whether the approval gate fires, not which patterns run. Running the skill is mandatory; the printed draft must have been through it. When the user asks mid-flow for "the voice pass" on an in-progress draft, that means re-run the full 39-pattern walk — not a subset. Always state that the skill ran when announcing the printed draft (e.g. "/voice personal — 39 patterns walked"). Skipping the pass without flagging it is a defect.
+**If `/voice` is unavailable.** The skill should be installed (it ships with rulesets), but a fresh or partial environment may not have it. Don't let that block the publish, and don't skip the discipline silently. Walk the same patterns inline — they're documented in the skill, and the publish flow already names which ones matter (first-person rewrite, semicolons → periods/commas, contractions, sentence-split, felt-experience cut, fragment rewrite, terse cut, the pattern #39 public-artifact scope flag, plus the AI-writing and good-writing passes). Then state that the skill was unavailable and the pass was applied by hand (e.g. "/voice unavailable — patterns walked inline"). The gate is the pattern walk, not the tooling; the skill is the convenient way to run it, not the only way. Flag the missing skill so it gets installed.
+
### Hook-level authorization
The Step 1 code review plus the Step 2 user approval together constitute the