Blog

The CWMD framework: stop Claude MCP from drifting on long-running content workflows

Free drop-in framework for Claude MCP content workflows. Six Claude skill files (intake, signals, patterns, calendar, schedule, context-health-check) plus a BRAND_CONTEXT.md memory template. Maps 1:1 to Anthropic's published context-engineering primitives (compaction, structured note-taking, tool-result clearing). Built for teams running Claude + MCP across LinkedIn, Instagram, TikTok, X, and YouTube.

← Back to blog

What this article gives you: the framework we use for long-running content workflows on Claude + MCP, the six skill files that implement it, and an honest list of what it still won't do for you. Free. Drop-in.

TL;DR: When you give Claude MCP access to your social accounts, the bottleneck moves. It is no longer access to data. It is controlling the reasoning layer sitting on top of the data. The framework below — CWMD: Context, Workflow, Memory, Decision — keeps that reasoning layer clean across stages, sessions, and accounts. It maps 1:1 to the techniques Anthropic publishes for long-running agents (compaction, structured note-taking, tool-result clearing). You ship it as six Claude skill files. It works on day one.

The problem most teams are about to walk into

With MCP connected, Claude can now pull performance data, analyze content patterns, compare platforms, identify audience shifts, generate content calendars, and schedule posts — from one conversation.

The instinct is to dump everything into one chat: 30 days of posts, engagement metrics, audience data, brand guidelines, campaign notes, previous strategies. At first the outputs look great. Then quality drifts. Claude starts mixing outdated content patterns with current recommendations. Old campaign assumptions creep into next week's calendar. Hooks get recycled from formats that died two weeks ago.

This is not the model being weak. It is context rot — the published phenomenon that as the number of tokens in a context window grows, the model's ability to accurately recall and reason over that context decreases. Even when there is window left, attention is finite. Anthropic's engineering team wrote up the full pattern here. It is real, it is measurable, and it is the root cause of every "Claude was great last week, now it's mid" complaint we hear from content teams.

The four levers that fix it

Anthropic names three techniques for long-horizon agent tasks: compaction (summarize older context, restart cleanly), structured note-taking (write to a file outside the context window, reload at need), and sub-agent architectures (specialist runs in an isolated window, returns a distilled summary). On top of those, the Claude API ships first-party primitives: server-side compaction, tool-result clearing, and a memory tool (docs).

For content workflows specifically, those primitives map onto four things you can manage manually inside one Claude project. We call it CWMD. The naming is deliberate — these are the same four levers everyone keeps reaching for and giving different names.

Lever What it does Maps to
C — Context Drops raw data between stages. Each stage carries only what the next stage needs. Tool-result clearing + compaction
W — Workflow One trigger prompt per stage transition. The chat moves from signals to patterns to calendar to schedule on rails. Orchestrator-worker / stage-gated chaining
M — Memory A BRAND_CONTEXT.md file the agent reads on session start and updates at every transition. Survives chat resets. Structured note-taking / memory tool
D — Decision Every stage names what it ruled in and out with confidence level before the next stage runs. No silent jumps. Conditional routing with confidence gates

How to install

  1. Download the six skill files below.
  2. Open Claude. Go to settings → customize → skills tab.
  3. Click create. Upload each .md file.
  4. Download BRAND_CONTEXT.template.md and fill it out for your account. Keep this file local. You will paste it in at session start.
  5. All six skills are now active across every Claude session.

How to use

One trigger prompt per stage transition. Type them exactly.

Start of a new account:

@intake

Then paste your BRAND_CONTEXT.md. This is the memory seed.

When intake is locked in:

@signals pull last 30 days

When signals are surfaced:

@signals-to-patterns

When patterns are confirmed:

@patterns-to-calendar 30 days

When the calendar is approved:

@calendar-to-schedule

The context health check runs silently the whole time. When context gets crowded it will stop and say:

"Context is getting crowded. Here is where we are: [summary in under 100 words]. Start a new chat, reinstall your skills, paste this summary to continue."

When that happens, follow it. The next session stays clean.

The six skill files

intake.md — seeds the memory file. Captures brand voice, content pillars, audience segments, KPIs, benchmarks, active campaigns, do-not-touch list. Walks you through every section. Refuses to proceed if anything is vague. download

signals.md — pulls cross-platform performance and audience data via MCP. Flags shifts against your benchmarks from BRAND_CONTEXT.md only. Does not diagnose. Does not interpret. Surfaces signals only. download

signals-to-patterns.md — drops all raw numbers. For every flagged signal, runs a causal sequence: platform algorithm shift → audience shift → format fatigue → pillar mismatch → hook pattern. Names a confirmed pattern with confidence level. Doesn't skip steps. download

patterns-to-calendar.md — drops ruled-out patterns. Generates a 7- or 30-day calendar grounded in confirmed patterns plus BRAND_CONTEXT.md. Applies guardrails: pillar coverage, format diversity, dead format check, hook recycling, audience segment coverage, platform cadence. Updates the memory file before ending. download

calendar-to-schedule.md — drops everything except the approved calendar. Writes platform-specific copy per post (LinkedIn-length on LinkedIn, X-length on X — no one-size-fits-all). Picks send times from active-hours data. Flags anything touching the do-not-touch list for human approval before publishing. Schedules the rest via MCP. download

context-health-check.md — runs passively across every session. Watches for seven failure modes: mixed-stage context, ruled-out hypotheses leaking forward, dead formats being recommended, multiple-account contamination, turn count over 12, platform confusion, brand voice drift. Calls for a reset before output degrades. download

BRAND_CONTEXT.template.md — the memory file. Not a skill — a notebook the agent owns. You fill it in once per account, paste it at session start, and the skills update it at the right transitions. download

A worked example (B2B + B2C on the same brand)

