Token导航 LogoToken导航

Agent Skill · 开发

data-gtm-datalayer(数据 GTM 数据层)

用于辅助数据整理、表格处理、CSV/Excel 分析、指标计算和图表准备。它适合让 Agent 清洗字段、汇总数据、发现异常、生成统计口径或把分析结果转成可读说明。使用时需要确认数据来源、字段含义和时间范围,避免把样本数据当全量事实;涉及敏感数据、导出文件或批量写回时,应先确认权限和脱敏边界。

data-gtm-datalayer 是开发类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为只读;许可证信息还不明确,第三方扫描已通过,按安装量在开发类的 21,746 个 Skill 里排第 21,184。

总安装 194周安装 8GitHub Stars 11下载 63核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:data-gtm-datalayer(数据 GTM 数据层)
来源仓库:https://github.com/parhumm/jaan-to
仓库路径:skills/data-gtm-datalayer
安装命令:
npx skills add https://github.com/parhumm/jaan-to --skill data-gtm-datalayer
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/parhumm/jaan-to --skill data-gtm-datalayer

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

自动生成符合规范的 Google Tag Manager 跟踪代码,强化命名约束。可根据 PRD 或文字描述设计埋点方案,支持交互式向导引导配置。执行前必须读取预设知识库和模板,遵循语言协议进行本地化适配。涉及用户行为整理时应确认隐私政策,确保符合 GDPR 等法规要求。

data-gtm-datalayer 属于开发类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:skills/data-gtm-datalayer

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/parhumm/jaan-to --skill data-gtm-datalayer;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它标注为只读,先用只读任务试一次,确认行为符合预期再扩大使用范围。

常见问题

6 条

data-gtm-datalayer 怎么安装?

在终端执行 npx skills add https://github.com/parhumm/jaan-to --skill data-gtm-datalayer。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

data-gtm-datalayer 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

data-gtm-datalayer 需要什么权限?

权限级别是只读。该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

data-gtm-datalayer 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

data-gtm-datalayer 用的人多吗?

公开数据是累计安装 194 次,近一周安装 8 次,下载 63 次,GitHub 11 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

data-gtm-datalayer 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。
  • 标注为只读权限,试用阶段不容易误改本地文件。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。
  • 只想先试试效果、不希望它改动本地文件的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
data-gtm-datalayer

数据 GTM 数据层 · 本页

19411只读未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

data-gtm-datalayer

Generate production-ready GTM tracking code with enforced naming conventions.

