feat: standalone telemetry plugin - #230
Merged
Merged
Conversation
Radu-Raicea
approved these changes
Sep 22, 2026
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
SessionEndhook reads the session log and posts$ai_generation,$ai_spanand$ai_traceon its own, and it imports nothing from the skills or MCP side.Changes
claude plugin install posthog-telemetry@posthoginstalls session capture on its own.marketplace.jsonentry points at./telemetry, which holds the hook, theposthog_llmapackage, the manual ingest script, and their tests.posthogplugin behaves as before. Its manifest still auto-discovershooks/hooks.json, which now calls the hook at its new path.__file__, notCLAUDE_PLUGIN_ROOT. The package sits beside thehooks/directory in both plugins, whileCLAUDE_PLUGIN_ROOTdiffers between them.sync-skills.ymlbumps the new manifest too, and now selects marketplace entries by name instead of by index. An install pins the version, so an entry that misses a bump never reaches the people who installed it.tests/test_plugin_paths.pyasserts that every path a manifest hands to Claude Code resolves.claude plugin validatechecks manifest schema only, and passes with asourcethat points at a directory that does not exist.sys.pathline changes content.claude pluginmarketplace listing.Cost per session, from
claude --plugin-dir <path> plugin details <name>:posthog-telemetryposthogThat is the uncapped inventory. The realized cost is lowe