metrics-tagging
Turns a UI mockup into a complete analytics event taxonomy ready for handoff.
What it does
Analyze UI mockups, screenshots, or prototype frames to identify all trackable interactions and generate a complete analytics event taxonomy table. Use this skill whenever a designer uploads a screen, mockup, prototype screenshot, or UI frame and wants to know what should be tagged, what events to fire, or how to document analytics for handoff. Also trigger when someone asks to "tag this screen," "identify events," "create a tagging spec," "what should we track," or "build an event table" for any UI. If a designer shares any visual of a UI and mentions analytics, tracking, tagging, GTM, events, or metrics — use this skill.
What you give it
- UI to instrument
Upload a screen, mockup, prototype frame, or screenshot of the UI you want to tag. Multiple frames of a flow work too.
- Tracking context
Optionally note the platform, existing event naming conventions, or which interactions matter most for the metric you care about.
What you get back
- Event taxonomy table
A complete table of trackable interactions with event names, properties, cascading inputs, and high-impact fields surfaced for handoff to engineering.
- Coverage gaps
Interactions that are ambiguous or missing context, flagged so nothing important goes untracked.
How to use it
Load the metrics-tagging skill. Here's the screen I need to tag: [attach mockup or screenshot]. I want to track [describe the metric or behavior].
Get this skill
Download the SKILL.md file and install it in Claude or Cursor.
How to install
- Download the SKILL.md file using the button above.
- Open claude.ai and go to Settings.
- Select Skills from the sidebar.
- Click Add skill and upload the SKILL.md file.
- Give the skill a name and save. Claude loads it automatically when relevant.
Skills installed in Claude persist across conversations. Claude reads the skill when the trigger conditions match your message.
Full skill reference
Metrics Tagging Skill
Analyze a UI mockup or screenshot and produce a complete analytics event taxonomy, ready for handoff to a tag implementation team.
Mental Model: Three Levels of Tagging
Before generating the table, always frame the output across three levels. This helps designers understand why each tag matters — not just what it is.
| Level | What it answers | Example |
|---|---|---|
| Page | What happened on screen | User clicked “Save” button |
| App | What workflow is this part of | Account setup flow completion |
| Business | Which KPI does this feed | Task completion rate, time-on-task, abandonment rate |
Input
Accept any of:
- Screenshot or photo of a UI mockup
- Prototype frame image
- Annotated design screenshot
- Description of a screen with listed components
The designer may also provide:
- The flow name (e.g. “Onboarding”, “Checkout”, “Settings”, “Profile Edit”)
- The product type (e.g. SaaS, e-commerce, internal tool, consumer app)
- Existing event naming conventions already in use
- Business KPIs this flow relates to
If the designer does not provide product or flow context, ask for it before generating the table. The “Purpose” column cannot be filled accurately without knowing what the flow is trying to accomplish.
Naming Convention
Use camelCase. Follow this pattern: noun + Verb
Format: [object/screen][Action]
General examples:
checkoutViewed— page load on checkout screencartItemRemoved— user removes item from cartplanSelected— user selects a pricing planpasswordChanged— user updates their passwordformSubmitted— generic form submitmodalDismissed— user closes a modalflowCancelled— user exits a multi-step flow
Rules:
- No underscores, no hyphens
- Noun first, verb second
- Use past tense for completed actions (
Saved,Selected,Changed,Entered) - Use present tense for initiated states (
Start,Viewed) - Keep names under 30 characters
- If the product already has a naming convention, follow it exactly and note it in the output
Output: Event Taxonomy Table
Produce a markdown table with exactly these five columns:
| # | Event or Action | ID or Variable | Definition | Purpose | Event Name |
|---|
Column definitions:
Event or Action — Plain English label. What the user did or what happened. Use the element type + label text. Examples:
Button Click: "Save Changes"Dropdown: "Account Type"Page LoadText Input: "Email Field Changed"Radio: "Billing Frequency"
ID or Variable — The DOM-level selector or variable name the tag team will hook into. Use kebab-case. Infer from the label text if not visible in the mockup. Examples:
save-changes-btnaccount-type-selectemail-inputbilling-frequency-radio
Definition — When exactly does this event fire? Be precise. Start with “When the user…” or “The moment the page…”
Purpose — Which business question does tracking this answer? Connect to a KPI. If flow context was provided, map directly to a stated KPI. If not, use the most likely KPI for that element type:
- Submit buttons → task completion rate
- Cancel/close buttons → abandonment rate
- Start events → funnel entry rate
- Feature toggles → feature adoption rate
- Error states → error rate
Event Name — camelCase event name following the naming convention above.
Cascading Input Priority
Not all inputs are equal. When deciding whether to tag a specific input field, apply these two tests. If either passes, the input must be tagged and flagged.
Test 1 — Does it cascade? If changing this field’s value causes anything else in the flow to change — other fields appearing or hiding, validation rules shifting, downstream behavior changing — it must be tagged. These inputs explain why users take different paths through the same flow.
Test 2 — Does it have sizeable outcome impact? Even if nothing visually changes, does this field’s value directly affect the product’s core outcome — pricing, eligibility, access level, subscription tier, risk calculation, permissions? If yes, tag it.
General examples of must-tag inputs:
- Plan type selector — changes what features or pricing applies
- Account type dropdown — may change what form fields appear next
- Billing frequency toggle — affects pricing calculation
- User role selector — changes what the user can access
- A/B test variant toggle — affects the entire experience downstream
- Any field that unlocks or hides a subsequent step
General examples of lower-priority inputs:
- Middle name or suffix fields
- Secondary address line
- Optional bio or description fields (unless length or content triggers logic)
- Display preference fields with no functional effect
When analyzing a mockup, mark each cascading or high-impact input with a [CASCADE] or [HIGH IMPACT] flag in the Purpose column. This tells the tag team what to prioritize if they need to phase implementation.
If cascade behavior of any input is unclear from the mockup, flag it in the Coverage Gaps section and prompt the designer to verify with a PM or business analyst before handoff.
Element Coverage Checklist
When analyzing a screen, systematically check for all of these. Do not skip any category.
Always tag:
- Page/view load
- Every CTA button (primary and secondary)
- Every form submit button
- Every cancel / dismiss / close button (high abandonment signal)
- Every cascading input — any field whose value changes the flow
- Every high-impact input — any field with direct effect on a core business outcome
- Every radio button group
- Every checkbox and toggle that affects downstream behavior
Tag if present and notable:
- Dropdowns / selects (cascading ones first)
- Text input fields (high-impact ones first)
- Expand/collapse controls
- Search / autocomplete interactions
- Modal or drawer open/close events
- Warning or alert dismissed actions
- Add / expand section actions
- Back / navigation links
- Pagination or load-more actions
Flag but do not generate — prompt the designer:
- Screen states not visible in the mockup: error state, empty state, loading state
- Conditional logic (fires only when X condition is true)
- Multi-step flows where the same element appears across steps
- Any input whose cascade behavior cannot be determined from the mockup alone
Coverage Gap Section
After the table, always output a Coverage Gaps section: The following were NOT visible in the provided mockup or could not be determined from it. Verify these before handoff:
Error state: What fires if form validation fails? Loading state: Is there a spinner or skeleton? Should it be tracked? Empty state: What fires if the list/section is empty on load? [Any cascading inputs flagged as unclear] [Any conditional logic that depends on user state or permissions]
Business Context Priming
If the designer provides flow context, use it to sharpen the Purpose column. Common KPIs by product type to map to:
SaaS / internal tools:
- Task completion rate → flow save/submit events
- Task abandonment rate → cancel, close, back events
- Time on task → flow start + flow saved pair
- Feature adoption → optional feature toggles
- Error rate → validation error events
E-commerce:
- Conversion rate → add to cart, checkout initiated, purchase completed
- Cart abandonment → remove from cart, checkout exited
- Funnel drop-off → step viewed vs. step completed pairs
Consumer apps:
- Activation rate → onboarding completed event
- Retention signal → return visit, key feature used
- Engagement depth → feature interaction frequency
If no context is provided, use generic KPI language and note in the output that Purpose column accuracy will improve with flow context.
Output Format
- Start with a brief Screen Summary (1-2 sentences: what screen is this, what flow is it part of)
- Output the Event Taxonomy Table in full
- Output the Coverage Gaps section
- End with a Naming Convention Reference block showing the pattern used and any conventions observed or inferred
Example Output Structure
Quality Check Before Outputting
Before finalizing output, verify:
- Every visible interactive element is in the table
- No event name is duplicated
- All event names follow the camelCase
nounVerbpattern - Every row has all 5 columns populated
- Cancel/close/dismiss buttons are included
- Cascading inputs are flagged [CASCADE] in the Purpose column
- High-impact inputs are flagged [HIGH IMPACT] in the Purpose column
- Coverage gaps section calls out all missing screen states
- Any input whose cascade behavior is unclear is flagged in Coverage Gaps
- If no flow context was provided, the output notes that Purpose column accuracy is limited and prompts the designer to re-run with context