## Summary - Add portable installation tool (`install.sh`) for cross-machine setup - Add Claude.ai export files with proper YAML frontmatter - Add multi-agent-guide v2.0 with consolidated framework template - Rename `00-claude-code-setting` → `00-our-settings-audit` (avoid reserved word) - Add YAML frontmatter to 25+ SKILL.md files for Claude Desktop compatibility ## Commits Included - `93f604a` feat: Add portable installation tool for cross-machine setup - `9b84104` feat: Add Claude.ai export for portable skill installation - `f7ab973` fix: Add YAML frontmatter to Claude.ai export files - `3fed49a` feat(multi-agent-guide): Add v2.0 with consolidated framework - `3be26ef` refactor: Rename settings-audit skill and add YAML frontmatter Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
12 KiB
name, description
| name | description |
|---|---|
| gtm-audit | GTM container audit using Chrome DevTools and DTM Agent for tag verification. Triggers: audit GTM, GTM analysis, tag debugging, dataLayer inspection. |
GTM Audit Skill
Automated audit workflow for GTM containers using Chrome DevTools MCP for browser inspection and DTM Agent MCP for GTM API operations.
Prerequisites
Chrome GTM Debug Profile (Required)
Before starting any GTM audit, launch the dedicated Chrome GTM Debug profile:
chrome-gtm
This launches Chrome with remote debugging enabled on port 9222, which is required for the chrome-devtools MCP server to connect.
| Item | Value |
|---|---|
| Profile Location | ~/Library/Application Support/Chrome-GTM-Debug |
| Debug Port | 9222 |
| Launch Script | ~/Utilities/chrome-gtm-debug.sh |
Note: This is a separate Chrome instance from your regular browser. Install GTM-related extensions (Tag Assistant, etc.) in this profile for debugging work.
Required MCP Servers
This skill requires the following MCP servers to be configured:
| MCP Server | Purpose | Tools Used |
|---|---|---|
| chrome-devtools | Browser debugging & inspection | navigate_page, evaluate_script, list_network_requests, list_console_messages, click, hover, take_screenshot, performance_start_trace |
| dtm-agent | GTM API operations | dtm_status, dtm_list_tags, dtm_get_tag, dtm_list_triggers, dtm_get_trigger, dtm_list_variables, dtm_debug_performance, dtm_debug_preview |
Important: The chrome-devtools MCP server requires Chrome to be running with --remote-debugging-port=9222. Always run chrome-gtm first before attempting to use chrome-devtools tools.
Critical Workflow Rule
ALWAYS use Chrome DevTools MCP FIRST before making GTM configuration changes.
GTM triggering and parameter capturing issues are highly dependent on:
- DOM structure and CSS selectors
- Dynamic element loading and timing
- DataLayer event sequences
- JavaScript execution order
- Network request timing
Standard Debugging Workflow
┌─────────────────────────────────────────────────────────────────┐
│ PHASE 0: SETUP │
├─────────────────────────────────────────────────────────────────┤
│ Run `chrome-gtm` to launch Chrome GTM Debug profile │
│ Verify: curl http://127.0.0.1:9222/json/version │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ PHASE 1: INSPECT (Chrome DevTools MCP) │
├─────────────────────────────────────────────────────────────────┤
│ 1. navigate_page → Load target URL │
│ 2. evaluate_script → Check window.dataLayer state │
│ 3. list_network_requests → Identify GTM/tag requests │
│ 4. list_console_messages → Check for JS errors │
│ 5. click/hover → Simulate user interactions │
│ 6. take_screenshot → Document current state │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ PHASE 2: DIAGNOSE │
├─────────────────────────────────────────────────────────────────┤
│ • Identify DOM/timing/selector issues from browser state │
│ • Compare expected vs actual dataLayer events │
│ • Check network request payloads for missing parameters │
│ • Review console for GTM/tag errors │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ PHASE 3: CONFIGURE (DTM Agent MCP) │
├─────────────────────────────────────────────────────────────────┤
│ 1. dtm_status → Verify authentication │
│ 2. dtm_list_tags → Review current tag configuration │
│ 3. dtm_get_trigger → Inspect trigger conditions │
│ 4. dtm_list_variables → Check variable mappings │
│ 5. dtm_update_tag/trigger → Make configuration changes │
│ 6. dtm_create_version → Create version for testing │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ PHASE 4: VERIFY (Chrome DevTools MCP) │
├─────────────────────────────────────────────────────────────────┤
│ • Repeat Phase 1 inspection steps │
│ • Confirm issue is resolved │
│ • Document before/after comparison │
└─────────────────────────────────────────────────────────────────┘
Chrome DevTools MCP Commands
Essential Inspection Commands
// 1. Check dataLayer state
evaluate_script: "JSON.stringify(window.dataLayer || [], null, 2)"
// 2. Get GTM container info
evaluate_script: "Object.keys(window.google_tag_manager || {})"
// 3. Monitor dataLayer pushes (inject listener)
evaluate_script: `
window.__gtmPushLog = [];
const originalPush = window.dataLayer.push;
window.dataLayer.push = function(...args) {
window.__gtmPushLog.push({timestamp: Date.now(), data: args[0]});
return originalPush.apply(this, args);
};
`
// 4. Get captured pushes
evaluate_script: "JSON.stringify(window.__gtmPushLog || [], null, 2)"
// 5. Check for GTM debug mode
evaluate_script: "window.google_tag_manager?.['GTM-XXXXXX']?.preview?.active"
Network Request Patterns
| Tag Type | URL Pattern to Monitor |
|---|---|
| GA4 | google-analytics.com/g/collect |
| Google Ads | googleads.g.doubleclick.net |
| Meta Pixel | facebook.com/tr |
px.ads.linkedin.com |
|
| TikTok | analytics.tiktok.com |
| Kakao | track.tiara.kakao.com |
| Naver | wcs.naver.net |
DTM Agent MCP Commands
Container Analysis
# Check authentication and active container
dtm_status
# List all tags with optional filter
dtm_list_tags --name_filter "GA4"
# Get specific tag details
dtm_get_tag --tag_id "123"
# List triggers and their conditions
dtm_list_triggers
# Container performance analysis
dtm_debug_performance
# Validate container configuration
dtm_debug_preview
Configuration Changes
# Update tag configuration
dtm_update_tag --tag_id "123" --config {...}
# Create new trigger
dtm_create_trigger --name "Button Click" --type "CLICK"
# Create version for testing
dtm_create_version --name "Debug Session 2025-01-03"
Audit Checklist
Container Health
- GTM script loads without errors (Chrome DevTools: console)
- Container ID matches expected (Chrome DevTools: evaluate_script)
- No duplicate containers (Chrome DevTools: network requests)
- Script in correct position (Chrome DevTools: DOM inspection)
DataLayer Quality
- dataLayer initialized before GTM (Chrome DevTools: evaluate_script)
- Event names follow conventions (Chrome DevTools: dataLayer inspection)
- Required parameters present (DTM Agent: dtm_get_tag to check expected params)
- Data types correct (Chrome DevTools: typeof checks)
- E-commerce objects cleared before new push
- No duplicate events firing (Chrome DevTools: network request count)
Tag Configuration
- Tags properly configured (DTM Agent: dtm_list_tags)
- Triggers have correct conditions (DTM Agent: dtm_get_trigger)
- Variables mapped correctly (DTM Agent: dtm_list_variables)
- Firing sequence appropriate (DTM Agent: dtm_debug_performance)
Tag Firing Verification
- Pageview fires on all pages (Chrome DevTools: network requests)
- Events fire on correct triggers (Chrome DevTools: click + network)
- E-commerce events have required params (Chrome DevTools: request payload)
- Conversion tags fire once (Chrome DevTools: request count)
Common Issue Patterns
Issue: Tag Not Firing
Diagnosis (Chrome DevTools MCP first):
navigate_page→ Load the pagelist_network_requests→ Check if ANY request to tag endpointevaluate_script→ Verify dataLayer event existslist_console_messages→ Check for errors
Fix (DTM Agent MCP):
dtm_get_trigger→ Review trigger conditionsdtm_update_trigger→ Adjust selector/event namedtm_debug_preview→ Validate configuration
Issue: Missing Parameters
Diagnosis (Chrome DevTools MCP first):
list_network_requests→ Capture the actual request- Parse request payload to see what's sent
evaluate_script→ Check dataLayer for expected values
Fix (DTM Agent MCP):
dtm_list_variables→ Check variable configurationdtm_update_tag→ Fix parameter mappings
Issue: Duplicate Firing
Diagnosis (Chrome DevTools MCP first):
list_network_requests→ Count requests to same endpointevaluate_script→ Check dataLayer for duplicate pushes
Fix (DTM Agent MCP):
dtm_list_triggers→ Check for overlapping triggersdtm_get_tag→ Review tag firing options
Performance Analysis
Use Chrome DevTools MCP for performance:
performance_start_trace → Run page load → Analyze trace
Compare with DTM Agent static analysis:
dtm_debug_performance → Get container complexity grade
Output Format
Audit generates structured report:
{
"audit_metadata": {
"url": "https://example.com",
"timestamp": "2025-01-03T10:30:00Z",
"container_id": "GTM-XXXXXX",
"tools_used": ["chrome-devtools", "dtm-agent"]
},
"browser_inspection": {
"dataLayer_events": [...],
"network_requests": [...],
"console_errors": [...],
"performance_metrics": {...}
},
"gtm_configuration": {
"tags": [...],
"triggers": [...],
"variables": [...],
"container_grade": "B"
},
"issues": [...],
"recommendations": [...]
}
Integration with Other Skills
- seo-core-web-vitals: Use performance traces for Core Web Vitals impact analysis
- notion-writer: Export audit reports to Notion database
- seo-schema-validator: Validate e-commerce structured data alongside GTM