Files

164 lines
23 KiB
JSON

{
"schema_version": "1.0.0",
"snapshot_at": "2026-07-11",
"default_mutation_mode": "read-only",
"platforms": [
{
"id": "google",
"display_name": "Google Ads",
"target_tier": "first-class",
"skill_path": "skills/ads-google/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-google/SKILL.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["claude-ads-v181-tree", "google-ads-api-official"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/google.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "google-ads-api-official"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/google.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["google-ads-campaign-fields-official"]},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
},
{
"id": "meta",
"display_name": "Meta Ads",
"target_tier": "first-class",
"skill_path": "skills/ads-meta/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-meta/SKILL.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["claude-ads-v181-tree", "meta-marketing-api-official"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/meta.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "meta-marketing-api-official"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/meta.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["meta-insights-reporting-official"]},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
},
{
"id": "youtube",
"display_name": "YouTube Ads",
"target_tier": "first-class",
"skill_path": "skills/ads-youtube/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-youtube/SKILL.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["claude-ads-v181-tree", "youtube-google-ads-video-official"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/youtube.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "youtube-google-ads-video-official"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/youtube.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["google-ads-campaign-fields-official", "youtube-google-ads-video-official"]},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
},
{
"id": "linkedin",
"display_name": "LinkedIn Ads",
"target_tier": "first-class",
"skill_path": "skills/ads-linkedin/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-linkedin/SKILL.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["claude-ads-v181-tree", "linkedin-marketing-api-official"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/linkedin.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "linkedin-marketing-api-official"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/linkedin.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["linkedin-ad-analytics-reporting-official"]},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
},
{
"id": "tiktok",
"display_name": "TikTok Ads",
"target_tier": "first-class",
"skill_path": "skills/ads-tiktok/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-tiktok/SKILL.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["claude-ads-v181-tree", "tiktok-business-api-official"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/tiktok.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "tiktok-business-api-official"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/tiktok.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["tiktok-integrated-reporting-official"]},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
},
{
"id": "microsoft",
"display_name": "Microsoft Advertising",
"target_tier": "first-class",
"skill_path": "skills/ads-microsoft/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-microsoft/SKILL.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["claude-ads-v181-tree", "microsoft-advertising-api-official"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/microsoft.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "microsoft-advertising-api-official"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/microsoft.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["microsoft-ad-performance-report-official"]},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
},
{
"id": "apple",
"display_name": "Apple Ads",
"target_tier": "first-class",
"skill_path": "skills/ads-apple/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-apple/SKILL.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["claude-ads-v181-tree", "apple-ads-api-official"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/apple.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "apple-ads-api-official"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/apple.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["apple-campaign-reporting-official"]},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
},
{
"id": "amazon",
"display_name": "Amazon Ads",
"target_tier": "first-class",
"skill_path": "skills/ads-amazon/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-amazon/SKILL.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["claude-ads-v181-tree", "amazon-ads-api-official"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/amazon.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "amazon-ads-api-official"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/amazon.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["amazon-ads-api-official"], "disabled_reason": "No curated official source establishes one stable native report field schema across Amazon Ads products."},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
},
{
"id": "reddit",
"display_name": "Reddit Ads",
"target_tier": "first-class",
"skill_path": "skills/ads-reddit/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-reddit/SKILL.md", "ads/references/reddit-audit.md", "agents/audit-reddit.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["reddit-business-help"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/reddit.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "reddit-business-help"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/reddit.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["reddit-ads-reporting-v3-official"]},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
},
{
"id": "pinterest",
"display_name": "Pinterest Ads",
"target_tier": "first-class",
"skill_path": "skills/ads-pinterest/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-pinterest/SKILL.md", "ads/references/pinterest-audit.md", "agents/audit-pinterest.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["pinterest-conversions-api"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/pinterest.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "pinterest-conversions-api"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/pinterest.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["pinterest-ads-reporting-official"]},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
},
{
"id": "snapchat",
"display_name": "Snapchat Ads",
"target_tier": "first-class",
"skill_path": "skills/ads-snapchat/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-snapchat/SKILL.md", "ads/references/snapchat-audit.md", "agents/audit-snapchat.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["snap-marketing-api"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/snapchat.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "snap-marketing-api"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/snapchat.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["snap-ads-measurement-official"]},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
},
{
"id": "x",
"display_name": "X Ads",
"target_tier": "first-class",
"skill_path": "skills/ads-x/SKILL.md",
"capabilities": [
{"id": "skill-guidance", "mode": "export-read", "status": "implemented", "implementation_paths": ["skills/ads-x/SKILL.md", "ads/references/x-audit.md", "agents/audit-x.md"], "fixture_paths": [], "test_paths": [], "source_ids": ["x-conversion-tracking"]},
{"id": "export-ingestion", "mode": "export-read", "status": "fixture-verified", "implementation_paths": ["claude_ads_core/adapters/csv_export.py"], "fixture_paths": ["tests/fixtures/exports/x.csv"], "test_paths": ["tests/core/test_adapters.py"], "source_ids": ["claude-ads-v2-export-adapter", "x-conversion-tracking"]},
{"id": "native-export-normalization", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/adapters/mappings_v1.py", "claude_ads_core/adapters/native_export.py"], "fixture_paths": ["tests/fixtures/native_exports/x.csv"], "test_paths": ["tests/core/test_native_exports.py"], "source_ids": ["x-conversion-tracking"], "disabled_reason": "The curated official source covers conversion tracking, not a stable native report export schema."},
{"id": "account-health-scoring", "mode": "export-read", "status": "disabled", "implementation_paths": ["claude_ads_core/control_registry.py", "control-plane/manifests/control-registry.json", "control-plane/manifests/scoring-profiles.json"], "fixture_paths": [], "test_paths": ["tests/core/test_control_registry.py", "tests/core/test_platform_report_contracts.py"], "source_ids": [], "disabled_reason": "No approved source-grounded control-severity decision set; discovery findings remain unscored."},
{"id": "account-mutation", "mode": "live-write", "status": "disabled", "implementation_paths": [], "fixture_paths": [], "test_paths": [], "source_ids": [], "disabled_reason": "No approved v2 write adapter lifecycle."}
]
}
]
}