# Ship Gate

> Define and enforce what may go out unreviewed, what is reviewed by sample, and what a human reads every time. Use to create marketing/policy/ship-policy.md, to classify a draft, or when the review queue is growing faster than it is cleared.

- Skill: `wojciechluszczynski/ship-gate` (Agent Skill)
- Install (CLI): `npx skillmds@latest add wojciechluszczynski/ship-gate`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wojciechluszczynski/ship-gate/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: wojciechluszczynski (https://skillmd.com/u/wojciechluszczynski)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/wojciechluszczynski/ship-gate

---


# /operator-cmo:ship-gate

The common failure of an agent marketing stack is not that it publishes
something terrible. It is that a human promises to approve everything, the
stack produces faster than the human reads, and approval quietly becomes either
a queue or a rubber stamp.

Reviewing every item does not scale. Reviewing nothing is negligent. So review
by tier, and cap production at the review capacity you actually have.

## The three tiers

**Tier A: goes out.** Low blast radius, reversible, makes no claims about the
company or a customer. Internal briefs, keyword research, outlines, list
building, drafts that stay in the repo. No human step.

**Tier B: sampled.** Reversible, public, makes only claims already evidenced in
positioning.md. Social posts, blog updates, newsletter sections, landing page
copy edits. One in N is read in full before it goes out, N is set in the policy
file, and every item is still checked automatically for the tier B rules below.
If two sampled items in a rolling window of twenty fail, the tier drops to C
for that channel until a review clears it. That rule is what makes sampling
honest rather than optimistic.

**Tier C: a human reads every one.** Anything that is hard to reverse or that
speaks for the company in a way a correction cannot catch up with. Pricing,
legal and compliance copy, named customer references, first contact with a
named account, paid spend, anything with a number that is not in
positioning.md, anything a regulator or a lawyer would read differently than a
marketer.

## The capacity rule

This is the part that stops the bottleneck.

`quarter.md` states review capacity per week, by tier. Before producing, the
`brief` skill counts the queue in `marketing/drafts/`. When the queue plus the
new item exceeds capacity, **production throttles**. It does not downgrade a
tier, and it does not ship the overflow unreviewed.

Throughput is what gets shipped, not what gets generated. A stack producing 40
assets a week into a 10-a-week review capacity has a throughput of 10 and a
backlog of 30, and reporting it as 40 is the most common lie in this category.

## The automatic checks

Every draft at any tier is checked before it can leave `marketing/drafts/`:

- Header present, naming bet, decision rev, brief and gate tier.
- `claims_flagged: 0`. Any flagged claim forces tier C.
- No em dashes, no banned phrases from the content skill's list.
- Every number traceable to positioning.md.
- For outbound: every personalised line has a `src:`, and the list was filtered
  against the do-not-contact file.

A draft failing any of these does not get a tier. It goes back.

## Writing the policy

On first run, create `marketing/policy/ship-policy.md`:

```markdown
# Ship policy
rev: YYYY-MM-DD · owner: <name>

## Tier A: goes out
<channels and asset types>

## Tier B: sampled 1 in <N>
<channels and asset types>
escalate to C if 2 of the last 20 sampled items fail

## Tier C: human reads every one
<channels and asset types>

## Never automated
<the short list of things this company will not let an agent do at all>

## Capacity
tier B: <n>/week · tier C: <n>/week
```

Ask the operator to fill "Never automated" themselves and do not suggest
defaults for it. It is the one section that should come from their own risk
appetite rather than from a template.

## Classify mode

Given a draft, read its header and content, apply the tiers, run the automatic
checks, and return: tier, checks passed or failed, whether it is inside
capacity this week, and what the human has to do next. Then stop. This skill
never publishes and never sends. The last action is always a person's.

No em dashes.

