Skip to content

feat: infer skill names from SKILL.md reads#689

Open
charlieviettq wants to merge 2 commits into
kenn-io:mainfrom
charlieviettq:codex/upstream-skill-inference
Open

feat: infer skill names from SKILL.md reads#689
charlieviettq wants to merge 2 commits into
kenn-io:mainfrom
charlieviettq:codex/upstream-skill-inference

Conversation

@charlieviettq

Copy link
Copy Markdown
Contributor

Summary

  • infer tool_calls.skill_name when Codex/Cursor read a SKILL.md file
  • use SKILL.md frontmatter name when available, with parent directory fallback
  • apply inference to Cursor JSONL tool_use blocks as well as parser-specific tool calls
  • bump dataVersion so historical sessions are reparsed

Compatibility

  • no schema changes
  • preserves explicit skill names when already present
  • does not infer from discovery-only Glob or write/edit/copy/move operations

Privacy/Data

  • reads local SKILL.md metadata only when the referenced file is available
  • no data is uploaded

Tests

  • go test -tags "fts5,kit_posthog_disabled" ./internal/parser ./internal/db ./internal/server
  • go test -tags "fts5,kit_posthog_disabled" ./internal/...
  • git diff --check

Review note

This is intentionally separate from the analytics endpoint/UI. It improves data population for agents that do not emit explicit skill_name values.

@roborev-ci

roborev-ci Bot commented Jun 14, 2026

Copy link
Copy Markdown

roborev: Combined Review (4641d97)

Medium issue found: plain-text Cursor Shell calls miss skill inference parity with JSONL.

Medium

  • Location: internal/parser/cursor.go:258
    • Problem: Plain-text Cursor Shell tool calls are not passed through the shell-based skill inference path, while Cursor JSONL Shell tool calls are. Since Shell is already supported for Cursor transcripts, plain transcript sessions that read SKILL.md via shell commands can be marked resynced while still missing skill_name.
    • Fix: Mirror the JSONL path by falling back to inferCodexSkillName(toolName, inputJSON) when inferCursorSkillName returns empty.

Panel: ci_default_security | Synthesis: codex, 9s | Members: codex_default (codex/default, done, 4m16s), codex_security (codex/security, done, 1m17s) | Total: 5m42s

@charlieviettq charlieviettq force-pushed the codex/upstream-skill-inference branch from 4641d97 to 2249d4f Compare June 14, 2026 16:43
@roborev-ci

roborev-ci Bot commented Jun 14, 2026

Copy link
Copy Markdown

roborev: Combined Review (2249d4f)

Findings need changes before merge.

Medium

  • internal/parser/cursor.go:258 — Plain-text Cursor transcripts only run inferCursorSkillName, so [Tool call] Shell commands that read SKILL.md are not annotated, even though JSONL Shell calls now are. Mirror the JSONL path by falling back to shell/read-command inference when inferCursorSkillName returns empty, and add a Cursor transcript Shell test.

Panel: ci_default_security | Synthesis: codex, 8s | Members: codex_default (codex/default, done, 3m53s), codex_security (codex/security, done, 1m23s) | Total: 5m24s

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant