Uh oh!
There was an error while loading. Please reload this page.
fix(server): discover project skills for Codex and OpenCode - #8778
Conversation
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Your free Security trial is over. An organization admin can activate Security or dismiss this notice. Comment |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
UI consistency review: one concern about the new mount-time provider refresh in ChatComposer.
Posted via Macroscope — UI Consistency
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 782d95c. Configure here.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This change introduces workspace-specific provider probing, caching, RPC plumbing, and automatic process discovery from the Composer across server and web layers. Its cross-cutting runtime effects and unresolved probe/status interaction concern warrant human review. You can add or adjust custom eligibility rules. Learn more. |
Uh oh!
There was an error while loading. Please reload this page.
Adopts main's round-19 features into the v2 stack: payload-budgeted orchestration replay (#8992), sidebar row subscription leases (#9052), tool group virtualization and scroll anchoring (#9106), repeated-command and browser-group presentation, inline assistant citations (#9146), per-cwd provider skills discovery (#8778), Claude composer skill dispatch (#9128), grok health probe and model negotiation (#9154), and the failed-tool thinking fallback (#9165). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
pingdotgg#8778 taught the registry to keep per-cwd workspace snapshots and gave Codex and OpenCode a snapshotForCwd capability, but Claude still lists only the skills scanned from the server's startup directory. Implement the same capability on the Claude driver: rescan the skill roots against the requested cwd and overlay them on the machine snapshot, so the composer and timeline see the active worktree's catalog for Claude too. Documents the workspace-scoped behavior in docs/user/composer.md.
Adopts main's round-19 features into the v2 stack: payload-budgeted orchestration replay (#8992), sidebar row subscription leases (#9052), tool group virtualization and scroll anchoring (#9106), repeated-command and browser-group presentation, inline assistant citations (#9146), per-cwd provider skills discovery (#8778), Claude composer skill dispatch (#9128), grok health probe and model negotiation (#9154), and the failed-tool thinking fallback (#9165). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Closes#8792
What Changed
/command menu and$skill search to resolve skills and commands from the current workspace snapshot.Why
Codex and OpenCode discover project-local skills relative to the current working directory, but T3 Code only exposed the machine-level provider snapshot to the composer. As a result, skills from the current project were missing from both selectors.
Workspace discovery now stays scoped to the provider instance and working directory, while machine-level provider metadata remains unchanged.
Screenshots
The Unslop skill is installed in the project, but it was not shown before. It is shown now.
Before:




After:




(The skill being labelled as provider skill for OpenCode is a different bug. Will fix that in another PR)
Checklist
Built with GPT-5.6 Sol in the Codex harness.
Note
Add workspace-scoped provider skills and slash commands to composer menus
ServerProvidercontainingskillsandslashCommands, stored in-memory inProviderRegistrywith a cap of 16 entries per provider and deduplication of concurrent refreshes.CodexDriverandOpenCodeDriverexposesnapshotForCwd(cwd)which probes skills for the working directory (via app-server process or CLI) with a 20s timeout.ProviderCommandReactortriggers a backgroundrefreshWorkspaceSnapshotwhen a thread resolves itseffectiveCwd, and theserverRefreshProvidersRPC accepts an optionalcwdto scope the refresh.ChatComposerandChatViewnow useresolveProviderSkillsForCwd/resolveProviderSlashCommandsForCwdto display cwd-specific menus, falling back to machine-level collections when no workspace snapshot exists.loadOpenCodeSkillsSDK failures now propagate the error instead of defaulting to[]within that function.Macroscope summarized f1f91e1.
Note
Medium Risk
Adds cwd-scoped CLI/app-server probes and orchestration hooks on session start; failures are mostly non-fatal but increase background process load and change provider refresh RPC semantics.
Overview
Project-local Codex and OpenCode skills and slash commands were missing from the composer because the UI only used machine-wide provider snapshots. This PR adds per-workspace snapshots (
workspaceSnapshotsonServerProvider) and fills them by probing each provider for the activecwd.Server: Codex and OpenCode drivers expose optional
snapshotForCwd(cwd)(skills probe with a 20s timeout).ProviderRegistry.refreshWorkspaceSnapshotdeduplicates in-flight probes, keeps up to 16 cwd entries in memory, strips workspace data from on-disk provider caches, and clears snapshots when an instance rebuilds.ProviderCommandReactorkicks off a detached workspace refresh after session start and when reusing a session without a full restart.serverRefreshProvidersaccepts optionalinstanceId+cwdto target a workspace refresh.Client:
resolveProviderSkillsForCwd/resolveProviderSlashCommandsForCwdprefer the matching workspace snapshot, else fall back to machine metadata.ChatComposerrequests a scoped refresh when the selected provider lacks a snapshot forgitCwd; timeline and slash/$menus use the resolved lists.refreshProviderssingle-flight keys now includecwd.Reviewed by Cursor Bugbot for commit f1f91e1. Bugbot is set up for automated code reviews on this repo. Configure here.