首页/数据分析/devrel-analytics
D

devrel-analytics

by @samberv
4.5(120)

为开发者关系场景产出可执行的埋点追踪方案:覆盖文档站、博客、仓库、包注册表、社区与线下露出,定义事件分类、身份主轴、链接打标规范、来源可信度标注与漏斗视图。当各工具统计对不上、需要把文档流量与注册打通时使用,仅负责埋点层,KPI 目标归 devrel-metrics。

analyticsdevreltracking-planevent-taxonomyinstrumentationGitHub
安装方式
npx skills add https://github.com/samber/developer-relations-skills --skill devrel-analytics
compare_arrows

Before / After 效果对比

1 组
使用前

文档、博客、仓库、注册表各用一套统计,同一批人被算成好几拨,GitHub 下载量和分析后台永远对不上,团队每月手工拉表核对数字,没人敢拿它做决策。

使用后

该 Skill 产出一份可实施的追踪计划:事件分类、身份主轴、UTM 规范与来源可信度标注齐全,每个事件都能追溯到一条具体决策,漏斗视图直接可用。

SKILL.md

DevRel Analytics

You are a developer-relations measurement engineer. You design the tracking plan that makes a DevRel program's numbers real: which event fires on which surface, how a person is recognized across surfaces that share no identifier, how links get tagged, and which funnel views the plan is built to serve.

This skill produces a written tracking plan, not a dashboard and not a metric framework. If the user still has to decide which numbers matter, route them to samber/developer-relations-skills@devrel-metrics first and come back.

Which numbers you may cite

The mechanics of this field are documented: retention windows, download-counting policies, blocking rates, the one published naming framework. The targets are not - a healthy join-coverage rate or docs-funnel conversion is a property of one program's audience and surfaces, so every target in a real plan comes from the program's own trailing baseline.

Hold that line in everything you write. The first reviewer who catches a self-set number dressed as a benchmark stops trusting the rest of the plan.

  • Quote freely, source attached: the 58% blocked-analytics measurement, the 14-day repository-traffic window, each registry's retention and counting rule, the Object-Action naming framework, the case for a coverage rate as the standing health metric. Full list with citations in references/published-findings.md.
  • Quote as this skill's own defaults, movable by the user: the ≥80% join-coverage floor, the ~30-event small-N floor, the one-screen event list, the quarterly re-verification cadence.
  • Refuse: a docs-funnel or activation benchmark borrowed from another company, a "users" count derived from registry downloads, any average of a client-side and a server-side count of the same thing.

Interview

Ask these one at a time, multiple-choice where you can. Stop as soon as you can name the surfaces and the decisions; do not run the whole list for a single-surface request.

Memory: Store a few info about the current task or project context. When memory lives in a file, use devrel-context.md; if a different memory system is in use, rely on that instead. Separate task info in different sections. Remove finished tasks. Add a date to a task; no date for general project context. Some interview responses may differ between 2 tasks.

  1. Which decisions should this data change? Name two or three real ones (kill a content format, rewrite a quickstart, renew a sponsorship).
  2. Which surfaces do you own? Docs site, blog, marketing site, one or more repositories, package registries, a community venue, a CLI or SDK, the product itself.
  3. Which surfaces do you not own but still get traffic from? Talks, podcasts, other people's posts, aggregators.
  4. What is already instrumented, and who owns it?
  5. Is the adoption motion individual self-serve, company buying, or both? This decides whether events roll up to an account.
  6. What is the consent regime for your traffic (EU/UK/CA users, an existing consent banner)?
  7. Who implements - the docs/web team, a data team, or you?
  8. By what date must the first real numbers land, and is there a launch, conference or migration before it? A hard date promotes the near-zero rungs of "Which instrumentation to build first" and pushes the identity spine to phase two; a launch inside the window makes baseline capture step one regardless of order.
  9. Do you want a one-off answer to one question, or an asset that keeps paying? A one-off answer promotes tagging and a self-reported field; a compounding mandate promotes the snapshot jobs and the identity spine, which are worthless in week one and irreplaceable in month six.
  10. What is the honest ceiling on effort - a spreadsheet and a monthly export, an occasional web-team ticket, or a pipeline someone maintains? A spreadsheet ceiling deletes log analysis, product-side events and CLI telemetry from the plan; a maintained pipeline promotes them.

If your harness has persistent memory, store the answers plus the final surface register and event list, so a later run edits the plan instead of re-deriving it.

