diff options
| -rw-r--r-- | claude-rules/commits.md | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/claude-rules/commits.md b/claude-rules/commits.md index a8ddb88..84f408b 100644 --- a/claude-rules/commits.md +++ b/claude-rules/commits.md @@ -246,12 +246,14 @@ enough to skip review" exemption on top of it. ### Step 2: draft, review, publish -**Voice mode and approval gate.** Before drafting, run a single command from the repo root to decide which mode applies: +**Voice mode and approval gate.** Before drafting, run this command to decide which mode applies: ``` -git ls-files .ai/ 2>/dev/null | head -1 +git ls-files :/.ai/ 2>/dev/null | head -1 ``` +The `:/` pathspec anchors the search to the repo root, so the command works from any subdirectory. Without it, running from a subdir returns no matches even when `.ai/` is tracked at the repo root, which silently misclassifies the project. + - **No output** — `.ai/` is gitignored, missing, or empty. **Personal-voice mode**: drafts run through `/voice personal` (39 patterns including the 8 personal-only ones), and the **approval gate applies**. Write to `/tmp`, run the voice pass, print inline, ask approve / request changes / open in editor, then publish only on explicit approval. - **Any output** — one or more files under `.ai/` are tracked. The `.ai/` layer is shared with the team, so the personal voice patterns (first-person rewrite, contraction enforcement, semicolon swap, etc.) don't fit. **General-voice mode**: drafts run through `/voice` (general mode, 31 patterns; the 8 personal-only patterns are skipped), and the **approval gate is skipped**. Write to `/tmp`, run the voice pass, print inline, publish immediately. |