Suppose you run content for a brand that sells to engineering leaders on LinkedIn and to developers on X and YouTube. Two segments. Three platforms. One brand.

You run @intake. BRAND_CONTEXT.md captures: voice (direct, technical, slightly contrarian), pillars (build-in-public, architecture decisions, post-mortems), segments (engineering-leader-LinkedIn, developer-XYT), platform cadence (LinkedIn 3/week, X 2/day, YouTube 1/week), benchmarks per metric per platform.

You run @signals last 30 days. Claude pulls everything via MCP and flags: LinkedIn engagement rate down 38% on talking-head video posts, X follower growth flat, YouTube watch time up 12% on long-form post-mortems, comment sentiment down on one LinkedIn post about a competitor.

You run @signals-to-patterns. Raw numbers drop. The causal sequence runs. Output:

  • LinkedIn talking-head video: FORMAT FATIGUE, confidence HIGH. Same format, 4 posts in the window, all below benchmark, format performed above benchmark in prior 60 days.
  • X follower flat: INCONCLUSIVE, confidence LOW. Not enough variance to call.
  • YouTube long-form: PILLAR MATCH, confidence HIGH. Post-mortem pillar overperforming, no fatigue signal.
  • LinkedIn competitor post: HOOK PATTERN, confidence MEDIUM. Combative opening line under-resonates with this segment.

You run @patterns-to-calendar 30 days. Ruled-out hypotheses drop. The calendar respects: talking-head video capped at 10% and flagged experimental, post-mortems boosted on YouTube, no combative openers on LinkedIn for the engineering-leader segment, X cadence held at 2/day. The dead formats list in BRAND_CONTEXT.md gets updated with "LinkedIn talking-head video, 2026-XX-XX, audience fatigue confirmed."

You run @calendar-to-schedule. Each post gets platform-native copy. Send times come from your account's active-hours data, not generic best-times. Two posts touch the do-not-touch list and are held for your approval. The rest schedule via MCP. You go to lunch.

Forty-eight hours later you run @signals again. The loop closes.

A note before you use this

This works well on day one. Over time, a few things will come up.

Every time you launch a new campaign you will need to add it to BRAND_CONTEXT.md. When an audience segment shifts (you start selling to a new persona, you drop one) you will need to update the file. When the context health check calls for a reset mid-session, you copy the summary, open a new chat, paste your BRAND_CONTEXT.md, paste the summary, and continue from there.

If you manage multiple accounts you will be maintaining one BRAND_CONTEXT.md per account, in parallel, and you have to be careful never to load two of them into the same session. Cross-account contamination is the failure mode that wrecks this fastest.

None of this is a reason not to use the framework. It is just worth knowing before you build your weekly workflow around it.

What this looks like without the manual file maintenance

The framework above is the same four levers (Context, Workflow, Memory, Decision) you would build into a hosted product. The reason hosted products exist is that the file-maintenance work compounds: one account is easy, three is friction, ten is a part-time job.

Venti is built around those four levers, applied as a durable surface instead of six markdown files and a paste-the-summary ritual. The brand context lives in one place per account, the workflow gates run as managed transitions, the memory layer persists between sessions automatically, and the decision thresholds (confidence levels, guardrails, do-not-touch flags) are configured once and enforced everywhere. Same framework. Without the spreadsheet of which file goes with which client.

If you tried CWMD with the markdown files first and hit the maintenance ceiling — that is exactly what we built for. Request early access

References (every claim in this post is grounded in published research)

Frequently asked questions

What is the CWMD framework?
CWMD stands for Context, Workflow, Memory, Decision — the four levers you have to manage when running long-horizon content workflows on Claude + MCP. The framework ships as six Claude skill files plus a BRAND_CONTEXT.md memory template. Each lever maps to a primitive Anthropic publishes for long-running agents: tool-result clearing, stage-gated chaining, structured note-taking, and conditional routing with confidence gates.
Why does Claude get worse on long content sessions even with a big context window?
Anthropic's engineering team named this "context rot" — as the number of tokens grows, the model's ability to recall and reason over them decreases, even when there is window left. Attention is finite. Stale tool results, ruled-out hypotheses, and outdated campaign assumptions all compete for the same attention budget as the current decision. The fix is not a bigger window; the fix is curating what stays in.
Why six skill files and not one big system prompt?
Each stage needs different information to make a good decision. The audit stage needs raw performance data. The pattern stage needs flagged signals only. The calendar stage needs confirmed patterns only. The schedule stage needs the approved plan only. One giant prompt makes Claude carry everything forward at every stage. Splitting them lets each transition explicitly drop what the next stage does not need.
What does BRAND_CONTEXT.md do?
It is the memory layer. Anthropic's published pattern for long-running agents is "structured note-taking" — write what matters to a file outside the context window, reload at need. BRAND_CONTEXT.md captures brand voice, content pillars, audience segments, KPIs, benchmarks, dead formats, active campaigns, and a do-not-touch list. Claude reads it at session start and updates it at every stage transition. It survives chat resets.
Does this work for multiple accounts?
It works one account at a time. You maintain one BRAND_CONTEXT.md per account. Loading two into the same session is the failure mode that wrecks the framework fastest — the context-health-check skill explicitly watches for cross-account contamination and stops the session when it detects it.
Is this a replacement for a hosted content tool?
No. CWMD is the manual version of what a hosted product does for you. It works on day one and keeps working as long as you maintain the BRAND_CONTEXT.md files and run the trigger prompts in order. The maintenance scales linearly with the number of accounts you run. If that maintenance becomes a part-time job, Venti is built around the same four levers without the file management.

More from the blog

Request early accessAll postsHome

The CWMD framework: stop Claude MCP from drifting on long-running content workflows — Venti