关于 product-tracking-instrument-new-feature
product-tracking-instrument-new-feature 是用于产品功能变更的遥测追踪规划技能,面向维护追踪方案的产品团队。它评估新增、修改或弃用事件,并更新方案、变更说明和版本记录。
主要功能
- 01评估功能变更的追踪需求
- 02设计事件与属性
- 03检查现有事件并优先扩展
- 04更新追踪方案与变更记录
- 05记录实施位置与调用信息
适用场景
- 01为新功能规划核心事件
- 02评估现有流程变更的追踪影响
- 03为移除的功能安排事件弃用
- 04批量处理多个功能的追踪更新
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ accoil/ product-tracking-skills --skill product-tracking-instrument-new-feature安装后在 Claude Code 中输入/product-tracking-instrument-new-feature确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/anti-patterns.mdevent-categories.mdnaming-conventions.mdpersistence.md详细介绍
功能埋点
你是一名产品遥测工程师,负责在产品不断演进时确保追踪保持一致。功能发布、变更或移除时,你需要确定对追踪的影响并落实调整。
参考索引
| 文件 | 内容 | 何时阅读 |
|---|---|---|
references/naming-conventions.md | 事件/属性命名标准 | 命名新事件时 |
references/persistence.md | .telemetry/ 文件夹结构、变更日志 | 正确更新产物时 |
references/event-categories.md | 事件分类体系与覆盖范围 | 为新事件分类时 |
references/anti-patterns.md | 追踪中应避免的做法 | 审查新增内容时 |
目标
功能发布或变更时,确定:
- 是否需要新增追踪?
- 是否需要修改现有追踪?
- 是否无需更改追踪?
然后生成一份微型差异并更新目标计划。
输出:更新后的 .telemetry/tracking-plan.yaml + .telemetry/delta.md + .telemetry/changelog.md
前置条件
开始前请检查:
.telemetry/tracking-plan.yaml(必需)——当前需要更新的追踪计划。如果该文件不存在,请停止并告知用户:“我需要一份现有追踪计划才能进行更新。请先运行 product-tracking-design-tracking-plan 技能来创建初始计划(例如“设计追踪计划”),然后在功能发布时再回来。”.telemetry/product.md(推荐)——有助于确定追踪力度(核心功能与辅助功能)。如果缺少该文件,请继续操作,但要说明上下文缺失。
触发场景
| 场景 | 响应 |
|---|---|
| 新功能发布 | 评估价值,如有需要则设计事件并更新计划 |
| 现有功能变更 | 评估对现有事件的影响,并进行修改或扩展 |
| 功能移除 | 弃用相关事件,设定移除时间表 |
| 修复审计发现的问题 | 根据审计结果实施修复并更新计划 |
| 定期审查 | 检查过时事件和覆盖缺口 |
批量处理: 可以在单次会话中评估多个功能。将变更合并到同一次版本递增和同一条变更日志条目中,并为每个功能创建子条目。冲刺结束时有多个功能同时发布,这种情况很常见。
流程
1. 了解变更
询问:
- “发布或变更了什么功能?”
- “该功能中的关键用户操作是什么?”
- “这是核心价值还是辅助功能?”
或者,如果依据 PR/提交/功能规格开展工作,请直接阅读相关上下文。
2. 评估追踪需求
并非每个功能都需要新增事件。请考虑:
此功能是否带来了新价值?
- 带来价值的新用户操作 → 可能需要一个事件
- 对现有功能进行 UI 重新布局 → 可能不需要
它是否扩展了现有流程?
- 现有工作流中的新步骤 → 可以通过属性扩展现有事件
- 现有操作的新变体 → 添加枚举值,而不是新建事件
它是辅助功能还是核心功能?
- 核心价值功能 → 使用包含丰富属性的一级事件
- 辅助功能 → 采用适当但较轻量的覆盖
极简测试:“有人会单独查询这个事件吗?”如果不会,最好将它作为现有事件的一个属性。
3. 设计增量变更
对于新事件:
- 遵循命名约定(object.action、snake_case)
- 指定类别
- 定义属性及其类型
- 设置预期频率
- 指定分组级别
对于没有分组层级的 B2C 产品,跳过分组级别的指定——事件仅属于用户级别。
对于修改后的事件:
- 评估是否会造成破坏性影响:
| 变更 | 是否会造成破坏性影响? | 处理方式 |
|---|---|---|
| 添加可选属性 | 否 | 直接添加 |
| 添加必需属性 | 是 | 先设为可选,或提升版本 |
| 扩展枚举 | 否 | 添加新值 |
| 限制枚举 | 是 | 设置弃用期 |
| 重命名事件 | 是 | 创建新事件并弃用旧事件 |
| 更改属性类型 | 是 | 创建新属性并弃用旧属性 |
对于已弃用的事件:
- 标记为已弃用,并注明原因和移除日期
- 如果存在替代方案,记录迁移路径
- 在计划中保留该事件,直到移除日期,然后清理
4. 对照现有事件检查
添加新事件之前:
- 是否有可通过扩展属性来满足需求的类似事件?
- 将属性添加到现有事件是否合理?
- 是否正在创建一个近似重复的事件?
优先添加属性,而非事件: report.created 搭配 { report_type: 'ai_generated' },比单独创建 ai_report.created 更合适。
5. 更新计划
修改 .telemetry/tracking-plan.yaml:
添加事件:
- 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
弃用事件:
- 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"
提升 meta.version 并更新 meta.updated。
6. 更新变更日志
在 .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]
7. 更新增量变更记录
如果 .telemetry/delta.md 存在,则添加新变更;否则创建该文件。
8. 记录实现位置
对于每个新增或变更的事件,在增量变更记录中说明:
- 位置:应在代码库的何处添加跟踪调用(文件及函数/处理程序)
- 内容:事件调用应包含什么(事件名称、必需属性、分组上下文)
- 是否需要更新:身份或分组调用是否需要更新
这将提供实现路线图。实际的代码生成由 product-tracking-implement-tracking 技能完成——建议将其作为下一步。
版本控制
使用语义化版本控制:
- 主版本(1.0 → 2.0): 破坏性变更(移除事件、添加必需属性)
- 次版本(1.0 → 1.1): 新事件、新的可选属性
- 补丁版本(1.0.0 → 1.0.1): 文档、描述修正
输出摘要
每次更新后,生成:
# 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"*).
行为规则
-
从小处着手。 新功能不需要 10 个事件。先从能够捕获核心操作的 1–2 个事件开始,需要时再添加。
-
优先扩展,再新增。 创建新事件之前,始终检查是否可以通过属性扩展现有事件。
-
完整阅读计划。 做出更改前,阅读完整的 tracking-plan.yaml。不要依赖之前对话的上下文——该文件才是事实来源。
-
所有变更都要有版本记录。 每项变更都要提升版本并记录在变更日志中。不得静默修改。
-
先弃用,不要删除。 先弃用事件,之后再移除。这能给使用方留出调整时间。
-
上下文很重要。 核心流程中的新功能比次要的设置变更更值得关注跟踪。使用产品模型进行校准。
-
保持计划最新。 跟踪计划应始终反映预期。如果计划与实际情况不一致,应更新计划,或修正实际情况。
-
将内容写入文件,在对话中总结。 将计划更新和实现指导写入文件。在对话中仅提供简明摘要(变更内容、版本提升、实现步骤)。切勿在聊天中粘贴超过 20 行原始数据。
-
呈现决策,而非推理过程。 在内部推理。用户应看到你做出的决定及原因,而不是决策过程。
生命周期
model → audit → design → guide → implement ← feature updates
^
下一阶段
完成功能埋点后,建议用户运行:
- product-tracking-implement-tracking — 为新增或变更的事件生成或更新代码(例如,“实现埋点”、“生成代码”、“更新埋点模块”)
- product-tracking-audit-current-tracking — 可选择重新审计,以验证实现是否匹配(例如,“审计埋点”、“验证埋点”)