From ai-dev-team
Compression mode for ai-dev-team output. When active, the orchestrator drops articles, filler, hedging-as-decoration; preserves parser anchors and uncertainty semantics; prepends a wire prefix to subagent task descriptions; trims artifact prose without touching artifact structure.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ai-dev-team:caveman (skill is auto-injected by hooks/session-start; compression is always active for ai-dev-team projects)(skill is auto-injected by hooks/session-start; compression is always active for ai-dev-team projects)The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Compression is always active for any ai-dev-team project. The session-start
Compression is always active for any ai-dev-team project. The session-start hook injects this skill into the orchestrator's context.
When active, the orchestrator MUST:
a, an, the), copulas where unambiguous, filler
phrases (I think, let me, we will then, now), narrative scene-
setting, and ceremonial closers (hope that helps, let me know).verb noun over the verb of the noun./feature or /research, all of them — applies the compression contract.The never-compress list below enumerates byte-literals that MUST survive caveman compression unchanged.
These literals MUST appear byte-exact wherever they would have appeared in verbose mode. Do NOT rewrite, abbreviate, or paraphrase them.
The 6 canonical Log-marker templates emitted by the feature skill and parsed by the Continue-mode dispatcher (each appears on a single physical line, no wrapping):
- YYYY-MM-DD: spec_audit_iteration=N
- YYYY-MM-DD: code audit iteration=N; fixed_ids=[...]; accepted_ids=[...]
- YYYY-MM-DD: code audit decisions recorded; iteration=N; pending_fixed=[...]; pending_accepted=[...]; pending_deferred=[...]
- YYYY-MM-DD: code audit passed; iteration=N; verified=[...], accepted=[...], deferred=[...]; evidence=<value>; blockers=[...]
- YYYY-MM-DD: code audit: no auditable files in diff; skipping
- YYYY-MM-DD: (spec|code) audit iteration > 5 justified — <reason>
Each template MUST survive compression byte-exact. Placeholders are N
(decimal integer), [...] (bracketed list contents), <value> (free-form
token), and <reason> (free-form prose). Mandatory punctuation: segments
within a marker are separated by semicolons (; ), with one exception —
the verified=[...], accepted=[...], deferred=[...] triple inside template
#4 uses comma separators between its three sub-fields, then a semicolon
before evidence=. The ; skipping suffix on template #5 and the
> 5 justified — separator on template #6 are also mandatory byte-exact.
The three-line EOF-adjacent footer:
# CROSS-AUDIT EVIDENCE FOOTER
evidence_class: dual_model|single_model
evidence_blockers: [...]
# CROSS-AUDIT EVIDENCE FOOTER, evidence_class:, and
evidence_blockers: are parsed by hooks/lib/check_dispatch_response.py
and MUST appear verbatim.
## ⏸ AWAITING YOUR INPUT
## ⏸ APPROVAL REQUIRED
Scope of a banner = from the H2 line down to the next H2 / horizontal rule
/ EOF. Output the entire banner block byte-exact, including the ⏸ glyph
and surrounding whitespace.
X<N> (e.g. X1, X11).@codex and @senior.The keys allowed_scope:, failing_test_cmd:, expected_failure_pattern:,
expected_pass_pattern:, passing_test_cmd: and the spec checklist literal
- [ ] Step N: are parsed by the developer-workflow + compliance-checker.
They MUST appear unchanged.
Branches (feat/..., fix/...), commands (shell, gh, git, bash),
code blocks (fenced or indented), file paths, URLs, error strings, and
quoted user text. Compression of these is strictly forbidden.
Caveman compresses prose, NOT epistemic posture. Modal verbs (may,
might, could, should), hedging adverbs (possibly, likely,
probably, apparently), tentative qualifiers (approximate, roughly,
around), and explicit confidence markers (uncertain, unclear,
unconfirmed) MUST be retained.
A sentence like "this might fail under heavy load" is NOT compressed to "this fails under heavy load". The uncertainty is the load-bearing content; dropping it changes meaning. Goodhart-proof rule: if removing a word flips a hedged claim into a flat assertion, the word stays.
When the orchestrator spawns a subagent via the Task tool while caveman is active, the Task description MUST begin with the 3-line block:
[COMPRESSION:terse]
Apply ai-dev-team caveman compression rules to your output.
See: skills/caveman/SKILL.md
The literal token [COMPRESSION:terse] is the wire-channel marker. The
subagent inherits the compression contract via this prefix even when
the parent spawn instructions in skills/feature/SKILL.md or
skills/cross-audit/SKILL.md do not mention compression. The wire-prefix
rule applies regardless of which spawn site dispatches the subagent.
Caveman compresses artifact prose. Caveman does NOT touch artifact structure. Specifically:
| Artifact element | Compress? |
|---|---|
| Free-prose paragraphs in §Context, §Design, §Log, §Notes | YES |
| Bullet-list narrative items | YES (drop articles, shorten clauses) |
| Commit-message titles (git) | YES on subject prose; NO on conventional-commit prefix <type>(<scope>): structure |
| YAML frontmatter keys + values | NO — structure-preserved |
Workdoc Planned-block keys (allowed_scope: etc.) | NO |
| Spec §5 Implementation Checklist line literals | NO |
| Code blocks, command lines, file paths, URLs | NO |
| Tables (headers + cells) | YES on cell prose, NO on column structure |
| Banner blocks | NO — byte-exact per §2.3 |
| Cross-audit EVIDENCE FOOTER | NO — byte-exact per §2.2 |
The rule of thumb: if a parser, smoke pin, or downstream skill grep-Fs the content, treat it as structure and leave it alone. If a human reads it narratively, compress the prose while preserving the YAML / markdown frontmatter scaffolding and bullet-list shape.
Commit-message subjects are agent-authored free prose — under caveman they
drop articles + filler like any other narrative bullet. The conventional-
commit prefix <type>(<scope>): is parser-anchored (consumed by
.github/release.yml + the pr-auto-label workflow per CLAUDE.md §Contribution
flow) and stays byte-exact — feat:, feat(scope):, fix:, chore: etc.
keep their colon, parentheses, and surrounding whitespace.
[COMPRESSION:terse] is the wire prefix prepended to every Task
description spawned during an active session.Caveman compression applies to chat / wire / artifact prose only. Caveman does not apply to structured machine payloads generated by or consumed by ai-dev-team tooling. The following data flows are EXEMPT — payloads stay raw, byte-exact, and structurally unchanged:
| Site | Direction | Reason |
|---|---|---|
hooks/lib/render_findings.sh stdin JSON | input to renderer | Field values (description, fix) are read by the renderer as opaque strings; compression would corrupt them. |
hooks/lib/dedupe_findings.sh stdin/stdout JSON | both directions | Dedupe fingerprint hashes the first-80-chars of description; compression alters fingerprint → silent dedup bypass. |
hooks/lib/check_dispatch_response.py stdin | parser input | The parser validates evidence_class: / evidence_blockers: literal byte-shape. Compression of the cross-auditor return upstream would break the parser. |
haiku-finding-scorer Task-prompt JSON | invocation input | Scorer reads field values verbatim per agents/haiku-finding-scorer.md rubric. |
Cross-auditor findings.md body sections under canonical headings (## Findings, finding-ID blocks ### X1 etc.) | output | Structured by the §3.3 cross-audit-probes-foundation schema; downstream consumers grep-F these literals. |
Any printf '%s\n' / echo output piped to a downstream parser within hooks/ or tests/ | output | Wire-protocol — receiver expects byte-exact format. |
Rule of thumb (same heuristic as §5 artifact compression but extended to ad-hoc payloads): if a parser, smoke pin, dedup fingerprint, or downstream tool grep-Fs the content, it is structured machine output — compression rule does not apply.
When in doubt, the orchestrator MUST default to NOT compressing the payload. The cost of an under-compressed JSON payload is zero (downstream handles whitespace); the cost of corrupting a dedup fingerprint is silent finding loss.
§1-§7 above define a RUNTIME contract — orchestrator drops articles in chat / wire / artifact prose during active sessions. §8 adds a SEPARATE authoring contract — NEW KB documents are authored caveman-style by convention. Two contracts, one shared anchor + uncertainty surface:
skills/feature/references/kb-authoring-style.md. Write-time discipline for NEW KB docs (research notes, design specs, retros).§8 reuses §2 (never-compress list — parser anchors) and §3 (uncertainty- preservation invariant) BY REFERENCE. §8 does NOT modify §1-§7 or duplicate their content. The two contracts share the never-compress list and the uncertainty invariant; §8 adds the write-time application.
Convention applies to NEW KB documents:
<kb>/repos/<project>/research/<kb>/repos/<project>/design/<kb>/repos/<project>/research/ (retrospective subtype)Convention does NOT apply to:
<kb>/repos/<project>/security/<audit_slug>-findings.md)
— machine-generated by the cross-auditor agent, classified as structured
machine output per §7 (parser-stable ### X<N> anchors + canonical
headings consumed by render_findings.sh / dedupe_findings.sh).Authoring-time discipline is operationalized by the pre-commit checklist
in skills/feature/references/kb-authoring-style.md. Authors (human +
dev-agent) run the checklist before committing a new KB doc:
See skills/feature/references/kb-authoring-style.md for canonical
commands, worked good/bad examples, and the full checklist body.
npx claudepluginhub roman-karpovich/ai-dev-team --plugin ai-dev-teamGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.