← Files Marketing CouncilARCHIVED FILE
skills/media-strategy/references/skill-spec.json
6.17 KB · Oct 2, 2026 · 00:31 UTC
{
"name": "media-strategy",
"purpose": "Assign channel jobs, reach/frequency logic, budget principles, and measurement boundaries",
"baseline_failures": [
"allocating by platform habit",
"equating attribution with incrementality",
"channels without defined jobs"
],
"activation": {
"positive": [
"Help me make the media allocation using the evidence we have",
"Review our media allocation and tell me what decision to make next",
"Build a rigorous media allocation for this marketing problem"
],
"implicit": [
"We have conflicting signals and need a decision about media allocation",
"I have data but I am not sure what it means for media allocation",
"Challenge my assumptions before we finalize media allocation"
],
"negative": [
"Write polished copy only; the strategy and decision are already approved",
"Summarize the supplied material without making a marketing decision"
],
"collisions": [
"The brief spans several marketing functions and no single function clearly owns the next decision"
]
},
"outputs": [
"media strategy",
"channel job map",
"allocation and measurement rules"
],
"execution": {
"primary_agent": "channel-strategist",
"counterweight_agent": "marketing-skeptic",
"primary_hook": "horizon-balance-check",
"evidence_hook": "evidence-gate",
"binding_source": "../../routing/skill-execution-bindings.json"
},
"invariants": [
"Do not finalize media allocation without separating evidence from inference.",
"Do not invent customer, market, platform, product, policy, or performance facts.",
"State material uncertainty and reversal evidence instead of hiding it behind confident prose."
],
"non_goals": [
"Generic brainstorming without a decision boundary",
"Pure copy polishing or formatting after the strategy is already approved",
"Cross-functional orchestration when another focused skill clearly owns the work"
],
"workflow": [
{
"id": "frame",
"action": "Frame the media allocation and the decision owner for media-strategy.",
"why": "Prevents solving an adjacent problem or drifting into tactics.",
"freedom": "low",
"evidence_required": "User objective, constraints, and the decision that must change.",
"completion": "The media allocation is stated as one explicit decision question."
},
{
"id": "evidence",
"action": "Collect and classify the minimum evidence needed for media allocation: audience/media behavior, budget constraints, incrementality evidence.",
"why": "Separates known facts from inference and unsupported assumptions.",
"freedom": "medium",
"evidence_required": "Primary supplied evidence first; current external sources only when freshness matters.",
"completion": "Evidence is tagged as fact, inference, assumption, or unknown and material gaps are visible."
},
{
"id": "diagnose",
"action": "Test competing explanations for the media allocation instead of accepting the first plausible story.",
"why": "Reduces confirmation bias and premature prescription.",
"freedom": "high",
"evidence_required": "At least one credible alternative explanation or counterweight.",
"completion": "A primary explanation is selected and at least one alternative is rejected with reasons."
},
{
"id": "decide",
"action": "Produce the media allocation with explicit trade-offs, risks, and what would reverse it.",
"why": "Turns analysis into an accountable marketing decision.",
"freedom": "medium",
"evidence_required": "Decision criteria tied to the evidence ledger.",
"completion": "The recommended decision, rejected alternative, risks, and reversal evidence are explicit."
},
{
"id": "measure",
"action": "Define how the media allocation will be observed, challenged, and handed off.",
"why": "Prevents recommendation theater and orphaned strategy.",
"freedom": "medium",
"evidence_required": "Observable outcome, leading signal, and next owner.",
"completion": "Measurement, confidence, next handoff, and stop/escalation condition are stated."
}
],
"capabilities": {
"required": [
"reason over supplied context",
"read packaged references"
],
"optional": [
"current web research when freshness is material",
"deterministic calculation or parsing when available"
],
"not_allowed": [
"fabricate tool execution",
"fabricate evidence",
"perform irreversible external actions without authorization"
]
},
"evidence_policy": {
"priority": [
"user-provided primary evidence",
"authoritative first-party sources",
"reputable independent evidence"
],
"freshness": "Verify current platform, policy, pricing, market, and product claims when they materially affect the decision.",
"status_labels": [
"fact",
"inference",
"assumption",
"unknown"
]
},
"failure_behavior": "If evidence is insufficient for a defensible media allocation, return the missing evidence, safest provisional interpretation, and the next smallest research action instead of guessing.",
"completion_conditions": [
"The media allocation is explicit and answers the user’s decision question.",
"Evidence and inference are distinguishable.",
"At least one credible alternative or counterweight was considered.",
"Outputs, measurement, confidence, and reversal evidence are present.",
"Any required handoff is named and bounded."
],
"handoffs": {
"fallback": "marketing-council",
"dynamic_router": "../../scripts/dynamic_router.py",
"skill_router": "../../scripts/skill_router.py",
"neural_router": "../../scripts/neural_router.py",
"rule": "Use the dynamic router only when the request explicitly establishes multiple dependent decision boundaries; use Council when ownership is ambiguous."
},
"host_targets": [
"ChatGPT",
"Codex",
"Claude Code",
"generic Agent Skills hosts"
],
"eval_files": [
"evals/activation.yml",
"evals/behavior.yml",
"evals/pressure.yml",
"evals/regression.yml"
]
}
SHA-256: a0a469fac492e2db99ff7b0f13a79d3588ae78c867c4311ba78068b2e78aa373