agentleFS
ARCASSystemsARCASSystems/FounderOS/skills/campaign-from-theme/SKILL.md

campaign-from-theme

Skill7 starsChanged 19 days agoMITView on GitHub

Turn one theme into a structured marketing campaign. Say "build a campaign", "campaign for <topic>", "plan a campaign", "draft a launch campaign", or run /founder-os:campaign-from-theme. The skill REFUSES to generate content until the user has answered five funnel-gating questions: speaker (operator or brand), objective (awareness / consideration / conversion / retention / advocacy), audience segment + temperature (cold / warm / customer), channel-fit logic, and success metric. Output is a campaign brief with sequencing rationale, then 3 to 7 content drafts in the right voice. Reads brands/<slug>/voice.yml + positioning.yml if a brand is named, else core/voice-profile.yml + core/identity.md.

The file

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 6 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do not produce a single content draft until ALL FIVE gate questions are answered:

    line 18
  2. Distinctive:

    If the user pushes for drafts without answering, say:

    line 26
  3. Distinctive:

    If the user gives a multi-channel answer for objective ("I want awareness AND conversion"), push back once and force a single primary.

    line 50
  4. Very specific:

    Never suggest a channel that is on the brand's channels.off_limits list.

    line 53
  5. Very specific:

    Never invent a CTA that is not in the operator's available_ctas list.

    line 54
  6. Distinctive:

    If the operator says the audience is everyone, push back: "Everyone is no one.

    line 55
  7. Distinctive:

    If the operator picks 5+ channels, push back: "A campaign that runs on 5+ channels well requires more execution capacity than most solo …

    line 56
  8. Distinctive:

    Forgetting the audience pain language: If positioning has buyer_language, lead with it.

    line 67

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Campaign from Theme

Runs on: local-writes - creates or edits files in your OS folder; needs an agent with write access.

You are turning a theme into a sequenced, funnel-aware campaign brief plus content drafts. The output is NOT a content calendar from an industry template. It is a brief that names what the campaign is supposed to accomplish, who it is for, where they are in the funnel, why each piece comes before the next, and what success looks like - followed by drafts that survive on first attempt because the inputs were forced clear up front.

<Instruction-gate> Do not produce a single content draft until ALL FIVE gate questions are answered:
  1. Speaker - operator voice or a specific brand voice
  2. Objective - awareness / consideration / conversion / retention / advocacy
  3. Audience - segment AND temperature (cold / warm / customer)
  4. Channel-fit - which channels survive the speaker + audience + objective intersection
  5. Success metric - one number that tells the operator if the campaign worked

If the user pushes for drafts without answering, say:

I can produce drafts after the five gate questions. Industry-standard campaign generators skip these and the output gets thrown away. Five questions, then drafts.

Then ask the questions ONE at a time. Do not bundle. </Instruction-gate>

Phase map - load the reference when you reach the phase

This file is the router. The full procedure lives in two reference files. Load the gates file when you start; load the sequencing-and-draft file only once all five gates plus constraints are answered.

PhaseWhat it doesLoad
0-6Theme capture, then the five gates (speaker, objective, audience, channel-fit, success metric) and constraints (timeline, CTAs)references/gates.md
7-9Sequencing logic and rationale, drafting each piece in the output format, saving the brief, re-run behaviorreferences/sequencing-and-draft.md

Walk Phases 0-6 from references/gates.md first, ONE question at a time. Only after all five gates plus the constraints are captured do you read references/sequencing-and-draft.md and produce the sequence and drafts.


Rules

  • The five gates are non-negotiable. Refuse to draft without all five.
  • One question at a time. Wait for answer.
  • If the user gives a multi-channel answer for objective ("I want awareness AND conversion"), push back once and force a single primary.
  • Anti-AI rules from your-voice apply to every draft.
  • Buyer language from positioning takes priority over invented hooks. If the audience says "I want something that lasts", use that line - do not clean it up.
  • Never suggest a channel that is on the brand's channels.off_limits list.
  • Never invent a CTA that is not in the operator's available_ctas list.
  • If the operator says the audience is everyone, push back: "Everyone is no one. Pick the segment most likely to convert. The campaign can speak to adjacent segments without optimizing for them."
  • If the operator picks 5+ channels, push back: "A campaign that runs on 5+ channels well requires more execution capacity than most solo operators have. Pick 1 primary and up to 2 support. We can repeat the model on other channels later."

Failure modes to watch

  • Generating without gating. The whole point of this skill is the gate. Skipping it produces slop. Always ask the five questions, even if the user says "just give me ideas".
  • Industry-standard sequencing. "Hook, story, CTA" is not a sequencing rationale - it is a single-post pattern. A campaign sequence is about how piece 1 earns piece 2, not about each piece's internal structure.
  • Channel-stuffing. More channels = more risk of misfit. Default to 1 primary + 1 support. Only add more when the operator has documented capacity.
  • Vanity metric pick. "More followers" is rarely a success metric for a campaign. Push toward something tied to the objective.
  • Hook-temperature mismatch. A cold-audience hook that assumes brand knowledge will fail silently. Check temperature before writing each hook.
  • Forgetting the audience pain language. If positioning has buyer_language, lead with it. Operators are convinced their hooks are sharper than what the buyer actually says. They are usually wrong.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.