# Brief Forge

> brief-forge

- Skill: `themattberman/brief-forge` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add themattberman/brief-forge`
- Raw SKILL.md: https://api.skillmd.com/api/skills/themattberman/brief-forge/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: TheMattBerman (https://skillmd.com/u/themattberman)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/themattberman/brief-forge

---


# brief-forge

you write the artifacts an operator executes from without re-opening the corpus. the contract: a competent operator can build the ad set, write the page, assign the article, or email the creator straight off your brief. receipts are inline. if they have to go back to the source to act, you failed.

read each brief's template from `references/brief-templates/` before you write it. the template defines the required-field headers. do not invent or rename fields.

## inputs

- `06-angle-slate.md` (the ranked opportunities: this is the spine of the brief pack)
- `04-objection-map.md` + `04b-competitor-map.md`
- `05-creator-map.md`
- `03-voice-map.md`
- `02-evidence-cards.json` (for receipts)
- `00b-scope-contract.md` (thin_pool + corpus_limitation_note)
- previous run's `08-watchlist.md` if it exists (for `delta_vs_last_run`)

## output 1: 07-brief-pack.md

six briefs, in this order, each from its template. each must satisfy the market-voice-run schema `brief` def: a `brief_type`, `source_receipts` (min 1 `evidence_id`), `what_we_would_NOT_say` (min 2), and an `operator_action` (`{verb, object, channel_or_owner, this_week}`, verb from the enum: build, write, email, pause, test, capture, ship, assign, survey).

1. **ad_angle** -> `references/brief-templates/ad-angle-brief.md`
2. **landing_page_copy** -> `references/brief-templates/landing-page-copy-brief.md`
3. **seo_content** -> `references/brief-templates/seo-content-brief.md`
4. **competitor_positioning** -> `references/brief-templates/competitor-positioning-brief.md`
5. **creator_partnership** -> `references/brief-templates/creator-partnership-brief.md`
6. **product_messaging** -> `references/brief-templates/product-messaging-brief.md`

each brief draws from the highest-ranked relevant opportunities and the maps. never put a `weak_pattern` or `do_not_use_yet` claim into a brief as if it were ready; if you use directional language, mark it directional and route it to a `test` or `capture` action.

## output 2: 08-watchlist.md

the serial artifact. it's the only one that compares to last run and the only one that holds the not-yet-ready items. write it from `references/brief-templates/category-watchlist-brief.md`. it carries:

- **rising_phrases**: with velocity / recurrence `delta_vs_last_run` (if no prior run, say "baseline run, no delta yet").
- **creators_framing_category**: who's minting the language to track.
- **competitor_claims_spreading**: claims gaining ground you may need to pre-empt.
- **objections_getting_louder**: friction trending up.
- **formats_hooks_to_test**: mechanics worth a cheap test.
- **noise_to_ignore**: explicit. the loud-but-useless clusters (the "pricing 47 mentions" type) named so they stop re-surfacing.
- this is where `weak_pattern` and `do_not_use_yet` items live. items the angle slate barred land here with a reason and a re-check cadence.

each watchlist line carries `source_receipts` + a confidence label. the file ends in ONE `operator_action`: the single thing to do this week.

## the banned-phrase gate (self-check before you finish)

scan your own brief copy. if any of these appear in the brief's actual copy, rewrite the line:

```
actionable insights, single source of truth, busy founders want efficiency,
customers value authenticity, seamless, robust, synergy, elevate, unlock,
leverage (as a verb), supercharge, game-changer, next-gen, best-in-class
```

and: if a phrase appears in BOTH a brief's copy AND its own `what_we_would_NOT_say` list, that's a contradiction the validator throws. fix it.

## degradation

- thin pool: write the briefs you can support, mark the rest "insufficient corpus this run," and put a `survey`/`capture` operator_action on the gaps. do not pad.
- a brief with no qualifying receipt is not shipped. say "no direct_quote/strong_inference evidence for this brief yet" and route to capture.

## hard rules

- every brief ends in an operator_action and carries >= 1 source receipt.
- every brief has a What We Would NOT Say block, min 2 entries.
- no em dashes. lowercase headers. CAPS sparingly. contractions. specific numbers, never round hype. the operator stays the editor.

