Round-3 review of PR #85 found the "enforcing" pre-commit hook enforced nothing. Vale's exit code keys on error-level alerts alone: five of the six rules were level: warning, so they exited 0, and pre-commit hides output from a passing hook — the alerts were invisible and blocked nothing. ADR-0013 rejected a report-only trial tier and then shipped one by accident. Flatten every rule to level: error. Vale's own exit code is then correct, so the hook entry drops to a bare vale-wrap.sh call and the graded error->FAIL / warning->SUGGESTION mapping disappears from both audit skills: every alert is a FAIL, in the gate and the audit alike. No ignorable tier, matching shellcheck, the test suite and conventional-pre-commit. Delete Kyberforge.VagueQualifier. Measured against the 41 skill/agent files as they stood before the rule ever ran: 2 hits. One marginal ("very different" -> "fundamentally different"), one an unfixable false positive — caveman/SKILL.md quotes "of course" as an example of filler, a mention not a use — which forced the only Vale suppression comments in the repo. Those four lines go with it; two of them were dead anyway, suppressing a frontmatter-scoped rule on a body line. Held-out prose (273 files) fired 15 times, 9 inside out-of-scope research examples and the rest one word in two idioms in a single doc. SentenceOpenerThereIs survives: 22 held-out hits, both in-corpus hits clean rewrites, zero suppressions. Widen .vale.ini's globs to [**/SKILL.md], [**/agents/*.md] and [**/*.agent.md]. The plugins/*/-prefixed globs scoped nothing — Vale's * crosses /, so they already matched docs/research/examples/**/agents/*.md and assets/templates/SKILL.md, the two paths CONTEXT.md claimed they excluded. Scoping is and was the hook's files: regex. The old globs also hid a silent false negative: a skill outside plugins/ matched no section, so Vale reported 0 files and exited 0, which both audits read as clean. They now treat a 0-file run as NOT RUN and fall back to full judgment. Also: - vale-wrap.sh resolves relative --config values and file arguments against the caller's cwd, as vale does, instead of the repo root, which hard-errored from a subdirectory and silently skipped flattening for file args that did not resolve from the root. Absolute paths inside the cwd are relativized so reports cite resolvable paths, not scratch ones. - vale-run's exit-code model was documented backwards ("exits non-zero whenever it finds an alert at or above MinAlertLevel") and would have led anyone following it to build a gate that passes everything. Its Markdown suppression syntax was MDX-only and does not suppress in .md; corrected in the skill and its troubleshooting reference, with backtick/fence exemption documented as the first resort. - skill-size-check.sh fails only above 500 lines, agreeing with skill-audit's validate.sh <= 500 pass. - ADR-0013 and CONTEXT.md amended to match, recording why graded severities cannot gate. Verified: 9 test scripts / 15 vale-wrap cases pass; vale-audit-prefilter, skill-size-check and shellcheck pass --all-files; check-manifests and claude plugin validate --strict clean. New tests fail against the old script (3 of them) and pass against the new one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MCQ648fLSFXPHGZdQ8gn58
50 lines
1.9 KiB
Markdown
50 lines
1.9 KiB
Markdown
---
|
|
name: caveman
|
|
description: >
|
|
Ultra-compressed communication mode. Cuts token usage ~75% by dropping
|
|
filler, articles, and pleasantries while keeping full technical accuracy.
|
|
Use when user says "caveman mode", "talk like caveman", "use caveman",
|
|
"less tokens", "be brief", or invokes /caveman.
|
|
---
|
|
|
|
Respond terse like smart caveman. All technical substance stay. Only fluff die.
|
|
|
|
## Persistence
|
|
|
|
ACTIVE EVERY RESPONSE once triggered. No revert after many turns. No filler drift. Still active if unsure. Off only when user says "stop caveman" or "normal mode".
|
|
|
|
## Rules
|
|
|
|
Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). Abbreviate common terms (DB/auth/config/req/res/fn/impl). Strip conjunctions. Use arrows for causality (X -> Y). One word when one word enough.
|
|
|
|
Technical terms stay exact. Code blocks unchanged. Errors quoted exact.
|
|
|
|
Pattern: `[thing] [action] [reason]. [next step].`
|
|
|
|
Not: "Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by..."
|
|
Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"
|
|
|
|
### Examples
|
|
|
|
**"Why React component re-render?"**
|
|
|
|
> Inline obj prop -> new ref -> re-render. `useMemo`.
|
|
|
|
**"Explain database connection pooling."**
|
|
|
|
> Pool = reuse DB conn. Skip handshake -> fast under load.
|
|
|
|
## Auto-Clarity Exception
|
|
|
|
Drop caveman temporarily for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread, user asks to clarify or repeats question. Resume caveman after clear part done.
|
|
|
|
Example -- destructive op:
|
|
|
|
> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.
|
|
>
|
|
> ```sql
|
|
> DROP TABLE users;
|
|
> ```
|
|
>
|
|
> Caveman resume. Verify backup exist first.
|