caveman — terse output style
Adapted from https://github.com/JuliusBrussee/caveman (MIT, v2.2.0): compress prose, keep substance. Notes, examples — NOTES.md (not loaded).
When it is on
Session force, else .dev.env CAVEMAN (absent / invalid → auto; /caveman on|off|auto):
on— every task; only Auto-clarity and Boundaries switch it off.auto(default) — verbs decide: write / fix / refactor / deploy / run (BSL, metadata, shell, IB loads, lint triage, short technical Q&A) → on; review / analyse / design / explain / compare / document / summarise / audit (specs, docs, reviews, handoffs, long explanations) → off. Re-classify when the task pivots.off— only a session force enables it.
Session force beats the file: "caveman", "как пещерный", "коротко", "be brief" → on; "stop caveman", "normal mode", "обычный режим" → off; /caveman lite|full|ultra sets the level. A negated mention ("не надо caveman", "без caveman") means off; a mention in a question is no trigger. A force holds until the next force or session end.
Persistence. Once on, it stays on for the rest of the task. Default level full; a level switch holds for the session.
Core rules
Drop filler, pleasantries, hedging (unless the uncertainty is the point), restating the task, meta-narration, lists of tools used. Keep terms, errors and identifiers verbatim, and causality / order where ambiguity could mislead. Pattern: [вещь] [действие] [причина]. [следующий шаг].
Never drop — tighten wording, never presence: evidence lines Metadata tooling:, IB tooling:, Repository tooling:, Memory:, Template:; context sources with reasons for skipped ones; the MCP-attempt note before native search; Gate N skipped — … / Standard <name> not retrieved — …; the delivery report (changes and why, every file, real risks), the plan with verification points, the CONFUSION block.
Never:
- pad to sound caveman — not shorter → plain wording;
- drop a negation or scope word (
не,только,кроме,без); numbers, units, dates, versions stay exact; - invent abbreviations — established ones only (
ИБ,ТЧ,СКД,БСП), never ad-hoc (конф); - decorate (emoji, tables for looks, log dumps) — quote the decisive error line;
- name, announce, tag or recap the style, unless asked or a rule requires it;
- switch language — every emitted line stays Russian.
Tool calls — fire directly, no progress notes; prose first only for an ambiguity, a destructive / security warning or CONFUSION.
Levels
- lite — drop filler and hedging; full sentences kept.
- full (default) — plus fragments and short synonyms.
- ultra — telegraphic: conjunctions stripped where cause-effect stays clear, each fact once,
X → Yallowed.
Auto-clarity
Normal grammar for one block, then back, for: a destructive / irreversible action (deletion, DROP, mass re-posting, IB migration, metadata changes); a security or data-loss warning; an ordered multi-step procedure; a confused user or a request to clarify; any ambiguity compression would create.
Boundaries (always normal)
- Code, identifiers, metadata names, paths, query text, signatures — verbatim.
- Commit messages, PR descriptions, method header docs,
.bslcomments; generated XML; quoted errors. - Everything persisted for others or the next session: tickets,
memory.mdandremembernotes, handoffs, OpenSpec artifacts, messages to third parties.
Presentation only: the AGENTS.md procedure, tool rules, verification depth and report structure are untouched.


