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
- Download the six skill files below.
- Open Claude. Go to settings → customize → skills tab.
- Click create. Upload each
.mdfile. - Download
BRAND_CONTEXT.template.mdand fill it out for your account. Keep this file local. You will paste it in at session start. - 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)
- Anthropic — Effective context engineering for AI agents (compaction, structured note-taking, sub-agents)
- Anthropic — Effective harnesses for long-running agents (initializer + incremental session pattern)
- Claude API — Manage tool context (tool-result clearing, prompt caching, tool search)
- Claude API — Context windows (server-side compaction, context awareness in Sonnet 4.6 / Opus 4.7)
- Claude API — Tool search tool (defer_loading, dynamic tool discovery for MCP setups with many servers)