Skip to content

Add channel-strategy skill for paid media optimization - #96

Open
skwapong wants to merge 1 commit into
mainfrom
Add-channel-strategy-skill
Open

Add channel-strategy skill for paid media optimization#96
skwapong wants to merge 1 commit into
mainfrom
Add-channel-strategy-skill

Conversation

@skwapong

@skwapong skwapong commented Feb 26, 2026

Copy link
Copy Markdown

Skill Overview

channel-strategy: Recommend optimal paid media channel mix and budget allocation using TD CDP audience data and campaign performance queries when available, or industry-standard best practices when historical data is missing.

What This Skill Does

  • Queries TD campaign performance by channel (ROAS, CVR, spend) to identify top performers
  • Analyzes CDP parent segment data for audience demographics and behaviors
  • Provides data-driven recommendations when TD historical data exists
  • Falls back to industry best practices (by business model, budget, demographics) when TD data is missing
  • Transparently indicates whether recommendations are TD-based or best-practice-based
  • Covers B2B SaaS, E-commerce, Lead Gen, and Brand Awareness channel strategies
  • Includes budget allocation rules (minimum $2-3K per channel, 10% minimum allocation)
  • Detects channel overlap/cannibalization via user-level analysis

Checklist

  • SKILL.md is under 500 lines (439 lines ✓)
  • description contains succinct trigger conditions
  • No generic concept explanations (removed funnel/attribution theory)
  • Examples used instead of prose (8+ TD query examples)
  • Tested with Claude Code

Test Results

All tests passed

Test Scenario: B2B SaaS campaign, $50K budget, enterprise decision-makers

  • ✅ Correctly handles missing TD data with graceful fallback
  • ✅ Applies budget allocation rules (3 channels for $50K)
  • ✅ Validates 10% minimum allocation per channel
  • ✅ Validates $2-3K minimum budget per channel
  • ✅ SQL queries use correct TD syntax (td_interval, td_time_string, nullif)
  • ✅ Provides transparent recommendation basis
  • ✅ Includes actionable next steps

Recommendation Output:

  • Google Search: 55% ($27.5K)
  • LinkedIn Ads: 35% ($17.5K)
  • Google Display: 10% ($5K)

Files Changed

  • paid-media-skills/channel-strategy/SKILL.md (new, 439 lines)
  • .claude-plugin/marketplace.json (registered paid-media-skills plugin)
  • README.md (documented skill with usage examples)

🤖 Generated with Claude Code

@skwapong
skwapong requested review from a team as code owners February 26, 2026 16:23
@adher-code

Copy link
Copy Markdown

👋 Thanks for the channel-strategy skill — the dual-mode approach (data-driven via tdx query when TD has historical campaign data, industry benchmarks as fallback) is a smart design, and the SQL examples use correct TD syntax. Before I can approve, there are a few governance requirements for Tier 1 skills.

What's needed

1. SKILL.md frontmatter fields

Currently only name and description (plus an inline Last Updated line, which isn't a governance field). For Tier 1, please add proper frontmatter:

owner: <your-td-email>
tier: 1
classification: product
phase: 1
known-limitations: |
  - Data-driven mode requires historical campaign performance data in TD; if absent, skill falls back to industry benchmarks automatically
  - Benchmark allocations reflect industry averages and may not match your specific market or audience
  - Channel overlap detection requires user-level join — only works if both channels share a common identifier column

The inline Last Updated: 2025-02-26 in the file body can be removed — that information belongs in SKILL.meta.yml instead.

2. SKILL.meta.yml — a validation log showing the skill was tested live. At minimum one entry covering both modes: the data-driven path and the fallback benchmark path.

3. test.yml — skill-level test scenarios: at minimum a 'has TD campaign data' scenario and a 'no data / fallback benchmarks' scenario.

Once those three are in place, happy to approve. The content is well-structured and the dual-mode design is worth shipping.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants