skills/product-tracking-instrument-new-feature/SKILL.md
Update the tracking plan when a feature ships, changes, or is removed. Assesses whether new events are needed, extends existing events with properties where possible, and produces a versioned mini-delta with changelog entry. Updates .telemetry/tracking-plan.yaml, delta.md, and changelog.md. Use when the user ships a new feature, modifies existing functionality, wants to keep tracking coherent as the product evolves, 'feature shipped,' 'new feature tracking,' 'update tracking for [feature],' 'what tracking does this feature need,' or 'instrument new feature.'
npx skillsauth add accoil/product-tracking-skills product-tracking-instrument-new-featureInstall 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 product telemetry engineer keeping tracking coherent as the product evolves. When a feature ships, changes, or is removed, you determine the tracking impact and apply it.
| File | What it covers | When to read |
|------|---------------|--------------|
| references/naming-conventions.md | Event/property naming standards | Naming new events |
| references/persistence.md | .telemetry/ folder structure, changelog | Updating artifacts correctly |
| references/event-categories.md | Event taxonomy and coverage | Categorizing new events |
| references/anti-patterns.md | What to avoid in tracking | Reviewing new additions |
When a feature ships or changes, determine:
Then produce a mini delta and update the target plan.
Output: updated .telemetry/tracking-plan.yaml + .telemetry/delta.md + .telemetry/changelog.md
Check before starting:
.telemetry/tracking-plan.yaml (required) — The current tracking plan to update. If it doesn't exist, stop and tell the user: "I need an existing tracking plan to update. Run the product-tracking-design-tracking-plan skill first to create the initial plan (e.g., 'design tracking plan'), then come back here when a feature ships.".telemetry/product.md (recommended) — Helps calibrate tracking intensity (core vs supporting features). If missing, proceed but note the context gap.| Scenario | Response | |----------|----------| | New feature ships | Assess value, design events if needed, update plan | | Existing feature changes | Assess impact on existing events, modify or extend | | Feature removed | Deprecate related events, set removal timeline | | Audit findings to fix | Apply fixes from audit, update plan | | Periodic review | Check for stale events, coverage gaps |
Batching: Multiple features can be assessed in a single session. Group changes into one version bump and one changelog entry, with sub-entries per feature. This is common at the end of a sprint when several features ship together.
Ask:
Or if working from a PR/commit/feature spec, read the context directly.
Not every feature needs new events. Ask:
Does this feature introduce new value?
Does it extend an existing flow?
Is it supporting or core?
The minimalist test: "Will anyone ever query this event in isolation?" If not, it might be better as a property on an existing event.
For new events:
For B2C products without group hierarchy, skip group-level assignment — events are user-level only.
For modified events:
| Change | Breaking? | Approach | |--------|-----------|----------| | Add optional property | No | Add directly | | Add required property | Yes | Make optional first, or version bump | | Expand enum | No | Add new values | | Restrict enum | Yes | Deprecation period | | Rename event | Yes | New event + deprecate old | | Change property type | Yes | New property, deprecate old |
For deprecated events:
Before adding new events:
Properties over events: report.created with { report_type: 'ai_generated' } beats a separate ai_report.created.
Modify .telemetry/tracking-plan.yaml:
Adding events:
- name: feature.action
category: core_value
description: User does the new thing
added_version: "1.1.0"
properties:
- name: property_name
type: string
required: true
Deprecating events:
- name: old_feature.action
deprecated: true
deprecated_version: "1.1.0"
deprecated_reason: "Feature removed"
remove_after: "YYYY-MM-DD"
migration: "No replacement" | "Use new_feature.action"
Bump meta.version and meta.updated.
Append to .telemetry/changelog.md:
## [1.1.0] - YYYY-MM-DD
### Added
- `feature.action` event for [feature description]
### Changed
- `existing.event`: added optional `new_prop`
### Deprecated
- `old.event`: [reason] (removal: YYYY-MM-DD)
### Migration Notes
[If applicable]
If .telemetry/delta.md exists, add the new changes. Otherwise create it.
For each new or changed event, document in the delta:
This provides the implementation roadmap. The actual code generation is done by the product-tracking-implement-tracking skill — suggest it as the next step.
Use semantic versioning:
After every update, generate:
# Tracking Plan Update
**Version:** 1.0.0 → 1.1.0
**Date:** YYYY-MM-DD
**Reason:** [feature name]
## Changes
- Added: `feature.action`
- Modified: `existing.event` (new optional property)
- Deprecated: `old.event`
## Implementation Required
- [ ] Add tracking for `feature.action` in [location]
- [ ] Update `existing.event` in [location]
## Breaking Changes
None / [list]
## Regenerate Code
Run the **product-tracking-implement-tracking** skill to update SDK wrapper (e.g., *"implement tracking"*).
Start narrow. A new feature doesn't need 10 events. Start with the 1-2 that capture the core action. Add more later if needed.
Extend before adding. Always check if an existing event can be extended with a property before creating a new event.
Read the plan fully. Read the full tracking-plan.yaml before making changes. Do not rely on earlier conversation context — the artifact is the source of truth.
Version everything. Every change gets a version bump and changelog entry. No silent mutations.
Deprecate, don't delete. Events get deprecated first, removed later. This gives consumers time to adjust.
Context matters. A new feature in a core flow gets more tracking attention than a minor settings change. Use the product model to calibrate.
Keep the plan current. The tracking plan should always reflect intent. If it drifts from reality, the plan should be updated — or reality should be fixed.
Write to files, summarize in conversation. Write plan updates and implementation guidance to files. Show only a concise summary in conversation (what changed, version bump, implementation steps). Never paste more than 20 lines of raw data into the chat.
Present decisions, not deliberation. Reason silently. The user should see what you decided and why — not the process of deciding it.
model → audit → design → guide → implement ← feature updates
^
After feature instrumentation, suggest the user run:
development
Build a structured product model by scanning the codebase and talking to the user. Produces .telemetry/product.md — a description of what the product does, who uses it, how value flows, and what entities exist. Use when starting telemetry work on a new codebase, when the user asks to 'model this product,' 'understand this product,' 'what does this product do,' 'map the product,' 'product model,' or when no .telemetry/product.md exists yet. This is the entry point for the telemetry lifecycle.
development
Generate real instrumentation code from the tracking plan and instrumentation guide. Produces typed SDK wrapper functions, identity management, and integration guidance. Outputs files in a tracking/ directory. Use when the user wants to generate or regenerate tracking code, implement the delta plan, turn the instrumentation guide into working code, 'implement tracking,' 'generate code,' 'create tracking module,' or 'build analytics SDK wrapper.'
tools
Translate a tracking plan into an SDK-specific instrumentation guide. Shows how to make identify, group, and track calls using the target analytics SDK with real template code, architecture guidance, and constraint documentation. Outputs .telemetry/instrument.md. Covers 24 analytics destinations across product analytics, CDPs, web analytics, error monitoring, feature flags, and session tools. Use when the user has a tracking plan and needs to know how to implement it with a specific SDK like Segment, Amplitude, Mixpanel, PostHog, Accoil, Google Analytics, Sentry, LaunchDarkly, or via generic HTTP POST. Also use when user asks 'create instrumentation guide,' 'how to implement tracking,' 'SDK guide,' or 'generate implementation guide.'
testing
Design an opinionated target tracking plan and produce an explicit delta from current state to target. Combines the product model, current-state audit, and telemetry best practices to decide what events, properties, entities, and group hierarchies should exist. Outputs .telemetry/tracking-plan.yaml and .telemetry/delta.md. Use when the user wants to create or redesign a tracking plan, decide what to track, plan analytics instrumentation, 'design tracking,' 'what should we track,' 'create tracking plan,' or 'plan analytics events.'