Skip to content

Commit 5bc0959

Browse files
committed
Qualify skill-name privacy bullet and narrow first-party skill comment
1 parent 0a38504 commit 5bc0959

2 files changed

Lines changed: 21 additions & 12 deletions

File tree

docs/TELEMETRY.md

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,14 @@ share of prompts driven by MCP stays visible without the server key coming
7676
with it. `agent_name` on `subagent_*` is the same pattern: first-party
7777
director ids from `DIRECTOR_IDS` (and the legacy `worker` alias) are reported
7878
by id; project-defined or marketplace profile ids become `custom`.
79-
`skill_used` carries `skill_name`: a first-party skill name from the closed
80-
`corbits-skills` allowlist (`ast-grep`, `create-issue`, `git-rebase`,
81-
`git-worktrees`, `implement`, `interview`, `linear-issue-workflow`, `opsh`,
82-
`philosophy`, `plan`, `pull-request-review`, `refactor`, `review`, `scribe`,
83-
`style`, `typescript`), or `custom` for anything else. Unknown,
79+
`skill_used` carries `skill_name`: a user-invocable first-party skill name
80+
from the closed `corbits-skills` allowlist (`ast-grep`, `create-issue`,
81+
`git-rebase`, `git-worktrees`, `implement`, `interview`,
82+
`linear-issue-workflow`, `opsh`, `philosophy`, `plan`,
83+
`pull-request-review`, `refactor`, `review`, `scribe`, `style`,
84+
`typescript`), or `custom` for anything else. Bundled skills marked
85+
`user-invocable: false` (`native-integration`, `native-runtime`, `ponytail`,
86+
`idiot-proof`) are excluded from the allowlist by design. Unknown,
8487
project-local, and plugin-authored skill names are never transmitted —
8588
`skill_name` is the only identifying-adjacent property the event can carry.
8689
`plugin_loaded` goes further: there is no first-party list of plugins to
@@ -193,8 +196,10 @@ retry paths.
193196
- Prompts, model output, or any conversation content (except intentional
194197
free-text the operator types into `/feedback` — see below)
195198
- File paths, file contents, or repo/project names
196-
- Names anyone but this project chose: MCP servers, skills, plugins, agent
197-
profiles, plugin-registered slash commands, error subclasses (see above)
199+
- Names anyone but this project chose: MCP servers, skills (other than
200+
first-party `corbits-skills` names, which are sent by name per the table
201+
above), plugins, agent profiles, plugin-registered slash commands, error
202+
subclasses (see above)
198203
- Shell commands, tool arguments, or tool results
199204
- API keys, tokens, or any other credential
200205
- Anything not in the allowlist above

src/telemetry/classify.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,15 @@ const BUILT_IN_AGENT_NAMES: ReadonlySet<string> = new Set([
7171
"worker",
7272
]);
7373

74-
// First-party skills shipped by the bundled `corbits-skills` plugin
75-
// (plugins/corbits-skills/skills). The manifest carries only the plugin id
76-
// and kind — no skill list — so the closed set is spelled out here and pinned
77-
// by tests/unit/telemetry-product-events.test.ts. Project- or plugin-authored
78-
// skills are never reported by name.
74+
// User-invocable first-party skills shipped by the bundled `corbits-skills`
75+
// plugin (plugins/corbits-skills/skills). The manifest carries only the plugin
76+
// id and kind — no skill list — so the closed set is spelled out here and
77+
// pinned by tests/unit/telemetry-product-events.test.ts. Bundled skills marked
78+
// `user-invocable: false` (native-integration, native-runtime, ponytail,
79+
// idiot-proof) are deliberately excluded — they are baked into agent prompts
80+
// rather than user-invoked — so the set covers only the user-invocable
81+
// first-party skills. Project- or plugin-authored skills are never reported by
82+
// name.
7983
const FIRST_PARTY_SKILL_NAMES: ReadonlySet<string> = new Set([
8084
"ast-grep",
8185
"create-issue",

0 commit comments

Comments
 (0)