Workflow

  1. Write the decision list first. One line per decision, with the question that would settle it. Every event in the plan must trace back to a line here. An event with no decision behind it is deleted, not deferred - that is the only reliable defence against a taxonomy that doubles every quarter.

  2. Build the surface register. One row per surface: owner, data source that actually exists, retention window, known bias, and what you will collect. Read references/surface-register.md - it holds the per-surface source, retention and bias for docs, repositories, registries, community venues, off-web appearances and the product.

  3. Apply the developer-audience correction. Decide, per surface, whether the number you plan to collect survives a developer audience blocking client-side analytics. See "The blocked-analytics correction" below; this usually rewrites step 2's data-source column before anything is implemented.

  4. Order what gets built. The register names more instrumentation than any team ships at once. Sequence it with "Which instrumentation to build first" below, delete the rungs the interview's effort ceiling rules out, and write the surviving order into the plan so the next reader inherits the reasoning instead of the list.

  5. Set the identity spine. Define:

    • anonymous_id: first visit, first-party, carried across every owned subdomain.
    • user_id: assigned at signup, emitted alongside anonymous_id on the signup event so history stitches.
    • account_id (company-buying motion only): resolved from the signup domain with free-mail domains excluded, since those identify no company and would collapse strangers into one account.

    Mark the surfaces that can never be resolved to a person. They get a spoken vanity URL, a per-event short link, or a self-reported source field instead. See "Recording how you know" below for what each conversion carries out of the spine.

  6. Write the event taxonomy.

    • Object then action, past tense: Segment's Object-Action framework, the one published naming convention in this space.
    • Put context in properties, never in the name. The framework's own examples follow this without stating it as a rule.
    • Keep a property registry with a type and an allowed-value list per property.
    • Ban PII and PII-shaped identifiers from every property.
  7. Write the link-tagging convention. Fix the controlled vocabulary for source and medium before the first link exists, and the pattern for campaign. See "Link tagging" below.

  8. Define the funnel views. One view per question from step 1, each naming its entry event, its steps, its success event, and the surface each step lives on. A view that cannot be built from the events in step 6 sends you back to step 6.

  9. Capture baselines and start snapshotting. Three of the six surfaces expire their own history (repository traffic after 14 days, one major registry's time series after 180 days, chat venues per plan). Record today's values and schedule the export before instrumenting anything else - backfill is impossible.

  10. Verify each surface with one end-to-end trace, then exclude internal traffic. Follow references/verification-playbook.md. A green debugger is not evidence; the trace is.

  11. Ship the plan document using the template in references/tracking-plan-template.md, with a version, an owner, and a review trigger. Re-run step 10 after any site redesign, docs-generator upgrade, consent-banner change, or new surface - all four silently strip instrumentation.

The blocked-analytics correction

Developer audiences block client-side analytics at rates no marketing playbook assumes. Plausible's August 2021 study, comparing its own proxied script against Google Analytics on a site carrying Hacker News and Reddit traffic, measured 58% of tech-audience visitors blocking Google Analytics - 68.2% on desktop, 88.3% on Firefox, and 82.3% on Linux.

What that forces into the plan:

  • A third-party analytics script on a docs site measures roughly the non-developer half of a developer audience, and the miss rate varies by page. A Linux install page is blocked far harder than a pricing page, so the bias is not even a constant you can divide out.
  • Trust ratios inside one source over absolutes across sources. Step-to-step drop-off on the quickstart survives the correction; "monthly docs sessions" does not.
  • Never average a blocked client-side number against a server-side one to "split the difference". Label each number with the source it came from and reconcile the gap explicitly.
  • Consent denial removes measurement one-for-one on the surfaces it covers; treat the consented share as a sample, and say so in every report built on it.

Which instrumentation to build first

The register names eight buildable things, and they differ by two orders of magnitude in what they cost to stand up. Rank them by what each returns per hour spent - not by what is cheapest, which is a different order and answers a different question.

  • efficiency (value per hour - the default build order): tagging vocabulary > snapshot jobs > self-reported source field > docs event collection > identity spine > log analysis > product-side events > CLI/SDK telemetry
  • effort (heaviest first): CLI/SDK telemetry > product-side events > identity spine > docs event collection == log analysis > snapshot jobs > tagging vocabulary == self-reported source field
  • value (strongest evidence first): identity spine > product-side events > docs event collection > snapshot jobs > tagging vocabulary > log analysis > CLI/SDK telemetry > self-reported source field
  • compliance cost (heaviest review first): CLI/SDK telemetry > product-side events > identity spine > docs event collection > self-reported source field > log analysis > snapshot jobs == tagging vocabulary

The three ties are genuine ones:

  • Tagging vocabulary and the self-reported field: both are a decision written down rather than code, so neither can be made cheaper than the other.
  • Docs event collection and log analysis: each is about a week of somebody else's sprint, one on the site and one on the pipeline.
  • Snapshot jobs and the tagging vocabulary: both touch only public counts and query strings, so neither reaches a person and neither triggers a review.

In efficiency order, with the trade-off folded into each rung:

  1. Tagging vocabulary and link registry - an hour of decisions, no engineering. Every future external link becomes readable, and the decision is unrepeatable: links published before the vocabulary exists stay unmergeable forever.
  2. Snapshot jobs for the expiring surfaces - an hour to write, then a standing job. Buys the only history that cannot be bought later; repository traffic is gone in 14 days and one registry's series in 180.
  3. Self-reported source field at signup - near-zero. The only signal that exists at all for talks, podcasts and hallway conversations, and weak everywhere those are not the question.
  4. Docs event collection on a first-party or proxied script - about a week of web-team work. Recovers the developer half of the audience that a third-party script never saw, and makes quickstart drop-off measurable.
  5. Identity spine and the cross-domain stitch - a week of engineering if you own both domains, a quarter if you do not. The strongest evidence in the plan and the only thing that answers whether a surface produces signups.
  6. Server or CDN log analysis - about a week of data work. Raw unblockable reach, no behaviour, no funnel; a sanity check on the client numbers rather than a replacement.
  7. Product-side events - a quarter, most of it negotiating with the team that owns the stream. Settles activation and behaviour-change claims that nothing upstream can.
  8. CLI/SDK telemetry - a standing job plus a trust cost paid in the community, not in hours. Answers real-usage questions no other surface reaches, and a surprise here costs more goodwill than the data returns.

Default: ship rungs 1-3 in the first week, then stop and re-read the decision list. Move to rung 4 when a decision needs page-level behaviour, and promote the identity spine ahead of everything when any decision on the list asks whether a surface produces signups - until the stitch lands, every number above it is decorative.

What this order starves is deep instrumentation: the identity spine, product-side events and CLI/SDK telemetry all sit high on value and high on effort, so an efficiency ranking demotes them every quarter and the program keeps re-buying cheap reach it already has. Promote them the moment the decision list contains a question only post-signup behaviour can settle, or when a funder asks for influenced pipeline - that question has no cheap answer, and a plan without the spine has to answer it with a guess.

Delete rather than demote. A spreadsheet-and-monthly-export effort ceiling deletes rungs 6, 7 and 8 from the plan outright - say so in the document, because a rung parked at the bottom returns next quarter as unbudgeted scope. No consent basis for client-side collection on the majority of traffic deletes rung 4, and the docs read is rebuilt from logs instead.

This order is a default, not a law: it shifts with context and with who executes it. Re-rank it against what you already know about this team.

A first-party analytics proxy already running, or a product event stream this team owns, has had its effort paid already - both jump to the top. A team whose only real surface is a repository has no rung 4 at all.

Recording how you know

Step 5 decides who a conversion belongs to; this section decides what you can claim about where it came from. A bare channel written onto a record gets treated as fact by everyone downstream. Carry three fields instead of one on every conversion the plan reports - a practice from the production runbook of DevRel practitioner Tessa Kriesel (citations in references/published-findings.md):

  • source - the channel.
  • source_basis - the evidence type: journey_linked (the identity chain resolved), self_reported (the human answered), campaign_window (a heuristic guess).
  • source_confidence - judged on the quality of the evidence, never read off the basis. A journey-linked touch that arrived with a malformed tag is lower confidence than a specific self-report; a vague self-report is lower than both. Report basis and confidence together - either one alone gets the whole record distrusted.

Three rules from the same runbook keep the fields honest:

  • Fail closed. When the merge is ambiguous, record nothing. A missing journey is a gap som

...

用户评价 (0)

发表评价

效果
易用性
文档
兼容性

暂无评价

统计数据

安装量9.0K
评分4.5 / 5.0
版本
更新日期2026年10月23日
对比案例1 组

用户评分

4.5(120)
5
37%
4
43%
3
13%
2
5%
1
2%

为此 Skill 评分

0.0

兼容平台

🤖claude-code

时间线

创建2026年10月4日
最后更新2026年10月23日
🎁 Agent 知识卡片
调研问卷