{ "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."} ] } ] }