A collection of marketing analysis skills and utilities for processing GA4, Search Console, Stripe, and Google Ads data. Includes data processing utilities, skill linting, and PDF report generation.
16 tools with READ_ONLY risk classification. All have descriptions (10-200 chars, baseline 194), but schemas are minimal: most accept only 1-2 string parameters with basic descriptions. No output schemas documented. No error handling guidance, no recovery patterns, no parameter constraints (enums, ranges). Tool names follow verb_noun pattern (process-*, strip_*, aggregate_*, is_*, detect_*, validate, load_*, get_*, lint_*, find_*, parse_*) but lack clarity on mutual exclusivity and chaining. No tool annotations (readOnlyHint, idempotentHint). Composition is reasonable (each tool has one job), but no documented output structure means agents cannot plan downstream calls. Baseline: 549 production tools average 4 params per tool; these average 1.5. Descriptions are adequate but generic (e.g., 'Validate MCP result integrity' lacks WHEN/WHY context).
Aggregate metrics by clean URL after stripping UTM params, combining duplicate URLs
Find which GA4 event has real conversion data by analyzing event frequency and patterns
Find all SKILL.md files in skills/ directory and agent .md files in agents/ directory
Return the active configuration dictionary
Check if a URL path is an app/internal page that should be excluded from analysis
Check if a URL path is a blog/content page using configurable patterns
Run all lint checks on a single SKILL.md or agent .md file, validating frontmatter, name, description, model, tools, line count, and best practices
No output schemas documented. Tools return complex objects (e.g., process-ga4-pages returns {pages, organic_stars, zombies, hidden_gems, traffic_no_conv, summary}) but agents cannot see field names, types, or structure. Agents cannot plan downstream calls or extract required data.
No error handling guidance. Tools accept file paths but do not document what happens on missing files, parse errors, or invalid TSV format. No recovery patterns (e.g., 'If file not found, check path with list_files'). Agents cannot self-correct on failure.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
Load configuration from a JSON file, merging with defaults. Searches in order: explicit path, ./ds_utils_config.json, ./scripts/ds_utils_config.json
Extract YAML frontmatter and body from a markdown file
Detect paused campaigns and calculate daily statistics from Google Ads campaign data
Process GA4 landing pages: strip UTMs, split by source, classify pages into organic stars, zombies, hidden gems, and traffic with no conversion
Classify Search Console queries into SEO buckets (branded, non-branded, competitor, informational, transactional)
Analyze payment failures from Stripe charge data
Calculate MRR, churn rate, and risk tiers from Stripe subscription data
Strip UTM parameters and ad tracking params from a URL path, returning clean path
Validate MCP result integrity by checking data structure, required fields, and consistency
No parameter constraints. 'url_field' and 'metric_fields' in aggregate_by_url lack enum/pattern constraints. 'file_type' in lint_file should be enum('skill'|'agent') but is free-form string. LLMs will hallucinate invalid values.
No tool annotations. All tools are READ_ONLY but lack readOnlyHint annotation. Agents cannot distinguish safe tools from destructive ones without reading descriptions.
Descriptions lack WHEN/WHY context. 'Validate MCP result integrity by checking data structure, required fields, and consistency' does not explain when to call validate vs other tools, or what 'MCP result' means. Baseline: A+ tools include dependency hints and selection criteria.