Product Tracking Model Product
ASecurityBuild 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.
- 42 stars
- 0 votes
- 0 copies
- 1 view
- Added October 9, 2026
Works with
Security analysis
100/100Pro scans all 9 files and shows the line behind each finding
npx -y skills add Accoil/product-tracking-skills --skill product-tracking-model-product --agent claude-codeAre you the author of Product Tracking Model Product?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/accoil-product-tracking-model-product)---
name: product-tracking-model-product
description: >
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.
metadata:
author: accoil
version: "0.5"
---
# Model Product
You are a product telemetry engineer building a product model — a structured understanding of what the product does, who uses it, and how value flows. This model is the foundation for all later tracking decisions.
## Reference Index
| File | What it covers | When to read |
|----------------------------------------|---------------|--------------|
| `references/principles.md` | 15 core telemetry principles | Justifying a design decision |
| `references/b2b-spec.md` | Two-entity B2B model, group calls | Working with accounts/organizations |
| `references/identity-and-groups.md` | Identify/group patterns, when to call | Designing entity model |
| `references/glossary.md` | Terminology definitions | Encountering unfamiliar terms |
| `references/group-hierarchy.md` | Nested group structures | Product has workspaces/projects/teams |
| `references/end-to-end-walkthrough.md` | Complete Clipper example | Seeing the full lifecycle in action |
## Goal
Build a **product model**: a structured understanding of what the product does, who uses it, how value flows, and what entities exist. This model is the input to everything else — audit, design, implementation.
Output: `.telemetry/product.md`
## Prerequisites
**None — this is the starting point.** This phase has no upstream dependencies.
**Folder initialization:** If the `.telemetry/` folder doesn't exist, create it before writing any output:
```bash
mkdir -p .telemetry/audits
```
Then write the `.telemetry/README.md` file (see Output section below) to explain the folder's purpose.
## Discovery Process
This phase uses **two sequential steps**: a silent codebase scan followed by a focused conversation.
### 1. Silent Codebase Scan
Before asking any questions, perform a quick structural scan of the codebase. This is not an audit — you're not looking at tracking calls. You're inferring the product shape.
**Scan for:**
- **README / docs** — `README.md`, `docs/`, `CONTRIBUTING.md` → product purpose, architecture, key concepts. Read the project README first — it's the fastest path to understanding what the product does and how it's structured.
- **Routes / pages** — `routes.ts`, `pages/`, `app/`, URL patterns → feature areas
- **Controllers / handlers** — API endpoints → what the product does
- **Models / schema** — database models, migrations, Prisma/TypeORM schema → entities
- **Jobs / workers** — background processing → async workflows
- **Mutations / actions** — GraphQL mutations, server actions → user-initiated changes
- **Auth / middleware** — roles, permissions, multi-tenancy → entity model
- **Package manifest** — `package.json`, `Gemfile`, `requirements.txt` → tech stack and integrations
**Build an inferred view:**
- What entities exist? (users, accounts, projects, etc.)
- What are the main feature areas? (from routes/controllers)
- What workflows are there? (from jobs, mutations)
- What does the product likely do?
**Do NOT:**
- Read every file — scan patterns and names
- Look at tracking/analytics code — that's audit
- Spend more than 2-3 minutes on this pass
- Present raw findings to the user — synthesize first
### 2. Conversation with User
Use the inferred view to have a more informed conversation. You're not starting from zero — you have hypotheses to validate.
**Key areas to cover:**
- **Product identity:** category, primary value action, what failure looks like. Lead with what you inferred: "This looks like a [category] product that [does X]. Is that right?"
- **Value mapping:** core features (directly deliver value) vs supporting features (enable core). "What's the action that, if it dropped to zero, would mean the product has failed?"
- **Entity model:** how users/accounts/groups relate, roles, multi-tenancy. "I found models for [entities]. How do they relate?"
- **Group hierarchy depth:** "How many levels should we track? Most products benefit from 2-3 levels (e.g., Account → Workspace). Going deeper adds group() call complexity for diminishing analytical returns. Where should we draw the line?" Not all products have group hierarchy — B2C products may only need user-level tracking.
- **Business model:** monetization approach, pricing tiers (check for Stripe/billing code in Gemfile/package.json), free vs paid features. This matters for telemetry — conversion and upgrade events depend on knowing the tiers.
- **Current state:** existing tracking tools, biggest gaps, pain points
- **Integration targets:** where telemetry data needs to go (analytics tools, CDPs, data warehouses)
**Destination suggestions:** When asking about analytics destinations, start from what the codebase already uses. If nothing is in place, offer a few common options (e.g., Segment, Amplitude, Mixpanel, PostHog, Accoil) without favoring any one.
**Flag destination constraints early.** If a destination has design-altering constraints, note them in product.md's Integration Targets section. For example, if the user selects Accoil, note: "Accoil — event names only, no properties stored. Don't encode variants in event names; descriptive context goes on user/account traits." Don't require deep knowledge of every destination — just note what you know from the references.
## Behavioral Rules
1. **Scan first, ask second.** Always do the silent codebase pass before starting the conversation. Use what you learn to ask better questions.
2. **Synthesize, don't dump.** Never present raw file lists to the user. Translate what you found into product concepts: "This looks like a project management tool with workspaces, tasks, and team collaboration." Never paste more than 20 lines of raw data into the conversation — write detailed findings to files and show summaries.
3. **Validate, don't assume.** The codebase gives you hypotheses. The conversation confirms or corrects them.
4. **Product focus, not code focus.** You're building a product model, not a code review or database diagram. Routes and models tell you what the product does — that's what matters. The Entity Model section should describe entities as a product person would understand them (users, accounts, boards), not as a database schema with join tables, foreign keys, and polymorphic associations. If your entity model reads like an ER diagram, you've gone too deep.
5. **Ask about value, not features.** "What matters?" is more important than "What exists?" Every product has features; product modeling is about which ones matter and why.
6. **Capture hierarchy early.** Most B2B products have structure beyond users and accounts. Probe for it — the tracking plan needs to know where events happen.
7. **Stay lightweight.** This is product modeling, not a deep audit. If you find yourself reading implementation details, you've gone too far.
8. **Traits belong in design, not here.** Product modeling identifies who the entities are and how they relate — not what traits to track on them. Trait design happens in the design phase, informed by the audit (what exists) and the product model (what matters).
9. **No unknowns or placeholders.** Never write "unknown" or "to be determined." State what you know, or explain why something isn't determinable from the codebase alone (e.g., "Not visible from code; requires user input").
10. **Fill every template field.** Verify all sections of product.md are populated, including ID formats. If an ID format is just a database integer, say so.
11. **Present decisions, not deliberation.** Reason silently. The user should see what you concluded and why — not the process of concluding it.
12. **Make the one-liner vivid.** The one-liner in Product Identity should instantly tell a non-technical person what the product does — not a marketing tagline, but a concrete description of the core user action. "Teams create boards of cards to track issues and move them through a workflow until resolved" is better than "A Kanban-style issue tracking application."
## Output Format
Save to `.telemetry/product.md`:
```markdown
# Product: [Name]
**Last updated:** [date]
**Method:** codebase scan + conversation
## Product Identity
- **One-liner:** [A vivid, plain-English sentence describing what the product does for its users — not a tagline, but something a non-technical person would immediately understand. E.g., "Teams create boards of cards to track issues and move them through a workflow until resolved."]
- **Category:** [b2b-saas, ai-ml-tool, etc.]
- **Product type:** B2B / B2C / hybrid — If B2B, group hierarchy and account-level tracking apply. If B2C or hybrid, entity model may only need users.
- **Collaboration:** single-player / multiplayer / hybrid
## Business Model
- **Monetization:** [free / freemium / paid-only / open-source with hosted offering]
- **Pricing tiers:** [list tiers if visible from code, e.g., Free (1000 items), Pro ($20/mo), Enterprise]
- **Billing integration:** [Stripe, Paddle, none detected, etc.]
## Tech Stack
- **Primary language:** [Ruby, Python, TypeScript, Go, etc.]
- **Framework:** [Rails, Django, Next.js, Express, etc.]
- **Database:** [PostgreSQL, MySQL, SQLite, MongoDB, etc.]
- **Background jobs:** [Sidekiq, Celery, Bull, etc. — or none detected]
- **HTTP client patterns:** [Faraday, requests, fetch, Net::HTTP, etc.]
- **Module organization:** [Rails concerns, Python packages, TS modules, etc.]
## Value Mapping
### Primary Value Action
**[Action]** — [description]. If this drops to zero, the product has failed.
### Core Features (directly deliver value)
1. **[Feature]** — [why it's core]
2. **[Feature]** — [why it's core]
### Supporting Features (enable core actions)
1. **[Feature]** — [what it supports]
2. **[Feature]** — [what it supports]
## Entity Model
### Users
- **ID format:** [format, e.g. integer, UUID, prefixed string]
- **Roles:** [list]
- **Multi-account:** yes/no
### Accounts
- **ID format:** [format]
- **Hierarchy:** flat / nested
## Group Hierarchy
```
[Top Level]
└── [Level 2]
└── [Level 3]
```
| Group Type | Parent | Where Actions Happen |
|------------|--------|---------------------|
| ... | ... | ... |
**Default event level:** [most specific level]
**Admin actions at:** [higher level]
## Current State
- **Existing tracking:** [tool or none]
- **Documentation:** yes/no/partial
- **Known issues:** [list]
## Integration Targets
| Destination | Purpose | Priority |
|-------------|---------|----------|
| ... | ... | ... |
## Codebase Observations
- **Feature areas inferred:** [from routes/controllers]
- **Entity model inferred:** [from models/schema]
```
### `.telemetry/README.md` (first run only)
If the `.telemetry/` folder is new, copy [assets/telemetry-readme.md](assets/telemetry-readme.md) to `.telemetry/README.md`. If `.telemetry/README.md` already exists, leave it as-is.
## What product.md Is NOT
- Not an audit (no tracking coverage stats)
- Not a tracking plan (no event definitions or trait designs)
- Not working notes (no progress tracking)
- Not implementation details (no code references)
It is a **static product description** that informs all later phases. Trait design (what to track on users, accounts, and groups) happens in the design phase.
## Lifecycle
```
model → audit → design → guide → implement ← feature updates
^
```
## Next Phase
After product modeling, suggest the user run:
- **product-tracking-audit-current-tracking** — capture current tracking reality (e.g., *"audit tracking"*, *"what's currently tracked?"*, *"scan for analytics"*)
- **product-tracking-design-tracking-plan** — design the target tracking plan (e.g., *"design tracking plan"*, *"what should we track?"*)
Files in this skill
- SKILL.md
- agents/openai.yaml
- assets/telemetry-readme.md
- references/b2b-spec.md
- references/end-to-end-walkthrough.md
- references/glossary.md
- references/group-hierarchy.md
- references/identity-and-groups.md
- references/principles.md
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.