skills/gtm-diff/SKILL.md
Compares current live GTM container against last known state from gtm-implementation-log.json. Shows what tags, triggers, and variables have been added, deleted, or modified since the last skill run. Read-only, no changes made. Prevents accidentally overwriting manual GTM changes. Trigger on - "what changed in GTM", "gtm diff", "check for manual changes", "gtm drift", "what's different in my container", "has anything changed".
npx skillsauth add aimonk2025/google-tag-manager-automation gtm-diffInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a GTM Container Auditor focused on drift detection. Your job is to compare the current live GTM container state against the last logged implementation and surface any changes - additions, deletions, or modifications - made since the last skill run. Read-only. You make no changes.
Manual GTM changes are invisible to automation. Before any new implementation run, always check for drift. Running gtm-implementation over manual changes without checking first can silently overwrite them.
Check for gtm-context.md in the project root:
Step 1.1: Check implementation log
Check for gtm-implementation-log.json in the project root.
If not found:
"No gtm-implementation-log.json found. This file is created by gtm-implementation.
Without it, there is no baseline to diff against.
Run gtm-implementation first, or run gtm-auditor (paid) for a full container health check."
Stop.
If found:
Read the log - extract: tags, triggers, variables last created/updated by the skill.
Note the timestamp of the last implementation run.
Step 1.2: Check API credentials
Check for gtm-config.json and gtm-token.json.
If missing:
"GTM API credentials not found. Run gtm-setup first to configure API access."
Stop.
If found: proceed.
Step 1.3: Resolve workspace dynamically
// List all workspaces
const workspacesResponse = await tagmanager.accounts.containers.workspaces.list({
parent: `accounts/${accountId}/containers/${containerId}`
})
const workspaces = workspacesResponse.data.workspace || []
// Use the first workspace (or the one named "Default Workspace")
const workspace = workspaces[0]
const workspacePath = workspace.path
// Fetch all tags in the current workspace
const tagsResponse = await tagmanager.accounts.containers.workspaces.tags.list({
parent: workspacePath
})
// Fetch all triggers
const triggersResponse = await tagmanager.accounts.containers.workspaces.triggers.list({
parent: workspacePath
})
// Fetch all variables
const variablesResponse = await tagmanager.accounts.containers.workspaces.variables.list({
parent: workspacePath
})
Display:
Fetching current container state...
✓ Tags: X found
✓ Triggers: X found
✓ Variables: X found
Compare current API response against the implementation log.
Tags comparison:
Triggers comparison:
Variables comparison:
For each changed item, capture:
=== GTM Container Diff ===
Container: [containerId]
Baseline: gtm-implementation-log.json (last run: [timestamp])
Current state: fetched [current timestamp]
--- Tags ---
+ [Tag Name] (Custom HTML) - ADDED after last skill run
Possibly added manually in GTM UI
~ [Tag Name] (GA4 Event) - MODIFIED
Changed: Trigger assignment changed from "All Pages" to "DOM Ready"
Note: Manual change detected - verify before next implementation run
- [Tag Name] (GA4 Event) - DELETED
Was in implementation log but not in current container
No changes detected in tags. ✓
--- Triggers ---
[Same format]
--- Variables ---
[Same format]
--- Summary ---
Total changes since last implementation: X
Added: X (safe to keep - these are additions)
Deleted: X (may be intentional or accidental - verify)
Modified: X (review carefully before next implementation run)
If no changes:
=== GTM Container Diff ===
No changes detected.
The current container matches gtm-implementation-log.json exactly.
Safe to proceed with a new implementation run.
Based on diff results:
--- Recommendation ---
[No changes] → "Container matches implementation log. Safe to run gtm-implementation for your next changes."
[Only additions] → "X items were added manually. gtm-implementation will not overwrite these. Safe to proceed, but note the manual additions."
[Deletions or modifications] → "X items were deleted or modified manually since the last skill run.
Running gtm-implementation now could overwrite or conflict with these changes.
Recommended: Review the changes above with whoever made them, confirm they should be kept, then proceed."
[Many changes] → "Significant drift detected (X changes). Consider running gtm-auditor for a full container health check before implementing new changes."
None - console output only. The diff is displayed in the console.
After reviewing the diff:
development
Comprehensive GTM tracking testing and validation including automated Playwright headless testing, browser console testing, GTM Preview mode validation, and GA4 DebugView verification. Use when users need to "test GTM tracking", "validate dataLayer events", "debug GTM", "check if tracking works", "automated tracking tests", "run tracking tests without opening browser", or troubleshoot tracking issues. Prioritises automated testing over manual when possible.
development
Strategic GTM tracking planning with product manager expertise. Use when users need to plan tracking strategy, define what metrics to measure, understand business impact of tracking, create tracking specifications, or need guidance on "what should I track?" questions. Asks discovery questions about business goals, maps objectives to events, defines event taxonomy, and creates structured tracking plans. Trigger on - "plan GTM tracking", "what should I track", "create tracking plan", "define measurement strategy", "GTM strategy".
development
Pipeline status check for GTM projects. Use when returning to a project mid-implementation, when unsure what step comes next, or to get a quick overview of what has been completed. Reads all GTM output files and shows which skills have run, current implementation coverage, and the recommended next step. No API calls, instant. Trigger on - "what step am I on", "gtm status", "where did I leave off", "what's been done", "check progress", "pipeline status".
development
Automates Google Tag Manager API setup including googleapis installation, OAuth credential creation, token management, and prerequisites validation. Use when users need to "set up GTM API", "configure GTM API access", "get GTM OAuth credentials", "install googleapis", or encounter authentication errors. Handles complete technical setup from dependency installation through API connection verification.