Context Files

  • $JAAN_LEARN_DIR/jaan-to-data-gtm-datalayer.learn.md - Past lessons (loaded in Pre-Execution)
  • $JAAN_TEMPLATES_DIR/jaan-to-data-gtm-datalayer.template.md - Output template
  • ${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md - Language resolution protocol

Input

Tracking Request: $ARGUMENTS

  • If PRD path provided → Read and suggest tracking points
  • If text description provided → Design tracking based on input
  • If empty → Start interactive wizard

Pre-Execution Protocol

MANDATORY — Read and execute ALL steps in: ${CLAUDE_PLUGIN_ROOT}/docs/extending/pre-execution-protocol.md Skill name: data-gtm-datalayer Execute: Step 0 (Init Guard) → A (Load Lessons) → B (Resolve Template) → C (Offer Template Seeding)

Language Settings

Read and apply language protocol: ${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md Override field for this skill: language_data-gtm-datalayer


PHASE 1: Analysis (Read-Only)

Step 1: Determine Input Mode

Check $ARGUMENTS:

Mode A - PRD Input: If path to $JAAN_OUTPUTS_DIR/ or PRD text provided:

  1. Read/parse the PRD
  2. Identify trackable interactions (buttons, forms, modals, etc.)
  3. Suggest tracking points with types:

- Impressions: modal displays, section visibility - Clicks: buttons, links, interactive elements - Include non-happy paths (close, dismiss, cancel)

  1. Ask user to confirm/modify suggestions

Mode B - Description Input: If text description of what to track:

  1. Parse the description
  2. Ask clarifying questions if needed
  3. Suggest tracking structure

Mode C - Interactive Wizard: If no arguments, ask questions in order:

Question 1: Tracking Type

"What type of tracking do you need?" 1. click-html - HTML attributes (data-al-*) for simple clicks 2. click-datalayer - dataLayer.push for flow-based clicks 3. impression - dataLayer.push for visibility/exposure events

Question 2: Feature Name

"What is the feature name? (e.g., player, checkout, onboarding)"

Apply naming rules:

  • Convert to lowercase-kebab-case: "Play Button" → "play-button"
  • If unclear (e.g., "btn1", "x"), ask: "What does '{input}' represent?"
  • Suggest better name if abbreviated: "nav" → suggest "navigation" or "navbar"
  • Confirm conversion: "Feature 'Play Button' → 'play-button' - OK? [y/edit]"

Question 3: Item Name

"What is the item name? (e.g., play, pause, submit, modal-purchase)"

Apply same naming rules as feature.

Question 4: Action (click-datalayer only)

"What is the action? (default: Click)"

If user provides custom action, apply naming rules. If empty/skipped, use "Click".

Question 5: Additional Params (optional)

"Any additional params? Enter as key=value, one per line. (or 'skip')"

Example:

source=modal
count=3
active=true

Parse into object with ES5 type detection:

  • true / false → bool (no quotes): true
  • Numeric values (e.g., 3, 42) → int (no quotes): 3
  • Everything else → string (with quotes): "modal"

If none provided, omit params entirely from output.

Step 2: Confirm Values

Show full dataLayer preview before generating:

For click-html:

TRACKING SUMMARY
────────────────────────────────────────

<button data-al-feature="{feature}" data-al-item="{item}">...</button>

────────────────────────────────────────

For click-datalayer (without params):

TRACKING SUMMARY
────────────────────────────────────────

dataLayer.push({
  event: "al_tracker_custom",
  al: {
    feature: "{feature}",
    item: "{item}",
    action: "{action}"
  },
  _clear: true
});

────────────────────────────────────────

For click-datalayer (with params):

TRACKING SUMMARY
────────────────────────────────────────

dataLayer.push({
  event: "al_tracker_custom",
  al: {
    feature: "{feature}",
    item: "{item}",
    action: "{action}",
    params: {
      source: "modal",
      count: 3,
      active: true,
    }
  },
  _clear: true
});

────────────────────────────────────────

Values are typed: strings in "quotes", ints/bools without quotes.

For impression (without params):

TRACKING SUMMARY
────────────────────────────────────────

dataLayer.push({
  event: "al_tracker_impression",
  al: {
    feature: "{feature}",
    item: "{item}"
  },
  _clear: true
});

────────────────────────────────────────

For impression (with params):

TRACKING SUMMARY
────────────────────────────────────────

dataLayer.push({
  event: "al_tracker_impression",
  al: {
    feature: "{feature}",
    item: "{item}",
    params: {
      variant: "A",
      position: 1,
      visible: true,
    }
  },
  _clear: true
});

────────────────────────────────────────
"Generate tracking code with these values? [y/edit]"

HARD STOP - Human Review Check

Show the full dataLayer preview above (not just field summary).

"Proceed with code generation? [y/n/edit]"

Do NOT proceed to Phase 2 without explicit approval.


PHASE 2: Generation (Write Phase)

Step 3: Generate Code

Based on tracking type, generate the appropriate code:

Type: click-html

<element data-al-feature="{feature}" data-al-item="{item}">{element content}</element>

Example output:

<button data-al-feature="player" data-al-item="pause">Pause</button>

Type: click-datalayer

Without params:

dataLayer.push({
  event: "al_tracker_custom",
  al: {
    feature: "{feature}",
    item: "{item}",
    action: "{action}"
  },
  _clear: true
});

With params (ES5 typed values):

dataLayer.push({
  event: "al_tracker_custom",
  al: {
    feature: "{feature}",
    item: "{item}",
    action: "{action}",
    params: {
      {key1}: {value1},  // string: "value", int: 3, bool: true
      {key2}: {value2},
    }
  },
  _clear: true
});

Type: impression

Without params:

dataLayer.push({
  event: "al_tracker_impression",
  al: {
    feature: "{feature}",
    item: "{item}"
  },
  _clear: true
});

With params (ES5 typed values):

dataLayer.push({
  event: "al_tracker_impression",
  al: {
    feature: "{feature}",
    item: "{item}",
    params: {
      {key1}: {value1},  // string: "value", int: 3, bool: true
      {key2}: {value2},
    }
  },
  _clear: true
});

Step 4: Quality Check

Before preview, verify:

  • event key present in all dataLayer pushes
  • Feature and item are non-empty strings
  • Feature/item/action are lowercase-kebab-case
  • No abbreviations without user clarification
  • Names are descriptive and understandable
  • User-provided strings preserved (after kebab conversion)
  • _clear: true included in all dataLayer pushes
  • No empty params: {} (omit entirely if no params)
  • Param values use correct ES5 types (string in "quotes", int/bool without)
  • Output is deterministic (same input → same code)

If any check fails, fix before preview.

Step 5: Preview & Approval

Display the generated code in conversation:

GENERATED TRACKING CODE
───────────────────────

{code block}

EXAMPLE WITH VALUES
───────────────────
{example showing real values based on user input}
"Save tracking code to output? [y/n]"

Step 5.5: Generate ID and Folder Structure

If approved, set up the output structure:

  1. Source ID generator utility:
source "${CLAUDE_PLUGIN_ROOT}/scripts/lib/id-generator.sh"
  1. Generate sequential ID and output paths:
# Define subdomain directory
SUBDOMAIN_DIR="$JAAN_OUTPUTS_DIR/data/gtm"
mkdir -p "$SUBDOMAIN_DIR"

# Generate next ID
NEXT_ID=$(generate_next_id "$SUBDOMAIN_DIR")

# Create folder and file paths (slug from feature-item, e.g., "player-pause")
slug="{lowercase-hyphenated-feature-item}"
OUTPUT_FOLDER="${SUBDOMAIN_DIR}/${NEXT_ID}-${slug}"
MAIN_FILE="${OUTPUT_FOLDER}/${NEXT_ID}-gtm-${slug}.md"
  1. Preview output configuration:
Output Configuration - ID: {NEXT_ID} - Folder: $JAAN_OUTPUTS_DIR/data/gtm/{NEXT_ID}-{slug}/ - Main file: {NEXT_ID}-gtm-{slug}.md

Step 6: Write Output

  1. Create output folder:
mkdir -p "$OUTPUT_FOLDER"
  1. Write tracking code to main file using template:
# Use template from $JAAN_TEMPLATES_DIR/jaan-to-data-gtm-datalayer.template.md
cat > "$MAIN_FILE" <<'EOF'
{generated tracking documentation with Executive Summary}
EOF
  1. Update subdomain index:
source "${CLAUDE_PLUGIN_ROOT}/scripts/lib/index-updater.sh"
add_to_index \
  "$SUBDOMAIN_DIR/README.md" \
  "$NEXT_ID" \
  "${NEXT_ID}-${slug}" \
  "{Tracking Title}" \
  "{1-2 sentence summary: feature-item tracking with event type}"
  1. Confirm completion:
✓ Tracking code written to: $JAAN_OUTPUTS_DIR/data/gtm/{NEXT_ID}-{slug}/{NEXT_ID}-gtm-{slug}.md ✓ Index updated: $JAAN_OUTPUTS_DIR/data/gtm/README.md

Step 7: Capture Feedback

"Any feedback? [y/n]"

If yes:

"[1] Fix now [2] Learn for future [3] Both"
  • Option 1: Update output, re-preview, re-write
  • Option 2: Run /jaan-to:learn-add data-gtm-datalayer "{feedback}"
  • Option 3: Do both

Skill Alignment

  • Two-phase workflow with HARD STOP for human approval
  • Template-driven output structure
  • Generic and tech-stack agnostic
  • Output to standardized $JAAN_OUTPUTS_DIR path

Definition of Done

  • User confirmed tracking values
  • Code generated and displayed in conversation
  • Markdown file written to $JAAN_OUTPUTS_DIR/data/gtm/{slug}/
  • User can copy-paste and use immediately

平台分布

Codex

37.11%
按下载量换算23

Claude

29.09%
按下载量换算18

Cursor

18.27%
按下载量换算12

Gemini CLI

9.2%
按下载量换算6

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills