Add plugin ID to skill analytics (#20923)

## Summary
- thread plugin skill roots through the skills loader with their plugin
ID
- store plugin ID on loaded skill metadata for plugin-provided skills
- include plugin ID on skill invocation analytics events

## Test plan
- cargo check -p codex-core-skills
- cargo check -p codex-core -p codex-core-plugins -p codex-analytics
- cargo check -p codex-tui
- cargo check -p codex-plugin -p codex-core -p codex-core-plugins -p
codex-analytics
- cargo check -p codex-app-server
- cargo test -p codex-analytics
- HOME=/private/tmp/codex-empty-home cargo test -p codex-core-skills
- just fix -p codex-core-skills
- just fix -p codex-analytics
- just fix -p codex-core-plugins
- just fix -p codex-core
- just fmt
- git diff --check
This commit is contained in:
alexsong-oai authored and GitHub committed 2026-05-04 20:36:29 -07:00
1 parent 707e51bd8b
commit 3ad7cf0993
27 files changed
+228 -20

No files matched your search

+4 -2
View File
@@ -63,6 +63,7 @@ use codex_plugin::PluginIdError;
use codex_plugin::prompt_safe_plugin_description;
use codex_protocol::protocol::Product;
use codex_utils_absolute_path::AbsolutePathBuf;
use codex_utils_plugins::PluginSkillRoot;
use std::collections::HashMap;
use std::collections::HashSet;
use std::path::PathBuf;
@@ -540,10 +541,10 @@ impl PluginsManager {
&self,
config_layer_stack: &ConfigLayerStack,
config: &PluginsConfigInput,
) -> Vec<AbsolutePathBuf> {
) -> Vec<PluginSkillRoot> {
self.plugins_for_layer_stack(config_layer_stack, config, config.plugin_hooks_enabled)
.await
.effective_skill_roots()
.effective_plugin_skill_roots()
}
fn cached_enabled_outcome(
@@ -1339,6 +1340,7 @@ impl PluginsManager {
);
let resolved_skills = load_plugin_skills(
&source_path,
&plugin_id,
&manifest.paths,
self.restriction_product,
&codex_core_skills::config_rules::skill_config_rules_from_stack(