# content-voice — bucket knowledge scaffold (core baseline + operator overlay)

**Bucket:** 6 of 7. Referenced from CLAUDE.md.template Bucket 6.

## What this bucket carries

Content that lands in the operator's voice, not generic AI-speak. Routing content through the right pipeline. Voice guides, banned AI-tells, capture procedure for new tells.

**Bucket 6 is UNIQUE among the seven — it splits between core baseline and operator overlay.** Core ships the taxonomy, the generic-across-operators bans, and the capture mechanism. Operators overlay their specific voice + specific tells on top.

## Scope — core baseline vs operator overlay

**Core baseline (this directory).**

- The **13-category taxonomy** of AI-tell categories. Every operator's banned-tells doc uses the same category shape.
- **Generic AI patterns every operator should ban** — em-dash filler, "In today's landscape", "delve into", "leverage", "let's unpack", "the truth is", forced-contrast "it's not X, it's Y" without a legitimate contrast, adjective-piling, rhetorical-question section headings, setup-colons, sentence-final "and that changes everything".
- **New-tell capture procedure** — the mechanism operators follow to add new tells via Librarian synthesis.
- **Content-pipeline routing** — route content through the right role (`writer` for prose, surface-specialised writers for constrained targets).
- **Voice-guide shape pointer** — cross-reference to the voice-guide.md template skeleton.
- **Banned-ai-tells shape pointer** — cross-reference to the banned-ai-tells.md template skeleton.

**Operator overlay** (`operator/knowledge/writing/`, or the operator's chosen path).

- The operator's specific voice content (`voice-guide.md`).
- The operator's specific banned tells layered on the baseline. Category 13 (operator-specific) is fully populated; categories 1-12 are extended with operator-specific entries on top of the baseline generic list.
- The specific writer pipeline (`writer` alone, or `writer` + surface specialisations like `linkedin-writer`).
- Surface-specific engagement / mission docs (out of Bucket 6 scope proper — content-publishing lives in operator overlay of Bucket 7 or a separate operator domain).

## Canonical entries in this scaffold

| File | Purpose |
|---|---|
| `banned-ai-tells-baseline.md` | The 13-category taxonomy + generic-across-operators banned patterns + capture procedure. |
| `banned-ai-tells-taxonomy.md` | The 13 category names + one-line descriptions each. Referenced by operator overlays. |
| `new-tell-capture-procedure.md` | The mechanism operators follow to capture new tells via Librarian synthesis. |
| `content-pipeline-routing.md` | Route content through the right pipeline; content-publishing extensions are operator-side. |
| `voice-guide-shape.md` | Pointer at `@stravica-ai/digital-operator-pa/templates/voice-guide.md`; explains how operators populate. |
| `banned-ai-tells-shape.md` | Pointer at `@stravica-ai/digital-operator-pa/templates/banned-ai-tells.md`; explains how operators overlay. |

## How the split works in practice

The operator's `banned-ai-tells.md` inherits the 13-category shape from `banned-ai-tells-taxonomy.md`. Categories 1-12 have generic-across-operators bans in the CORE baseline; the operator extends each with operator-specific entries. Category 13 (Operator-specific) is populated fully from the operator side.

Overlay convention:

- Category headings MATCH the baseline. Same names, same order.
- Baseline entries stay in place; operator entries are added under existing categories.
- Category 13 (Operator-specific) is fully populated from the operator side.

**Shape enforcement** for 0.2.0 is documentation-contract only. A lint rule (`pa lint voice-shape`) may land in a later minor release once the pattern is validated in operator practice — for now, the operator maintains shape parity manually.

## How operators adopt this

Two choices:

1. **Overlay approach (recommended).** Operator's `operator/knowledge/writing/banned-ai-tells.md` inherits the 13-category shape; add operator-specific entries under each existing category and populate category 13. The core `banned-ai-tells-baseline.md` remains the source of the generic bans (referenced, not copied).
2. **Full-copy approach.** Operator copies the baseline into the operator repo and edits in place. Simpler but drifts from core over time; suitable for operators who don't intend to pull core updates.

## Related

- CLAUDE.md.template Bucket 6 — the rule list that references this deeper doc.
- `packages/core/roles/writer/definition.md` — the base writer role.
- `@stravica-ai/digital-operator-pa/templates/voice-guide.md` — voice-guide skeleton.
- `@stravica-ai/digital-operator-pa/templates/banned-ai-tells.md` — banned-tells skeleton.
