Agent skill

Event Tracking

by linuxfoundation in linuxfoundation/insights

Add event tracking calls to Vue/Nuxt components in the Insights app using the useTrackEvent composable.

MITAuto-check passedData & Analytics

Install Event Tracking

skills CLI
$ npx skills add linuxfoundation/insights --skill event-tracking -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install linuxfoundation/insights event-tracking --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/linuxfoundation/insights.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/event-tracking .claude/skills/event-tracking && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
event-tracking
GitHub stars
280
Token cost
~1.9k tokens
SKILL.md length
525 words
Files
2 (incl. references)
Skills in repo
9
Repo updated
First seen
Licence
MIT

At a glance

Add event tracking calls to Vue/Nuxt components in the Insights app using the useTrackEvent composable.

  • Works in 5 steps: Read the events catalog → Identify the target file and feature → Insert the tracking call → …
  • A developer asks to track a user action
  • SKILL.md covers What this skill does, File structure, How to use and Step-by-step workflow, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Event Tracking is an agent skill from linuxfoundation/insights. Add event tracking calls to Vue/Nuxt components in the Insights app using the useTrackEvent composable. Use this skill whenever a developer asks to "track" a user action or page view, "add analytics", "instrument" a component, "fire an event", implement an event from the events catalog, or wire up tracking for anything in the Insights frontend — even if they just say "track when the user clicks X" or "add tracking to this page".

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/events-catalog.md`).

It sits in Data & Analytics, covering Product analytics. It works with Nuxt and Vue.js. The repository describes itself as: Insights into the world's most critical open source software. The licence is MIT.

When your agent uses it

  • A developer asks to track a user action
  • Instrument a component
  • Implement an event from the events catalog
  • Wire up tracking for anything in the Insights frontend — even if they just say track when the user clicks X

Example prompts

  • “a user action or page view,”
  • “instrument”
  • “fire an event”
  • “/event-tracking”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Read the events catalog
  2. Identify the target file and feature
  3. Insert the tracking call
  4. Add the imports (if missing)
  5. Verify

What it can do on your machine

Read from SKILL.md and the folder at commit 3df53b5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Event Tracking loads about 1.9k tokens when it runs, and up to ~3.1k if it reads all its reference files. Until then it costs about 112 tokens; SKILL.md has 525 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~112
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from linuxfoundation/insights at commit 3df53b5, republished under its MIT licence (© linuxfoundation). 525 words, ~1,903 tokens.

Download SKILL.mdSave it as .claude/skills/event-tracking/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
event-tracking
description
Add event tracking calls to Vue/Nuxt components in the Insights app using the useTrackEvent composable. Use this skill whenever a developer asks to "track" a user action or page view, "add analytics", "instrument" a component, "fire an event", implement an event from the events catalog, or wire up tracking for anything in the Insights frontend — even if they just say "track when the user clicks X" or "add tracking to this page".

Event Tracking — Insights App

Status: Ready for rollout, but Segment dispatch is currently disabled in frontend/composables/useTrackEvent.ts pending alignment with the analytics team. Events still persist to the internal events table via /api/events. Re-enable by uncommenting the $track block in the composable.

What this skill does

Helps you add the right trackEvent() call to the right place in the codebase, using the catalog-approved event definitions.

File structure

frontend/app/components/shared/types/events/
├── base.ts           # EventType, EventFeature enums; EventDefinition interface
├── index.ts          # EventKey union type; aggregated EVENT_DEFINITIONS record
└── collections.ts    # CollectionsEventKey enum + COLLECTIONS_EVENT_DEFINITIONS
    <feature>.ts      # (future) FeatureEventKey enum + FEATURE_EVENT_DEFINITIONS

frontend/composables/useTrackEvent.ts   # just the tracking function

Adding events for a new feature: create events/<feature>.ts, define its <Feature>EventKey enum and <FEATURE>_EVENT_DEFINITIONS record, then re-export both from index.ts.

index.ts shape:

ts
export type EventKey = CollectionsEventKey; // | FutureFeatureEventKey | ...
export const EVENT_DEFINITIONS: Record<EventKey, EventDefinition> = {
  ...COLLECTIONS_EVENT_DEFINITIONS,
  // ...FUTURE_FEATURE_EVENT_DEFINITIONS,
};

How to use

Always use the feature-specific key enum (e.g. CollectionsEventKey), not the union EventKey type. The composable itself only needs useTrackEvent — the key enum comes from the feature's events file.

ts
import { useTrackEvent } from '~~/composables/useTrackEvent';
import { CollectionsEventKey } from '~/components/shared/types/events/collections';

const { trackEvent } = useTrackEvent();

trackEvent({
  key: CollectionsEventKey.CREATE_COLLECTION,
  properties: { newCollectionId, isPrivate }, // catalog-defined fields only — optional
});

name, type, and feature are looked up automatically from EVENT_DEFINITIONS — never pass them in the call.

source (current URL) and entrySource (referrer) are captured automatically — never pass them manually.

The call is always fire-and-forget: errors are caught inside the composable and never bubble up.

Step-by-step workflow

1. Read the events catalog

Always start by reading references/events-catalog.md to find the event that matches what the developer described. The catalog is organized by feature section (e.g. "Community Collections"). Note the enum value and properties columns — use those exactly.

If no catalog entry matches, note this to the developer and suggest the closest match or a new entry following the conventions at the bottom of the catalog.

2. Identify the target file and feature

Infer the feature from context (e.g. "track when the user creates a collection" → Community Collections). This tells you which key enum to import:

FeatureKey enumImport path
Community CollectionsCollectionsEventKey~/components/shared/types/events/collections
(future features)<Feature>EventKey~/components/shared/types/events/<feature>

Read the target component or page file before making any changes. You need to understand:

  • Whether useTrackEvent is already imported
  • For feature events: which function handles the user action
  • For page events: whether onMounted already exists
3. Insert the tracking call
Feature events

Place trackEvent(...) inside the action handler, after the main logic succeeds.

ts
const handleCreateCollection = async () => {
  const result = await createCollection(...)

  trackEvent({
    key: CollectionsEventKey.CREATE_COLLECTION,
    properties: { newCollectionId: result.id, isPrivate: form.isPrivate },
  })
}

For abandonment events, fire when the user dismisses or navigates away without completing the flow — typically on modal close before the success state is reached.

Show full SKILL.md (210 more words)Show less
Page events

Place inside onMounted(). Add to an existing onMounted if one already exists.

ts
onMounted(() => {
  trackEvent({ key: CollectionsEventKey.VIEW_DISCOVER_COLLECTIONS });
});
Events that need async data (e.g. viewerType)

If the event requires data that loads asynchronously (e.g. collection details needed to determine viewerType), use watch with { once: true } instead of onMounted:

ts
watch(
  data,
  (collection) => {
    if (!collection) return;
    trackEvent({
      key: CollectionsEventKey.VIEW_COLLECTION,
      properties: {
        collectionId: collection.id,
        viewerType:
          collection.ssoUserId && user.value?.sub === collection.ssoUserId ? 'owner' : 'guest',
      },
    });
  },
  { once: true },
);
4. Add the imports (if missing)
ts
import { useTrackEvent } from '~~/composables/useTrackEvent';
import { CollectionsEventKey } from '~/components/shared/types/events/collections';

Then destructure at the top level of <script setup>:

ts
const { trackEvent } = useTrackEvent();

The ~~ alias points to frontend/, ~ points to frontend/app/. Neither is auto-imported.

5. Verify
  • No TypeScript errors introduced
  • The tracking call does not change the control flow of existing logic
  • Properties only include fields listed in the catalog for that event

Common patterns

Properties with runtime values
ts
// Good
properties: { collectionId: collection.id, isPrivate: collection.isPrivate }

// Bad
properties: { collectionId: 'collectionId', isPrivate: 'isPrivate' }
Tracking after async operations

Place after the await so it only fires on success:

ts
await updateCollection(payload);
trackEvent({
  key: CollectionsEventKey.UPDATE_COLLECTION,
  properties: { collectionId, changedFields },
});
Multiple events in one handler

Track each separately in the right order.

Adding events for a new feature

  1. Create frontend/app/components/shared/types/events/<feature>.ts:

    ts
    import { EventFeature, EventType, type EventDefinition } from './base';
    
    export enum MyFeatureEventKey {
      DO_THING = 'do-thing',
    }
    
    export const MY_FEATURE_EVENT_DEFINITIONS: Record<MyFeatureEventKey, EventDefinition> = {
      [MyFeatureEventKey.DO_THING]: {
        key: MyFeatureEventKey.DO_THING,
        type: EventType.FEATURE,
        name: 'Do thing',
        feature: EventFeature.MY_FEATURE,
        allowedProperties: [],
      },
    };
  2. In index.ts, extend the union and spread into EVENT_DEFINITIONS:

    ts
    export type EventKey = CollectionsEventKey | MyFeatureEventKey;
    export const EVENT_DEFINITIONS = {
      ...COLLECTIONS_EVENT_DEFINITIONS,
      ...MY_FEATURE_EVENT_DEFINITIONS,
    };
  3. Add EventFeature.MY_FEATURE to the EventFeature enum in base.ts.

  4. Add the new events to references/events-catalog.md under a new section.

© linuxfoundation, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in .claude/skills/event-tracking of linuxfoundation/insights.

  • SKILL.md
  • references/events-catalog.md

Open the folder on GitHubat commit 3df53b5

Compare with similar skills

Event Tracking next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Event Tracking compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Event Tracking this skilllinuxfoundation/insights280—~1.9kAutomated safety check: PassMIT
Databuddydatabuddy-analytics/Databuddy1.2k—~2.1kAutomated safety check: PassAGPL-3.0
Databuddydatabuddy-analytics/Databuddy1.2k—~2kAutomated safety check: PassAGPL-3.0
Retentioneering Contributingretentioneering/retentioneering-tools920—~1.8kAutomated safety check: PassApache-2.0
Domscribepatchorbit/domscribe193—~3.3kAutomated safety check: NotesMIT
Review DocsTotomInc/vue3-select-component119—~3.8kAutomated safety check: PassMIT

Similar skills

  • Databuddy

    databuddy-analytics/Databuddy

    Integrate Databuddy analytics using the SDK, REST API, or MCP.

    1.2k GitHub stars~2.1k tokensUpdated today
    Backend & APIsAuto-check passed
  • Databuddy

    databuddy-analytics/Databuddy

    Help external users integrate Databuddy into their own apps.

    1.2k GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed
  • Retentioneering Contributing

    retentioneering/retentioneering-tools

    Help the user turn their Retentioneering ideas, friction reports, bug findings, or feature needs into high-quality upstream contributions: from capturing and validating the idea, through minimal…

    920 GitHub stars~1.8k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Domscribe

    patchorbit/domscribe

    Work with Domscribe — the pixel-to-code bridge. An agent skill from patchorbit/domscribe.

    193 GitHub stars~3.3k tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check: notes
  • Review Docs

    TotomInc/vue3-select-component

    Review documentation for quality, clarity, SEO, and technical correctness.

    119 GitHub stars~3.8k tokensUpdated today
    Documents & OfficeAuto-check passed
  • PDF Vue3

    hymhub/pdf-vue3

    Use the pdf-vue3 Vue 3 component to render PDFs (URL, base64, or Uint8Array) with built-in virtual scrolling, crisp zoom, print, download, and page navigation.

    123 GitHub stars~1k tokensUpdated 4 mo ago
    Documents & OfficeAuto-check passed

More from linuxfoundation/insights

All 9 skills in this repo
  • Review PR

    linuxfoundation/insights

    Review a pull request against Insights architecture standards — fetches PR diff, verifies previous comments are addressed, validates PR metadata (title, branch, JIRA, size), runs a code-standards…

    280 GitHub stars~2.7k tokensUpdated 6 days ago
    Auto-check: notes
  • Adr

    linuxfoundation/insights

    Record an architecture decision as an ADR in api/docs/arch/adr/.

    280 GitHub stars~1k tokensUpdated 6 days ago
    Auto-check passed
  • Dco

    linuxfoundation/insights

    Recover from missing DCO sign-off on commits. An agent skill from linuxfoundation/insights.

    280 GitHub stars~696 tokensUpdated 6 days ago
    Auto-check: notes
  • Fix Vulns

    linuxfoundation/insights

    Automated triage and fixing of Dependabot security vulnerabilities (IN-1189).

    280 GitHub stars~3.8k tokensUpdated 6 days ago
    Auto-check: notes
  • Setup

    linuxfoundation/insights

    Full development environment setup from scratch — prerequisites, dependencies, .env file, optional local PostgreSQL database (for auth/collections/chat work), and dev server.

    280 GitHub stars~1.9k tokensUpdated 6 days ago
    Auto-check: notes
  • Setup Docs

    linuxfoundation/insights

    Run the docs site, blog, or Storybook locally. An agent skill from linuxfoundation/insights.

    280 GitHub stars~383 tokensUpdated 6 days ago
    Auto-check: notes

Works with

Questions about Event Tracking

What does Event Tracking do?

Add event tracking calls to Vue/Nuxt components in the Insights app using the useTrackEvent composable. Event Tracking is an agent skill from linuxfoundation/insights. Add event tracking calls to Vue/Nuxt components in the Insights app using the useTrackEvent composable.

When should I use Event Tracking?

Event Tracking fits situations like: A developer asks to track a user action; instrument a component; implement an event from the events catalog; wire up tracking for anything in the Insights frontend — even if they just say track when the user clicks X.

How do I install Event Tracking in Claude Code?

Run `npx skills add linuxfoundation/insights --skill event-tracking -a claude-code`. Or copy the skill folder (.claude/skills/event-tracking in linuxfoundation/insights) into .claude/skills/event-tracking in your project. Claude Code loads it when a task matches its description.

How do I install Event Tracking in Codex?

Run `npx skills add linuxfoundation/insights --skill event-tracking -a codex`. Or copy the skill folder (.claude/skills/event-tracking in linuxfoundation/insights) into .agents/skills/event-tracking in your project. Codex loads it when a task matches its description.

Can I use Event Tracking in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add linuxfoundation/insights --skill event-tracking -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/event-tracking, .gemini/skills/event-tracking, .github/skills/event-tracking and .opencode/skills/event-tracking in your project.

What does Event Tracking need to run?

SKILL.md names no scripts, command-line tools or credentials: Event Tracking is instructions for the agent only.

Does Event Tracking access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Event Tracking safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Event Tracking use?

Event Tracking is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Event Tracking use?

About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.2k tokens, read only when the agent opens those files.

What are the alternatives to Event Tracking?

Skills that share tags, products or a category with Event Tracking: Databuddy (databuddy-analytics/Databuddy, 1.2k stars), Databuddy (databuddy-analytics/Databuddy, 1.2k stars), Retentioneering Contributing (retentioneering/retentioneering-tools, 920 stars) and Domscribe (patchorbit/domscribe, 193 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Event Tracking?

linuxfoundation (a GitHub organization) maintains it in linuxfoundation/insights, which has 280 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 1, 2026.

Source: linuxfoundation/insights on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.