fix(server): discover project skills for Codex and OpenCode - #8778

Merged
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills
Sep 2, 2026
Merged

fix(server): discover project skills for Codex and OpenCode#8778
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Closes#8792

What Changed

  • Added workspace-scoped provider snapshots for skills and slash commands.
  • Probed project skills from the active working directory for Codex and OpenCode.
  • Updated the / command menu and $ skill search to resolve skills and commands from the current workspace snapshot.
  • Added focused coverage for workspace snapshot storage, refresh deduplication, and client-side selection.

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:
image
image
Image
Image

After:
image
image
image
image

(The skill being labelled as provider skill for OpenCode is a different bug. Will fix that in another PR)

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Built with GPT-5.6 Sol in the Codex harness.

Note

Add workspace-scoped provider skills and slash commands to composer menus

  • Introduces per-cwd workspace snapshots on ServerProvider containing skills and slashCommands, stored in-memory in ProviderRegistry with a cap of 16 entries per provider and deduplication of concurrent refreshes.
  • CodexDriver and OpenCodeDriver expose snapshotForCwd(cwd) which probes skills for the working directory (via app-server process or CLI) with a 20s timeout.
  • ProviderCommandReactor triggers a background refreshWorkspaceSnapshot when a thread resolves its effectiveCwd, and the serverRefreshProviders RPC accepts an optional cwd to scope the refresh.
  • ChatComposer and ChatView now use resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd to display cwd-specific menus, falling back to machine-level collections when no workspace snapshot exists.
  • Risk: workspace snapshots are excluded from on-disk provider caches and cleared on instance rebuild, so skills may briefly show machine-level results after a provider restart until the next background probe completes. loadOpenCodeSkills SDK 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 (workspaceSnapshots on ServerProvider) and fills them by probing each provider for the active cwd.

Server: Codex and OpenCode drivers expose optional snapshotForCwd(cwd) (skills probe with a 20s timeout). ProviderRegistry.refreshWorkspaceSnapshot deduplicates 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. ProviderCommandReactor kicks off a detached workspace refresh after session start and when reusing a session without a full restart. serverRefreshProviders accepts optional instanceId + cwd to target a workspace refresh.

Client:resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd prefer the matching workspace snapshot, else fall back to machine metadata. ChatComposer requests a scoped refresh when the selected provider lacks a snapshot for gitCwd; timeline and slash/$ menus use the resolved lists. refreshProviders single-flight keys now include cwd.

Reviewed by Cursor Bugbot for commit f1f91e1. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 259176d0-06ad-4a33-a1f2-b863c5f7bb77

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 30, 2026
@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in selectorsfix(web): show project skills in composer menusAug 30, 2026
Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/provider/opencodeRuntime.ts Outdated
Comment threadpackages/client-runtime/src/state/server.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review: one concern about the new mount-time provider refresh in ChatComposer.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ChatComposer.tsx

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/ws.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in composer menusfix(server): discover project skills for Codex and OpenCodeAug 30, 2026
@maria-rcks
maria-rcks merged commit 80a14b6 into pingdotgg:mainSep 2, 2026
27 checks passed
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Mnigos added a commit to Mnigos/t3code that referenced this pull request Sep 2, 2026
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.
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Project-local Codex and OpenCode skills are missing from composer menus

2 participants

@UtkarshUsername@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(server): discover project skills for Codex and OpenCode - #8778

Merged
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills
Sep 2, 2026
Merged

fix(server): discover project skills for Codex and OpenCode#8778
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Closes#8792

What Changed

  • Added workspace-scoped provider snapshots for skills and slash commands.
  • Probed project skills from the active working directory for Codex and OpenCode.
  • Updated the / command menu and $ skill search to resolve skills and commands from the current workspace snapshot.
  • Added focused coverage for workspace snapshot storage, refresh deduplication, and client-side selection.

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:
image
image
Image
Image

After:
image
image
image
image

(The skill being labelled as provider skill for OpenCode is a different bug. Will fix that in another PR)

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Built with GPT-5.6 Sol in the Codex harness.

Note

Add workspace-scoped provider skills and slash commands to composer menus

  • Introduces per-cwd workspace snapshots on ServerProvider containing skills and slashCommands, stored in-memory in ProviderRegistry with a cap of 16 entries per provider and deduplication of concurrent refreshes.
  • CodexDriver and OpenCodeDriver expose snapshotForCwd(cwd) which probes skills for the working directory (via app-server process or CLI) with a 20s timeout.
  • ProviderCommandReactor triggers a background refreshWorkspaceSnapshot when a thread resolves its effectiveCwd, and the serverRefreshProviders RPC accepts an optional cwd to scope the refresh.
  • ChatComposer and ChatView now use resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd to display cwd-specific menus, falling back to machine-level collections when no workspace snapshot exists.
  • Risk: workspace snapshots are excluded from on-disk provider caches and cleared on instance rebuild, so skills may briefly show machine-level results after a provider restart until the next background probe completes. loadOpenCodeSkills SDK 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 (workspaceSnapshots on ServerProvider) and fills them by probing each provider for the active cwd.

Server: Codex and OpenCode drivers expose optional snapshotForCwd(cwd) (skills probe with a 20s timeout). ProviderRegistry.refreshWorkspaceSnapshot deduplicates 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. ProviderCommandReactor kicks off a detached workspace refresh after session start and when reusing a session without a full restart. serverRefreshProviders accepts optional instanceId + cwd to target a workspace refresh.

Client:resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd prefer the matching workspace snapshot, else fall back to machine metadata. ChatComposer requests a scoped refresh when the selected provider lacks a snapshot for gitCwd; timeline and slash/$ menus use the resolved lists. refreshProviders single-flight keys now include cwd.

Reviewed by Cursor Bugbot for commit f1f91e1. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 259176d0-06ad-4a33-a1f2-b863c5f7bb77

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 30, 2026
@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in selectorsfix(web): show project skills in composer menusAug 30, 2026
Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/provider/opencodeRuntime.ts Outdated
Comment threadpackages/client-runtime/src/state/server.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review: one concern about the new mount-time provider refresh in ChatComposer.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ChatComposer.tsx

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/ws.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in composer menusfix(server): discover project skills for Codex and OpenCodeAug 30, 2026
@maria-rcks
maria-rcks merged commit 80a14b6 into pingdotgg:mainSep 2, 2026
27 checks passed
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Mnigos added a commit to Mnigos/t3code that referenced this pull request Sep 2, 2026
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.
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Project-local Codex and OpenCode skills are missing from composer menus

2 participants

@UtkarshUsername@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(server): discover project skills for Codex and OpenCode - #8778

Merged
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills
Sep 2, 2026
Merged

fix(server): discover project skills for Codex and OpenCode#8778
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Closes#8792

What Changed

  • Added workspace-scoped provider snapshots for skills and slash commands.
  • Probed project skills from the active working directory for Codex and OpenCode.
  • Updated the / command menu and $ skill search to resolve skills and commands from the current workspace snapshot.
  • Added focused coverage for workspace snapshot storage, refresh deduplication, and client-side selection.

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:
image
image
Image
Image

After:
image
image
image
image

(The skill being labelled as provider skill for OpenCode is a different bug. Will fix that in another PR)

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Built with GPT-5.6 Sol in the Codex harness.

Note

Add workspace-scoped provider skills and slash commands to composer menus

  • Introduces per-cwd workspace snapshots on ServerProvider containing skills and slashCommands, stored in-memory in ProviderRegistry with a cap of 16 entries per provider and deduplication of concurrent refreshes.
  • CodexDriver and OpenCodeDriver expose snapshotForCwd(cwd) which probes skills for the working directory (via app-server process or CLI) with a 20s timeout.
  • ProviderCommandReactor triggers a background refreshWorkspaceSnapshot when a thread resolves its effectiveCwd, and the serverRefreshProviders RPC accepts an optional cwd to scope the refresh.
  • ChatComposer and ChatView now use resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd to display cwd-specific menus, falling back to machine-level collections when no workspace snapshot exists.
  • Risk: workspace snapshots are excluded from on-disk provider caches and cleared on instance rebuild, so skills may briefly show machine-level results after a provider restart until the next background probe completes. loadOpenCodeSkills SDK 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 (workspaceSnapshots on ServerProvider) and fills them by probing each provider for the active cwd.

Server: Codex and OpenCode drivers expose optional snapshotForCwd(cwd) (skills probe with a 20s timeout). ProviderRegistry.refreshWorkspaceSnapshot deduplicates 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. ProviderCommandReactor kicks off a detached workspace refresh after session start and when reusing a session without a full restart. serverRefreshProviders accepts optional instanceId + cwd to target a workspace refresh.

Client:resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd prefer the matching workspace snapshot, else fall back to machine metadata. ChatComposer requests a scoped refresh when the selected provider lacks a snapshot for gitCwd; timeline and slash/$ menus use the resolved lists. refreshProviders single-flight keys now include cwd.

Reviewed by Cursor Bugbot for commit f1f91e1. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 259176d0-06ad-4a33-a1f2-b863c5f7bb77

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 30, 2026
@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in selectorsfix(web): show project skills in composer menusAug 30, 2026
Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/provider/opencodeRuntime.ts Outdated
Comment threadpackages/client-runtime/src/state/server.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review: one concern about the new mount-time provider refresh in ChatComposer.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ChatComposer.tsx

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/ws.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in composer menusfix(server): discover project skills for Codex and OpenCodeAug 30, 2026
@maria-rcks
maria-rcks merged commit 80a14b6 into pingdotgg:mainSep 2, 2026
27 checks passed
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Mnigos added a commit to Mnigos/t3code that referenced this pull request Sep 2, 2026
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.
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Project-local Codex and OpenCode skills are missing from composer menus

2 participants

@UtkarshUsername@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(server): discover project skills for Codex and OpenCode - #8778

Merged
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills
Sep 2, 2026
Merged

fix(server): discover project skills for Codex and OpenCode#8778
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Closes#8792

What Changed

  • Added workspace-scoped provider snapshots for skills and slash commands.
  • Probed project skills from the active working directory for Codex and OpenCode.
  • Updated the / command menu and $ skill search to resolve skills and commands from the current workspace snapshot.
  • Added focused coverage for workspace snapshot storage, refresh deduplication, and client-side selection.

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:
image
image
Image
Image

After:
image
image
image
image

(The skill being labelled as provider skill for OpenCode is a different bug. Will fix that in another PR)

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Built with GPT-5.6 Sol in the Codex harness.

Note

Add workspace-scoped provider skills and slash commands to composer menus

  • Introduces per-cwd workspace snapshots on ServerProvider containing skills and slashCommands, stored in-memory in ProviderRegistry with a cap of 16 entries per provider and deduplication of concurrent refreshes.
  • CodexDriver and OpenCodeDriver expose snapshotForCwd(cwd) which probes skills for the working directory (via app-server process or CLI) with a 20s timeout.
  • ProviderCommandReactor triggers a background refreshWorkspaceSnapshot when a thread resolves its effectiveCwd, and the serverRefreshProviders RPC accepts an optional cwd to scope the refresh.
  • ChatComposer and ChatView now use resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd to display cwd-specific menus, falling back to machine-level collections when no workspace snapshot exists.
  • Risk: workspace snapshots are excluded from on-disk provider caches and cleared on instance rebuild, so skills may briefly show machine-level results after a provider restart until the next background probe completes. loadOpenCodeSkills SDK 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 (workspaceSnapshots on ServerProvider) and fills them by probing each provider for the active cwd.

Server: Codex and OpenCode drivers expose optional snapshotForCwd(cwd) (skills probe with a 20s timeout). ProviderRegistry.refreshWorkspaceSnapshot deduplicates 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. ProviderCommandReactor kicks off a detached workspace refresh after session start and when reusing a session without a full restart. serverRefreshProviders accepts optional instanceId + cwd to target a workspace refresh.

Client:resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd prefer the matching workspace snapshot, else fall back to machine metadata. ChatComposer requests a scoped refresh when the selected provider lacks a snapshot for gitCwd; timeline and slash/$ menus use the resolved lists. refreshProviders single-flight keys now include cwd.

Reviewed by Cursor Bugbot for commit f1f91e1. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 259176d0-06ad-4a33-a1f2-b863c5f7bb77

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 30, 2026
@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in selectorsfix(web): show project skills in composer menusAug 30, 2026
Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/provider/opencodeRuntime.ts Outdated
Comment threadpackages/client-runtime/src/state/server.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review: one concern about the new mount-time provider refresh in ChatComposer.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ChatComposer.tsx

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/ws.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in composer menusfix(server): discover project skills for Codex and OpenCodeAug 30, 2026
@maria-rcks
maria-rcks merged commit 80a14b6 into pingdotgg:mainSep 2, 2026
27 checks passed
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Mnigos added a commit to Mnigos/t3code that referenced this pull request Sep 2, 2026
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.
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Project-local Codex and OpenCode skills are missing from composer menus

2 participants

@UtkarshUsername@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(server): discover project skills for Codex and OpenCode - #8778

Merged
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills
Sep 2, 2026
Merged

fix(server): discover project skills for Codex and OpenCode#8778
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Closes#8792

What Changed

  • Added workspace-scoped provider snapshots for skills and slash commands.
  • Probed project skills from the active working directory for Codex and OpenCode.
  • Updated the / command menu and $ skill search to resolve skills and commands from the current workspace snapshot.
  • Added focused coverage for workspace snapshot storage, refresh deduplication, and client-side selection.

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:
image
image
Image
Image

After:
image
image
image
image

(The skill being labelled as provider skill for OpenCode is a different bug. Will fix that in another PR)

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Built with GPT-5.6 Sol in the Codex harness.

Note

Add workspace-scoped provider skills and slash commands to composer menus

  • Introduces per-cwd workspace snapshots on ServerProvider containing skills and slashCommands, stored in-memory in ProviderRegistry with a cap of 16 entries per provider and deduplication of concurrent refreshes.
  • CodexDriver and OpenCodeDriver expose snapshotForCwd(cwd) which probes skills for the working directory (via app-server process or CLI) with a 20s timeout.
  • ProviderCommandReactor triggers a background refreshWorkspaceSnapshot when a thread resolves its effectiveCwd, and the serverRefreshProviders RPC accepts an optional cwd to scope the refresh.
  • ChatComposer and ChatView now use resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd to display cwd-specific menus, falling back to machine-level collections when no workspace snapshot exists.
  • Risk: workspace snapshots are excluded from on-disk provider caches and cleared on instance rebuild, so skills may briefly show machine-level results after a provider restart until the next background probe completes. loadOpenCodeSkills SDK 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 (workspaceSnapshots on ServerProvider) and fills them by probing each provider for the active cwd.

Server: Codex and OpenCode drivers expose optional snapshotForCwd(cwd) (skills probe with a 20s timeout). ProviderRegistry.refreshWorkspaceSnapshot deduplicates 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. ProviderCommandReactor kicks off a detached workspace refresh after session start and when reusing a session without a full restart. serverRefreshProviders accepts optional instanceId + cwd to target a workspace refresh.

Client:resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd prefer the matching workspace snapshot, else fall back to machine metadata. ChatComposer requests a scoped refresh when the selected provider lacks a snapshot for gitCwd; timeline and slash/$ menus use the resolved lists. refreshProviders single-flight keys now include cwd.

Reviewed by Cursor Bugbot for commit f1f91e1. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 259176d0-06ad-4a33-a1f2-b863c5f7bb77

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 30, 2026
@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in selectorsfix(web): show project skills in composer menusAug 30, 2026
Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/provider/opencodeRuntime.ts Outdated
Comment threadpackages/client-runtime/src/state/server.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review: one concern about the new mount-time provider refresh in ChatComposer.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ChatComposer.tsx

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/ws.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in composer menusfix(server): discover project skills for Codex and OpenCodeAug 30, 2026
@maria-rcks
maria-rcks merged commit 80a14b6 into pingdotgg:mainSep 2, 2026
27 checks passed
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Mnigos added a commit to Mnigos/t3code that referenced this pull request Sep 2, 2026
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.
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Project-local Codex and OpenCode skills are missing from composer menus

2 participants

@UtkarshUsername@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(server): discover project skills for Codex and OpenCode - #8778

Merged
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills
Sep 2, 2026
Merged

fix(server): discover project skills for Codex and OpenCode#8778
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Closes#8792

What Changed

  • Added workspace-scoped provider snapshots for skills and slash commands.
  • Probed project skills from the active working directory for Codex and OpenCode.
  • Updated the / command menu and $ skill search to resolve skills and commands from the current workspace snapshot.
  • Added focused coverage for workspace snapshot storage, refresh deduplication, and client-side selection.

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:
image
image
Image
Image

After:
image
image
image
image

(The skill being labelled as provider skill for OpenCode is a different bug. Will fix that in another PR)

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Built with GPT-5.6 Sol in the Codex harness.

Note

Add workspace-scoped provider skills and slash commands to composer menus

  • Introduces per-cwd workspace snapshots on ServerProvider containing skills and slashCommands, stored in-memory in ProviderRegistry with a cap of 16 entries per provider and deduplication of concurrent refreshes.
  • CodexDriver and OpenCodeDriver expose snapshotForCwd(cwd) which probes skills for the working directory (via app-server process or CLI) with a 20s timeout.
  • ProviderCommandReactor triggers a background refreshWorkspaceSnapshot when a thread resolves its effectiveCwd, and the serverRefreshProviders RPC accepts an optional cwd to scope the refresh.
  • ChatComposer and ChatView now use resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd to display cwd-specific menus, falling back to machine-level collections when no workspace snapshot exists.
  • Risk: workspace snapshots are excluded from on-disk provider caches and cleared on instance rebuild, so skills may briefly show machine-level results after a provider restart until the next background probe completes. loadOpenCodeSkills SDK 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 (workspaceSnapshots on ServerProvider) and fills them by probing each provider for the active cwd.

Server: Codex and OpenCode drivers expose optional snapshotForCwd(cwd) (skills probe with a 20s timeout). ProviderRegistry.refreshWorkspaceSnapshot deduplicates 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. ProviderCommandReactor kicks off a detached workspace refresh after session start and when reusing a session without a full restart. serverRefreshProviders accepts optional instanceId + cwd to target a workspace refresh.

Client:resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd prefer the matching workspace snapshot, else fall back to machine metadata. ChatComposer requests a scoped refresh when the selected provider lacks a snapshot for gitCwd; timeline and slash/$ menus use the resolved lists. refreshProviders single-flight keys now include cwd.

Reviewed by Cursor Bugbot for commit f1f91e1. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 259176d0-06ad-4a33-a1f2-b863c5f7bb77

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 30, 2026
@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in selectorsfix(web): show project skills in composer menusAug 30, 2026
Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/provider/opencodeRuntime.ts Outdated
Comment threadpackages/client-runtime/src/state/server.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review: one concern about the new mount-time provider refresh in ChatComposer.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ChatComposer.tsx

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/ws.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in composer menusfix(server): discover project skills for Codex and OpenCodeAug 30, 2026
@maria-rcks
maria-rcks merged commit 80a14b6 into pingdotgg:mainSep 2, 2026
27 checks passed
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Mnigos added a commit to Mnigos/t3code that referenced this pull request Sep 2, 2026
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.
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Project-local Codex and OpenCode skills are missing from composer menus

2 participants

@UtkarshUsername@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(server): discover project skills for Codex and OpenCode - #8778

Merged
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills
Sep 2, 2026
Merged

fix(server): discover project skills for Codex and OpenCode#8778
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Closes#8792

What Changed

  • Added workspace-scoped provider snapshots for skills and slash commands.
  • Probed project skills from the active working directory for Codex and OpenCode.
  • Updated the / command menu and $ skill search to resolve skills and commands from the current workspace snapshot.
  • Added focused coverage for workspace snapshot storage, refresh deduplication, and client-side selection.

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:
image
image
Image
Image

After:
image
image
image
image

(The skill being labelled as provider skill for OpenCode is a different bug. Will fix that in another PR)

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Built with GPT-5.6 Sol in the Codex harness.

Note

Add workspace-scoped provider skills and slash commands to composer menus

  • Introduces per-cwd workspace snapshots on ServerProvider containing skills and slashCommands, stored in-memory in ProviderRegistry with a cap of 16 entries per provider and deduplication of concurrent refreshes.
  • CodexDriver and OpenCodeDriver expose snapshotForCwd(cwd) which probes skills for the working directory (via app-server process or CLI) with a 20s timeout.
  • ProviderCommandReactor triggers a background refreshWorkspaceSnapshot when a thread resolves its effectiveCwd, and the serverRefreshProviders RPC accepts an optional cwd to scope the refresh.
  • ChatComposer and ChatView now use resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd to display cwd-specific menus, falling back to machine-level collections when no workspace snapshot exists.
  • Risk: workspace snapshots are excluded from on-disk provider caches and cleared on instance rebuild, so skills may briefly show machine-level results after a provider restart until the next background probe completes. loadOpenCodeSkills SDK 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 (workspaceSnapshots on ServerProvider) and fills them by probing each provider for the active cwd.

Server: Codex and OpenCode drivers expose optional snapshotForCwd(cwd) (skills probe with a 20s timeout). ProviderRegistry.refreshWorkspaceSnapshot deduplicates 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. ProviderCommandReactor kicks off a detached workspace refresh after session start and when reusing a session without a full restart. serverRefreshProviders accepts optional instanceId + cwd to target a workspace refresh.

Client:resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd prefer the matching workspace snapshot, else fall back to machine metadata. ChatComposer requests a scoped refresh when the selected provider lacks a snapshot for gitCwd; timeline and slash/$ menus use the resolved lists. refreshProviders single-flight keys now include cwd.

Reviewed by Cursor Bugbot for commit f1f91e1. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 259176d0-06ad-4a33-a1f2-b863c5f7bb77

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 30, 2026
@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in selectorsfix(web): show project skills in composer menusAug 30, 2026
Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/provider/opencodeRuntime.ts Outdated
Comment threadpackages/client-runtime/src/state/server.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review: one concern about the new mount-time provider refresh in ChatComposer.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ChatComposer.tsx

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/ws.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in composer menusfix(server): discover project skills for Codex and OpenCodeAug 30, 2026
@maria-rcks
maria-rcks merged commit 80a14b6 into pingdotgg:mainSep 2, 2026
27 checks passed
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Mnigos added a commit to Mnigos/t3code that referenced this pull request Sep 2, 2026
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.
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Project-local Codex and OpenCode skills are missing from composer menus

2 participants

@UtkarshUsername@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(server): discover project skills for Codex and OpenCode - #8778

Merged
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills
Sep 2, 2026
Merged

fix(server): discover project skills for Codex and OpenCode#8778
maria-rcks merged 3 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/show-project-skills

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Closes#8792

What Changed

  • Added workspace-scoped provider snapshots for skills and slash commands.
  • Probed project skills from the active working directory for Codex and OpenCode.
  • Updated the / command menu and $ skill search to resolve skills and commands from the current workspace snapshot.
  • Added focused coverage for workspace snapshot storage, refresh deduplication, and client-side selection.

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:
image
image
Image
Image

After:
image
image
image
image

(The skill being labelled as provider skill for OpenCode is a different bug. Will fix that in another PR)

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Built with GPT-5.6 Sol in the Codex harness.

Note

Add workspace-scoped provider skills and slash commands to composer menus

  • Introduces per-cwd workspace snapshots on ServerProvider containing skills and slashCommands, stored in-memory in ProviderRegistry with a cap of 16 entries per provider and deduplication of concurrent refreshes.
  • CodexDriver and OpenCodeDriver expose snapshotForCwd(cwd) which probes skills for the working directory (via app-server process or CLI) with a 20s timeout.
  • ProviderCommandReactor triggers a background refreshWorkspaceSnapshot when a thread resolves its effectiveCwd, and the serverRefreshProviders RPC accepts an optional cwd to scope the refresh.
  • ChatComposer and ChatView now use resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd to display cwd-specific menus, falling back to machine-level collections when no workspace snapshot exists.
  • Risk: workspace snapshots are excluded from on-disk provider caches and cleared on instance rebuild, so skills may briefly show machine-level results after a provider restart until the next background probe completes. loadOpenCodeSkills SDK 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 (workspaceSnapshots on ServerProvider) and fills them by probing each provider for the active cwd.

Server: Codex and OpenCode drivers expose optional snapshotForCwd(cwd) (skills probe with a 20s timeout). ProviderRegistry.refreshWorkspaceSnapshot deduplicates 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. ProviderCommandReactor kicks off a detached workspace refresh after session start and when reusing a session without a full restart. serverRefreshProviders accepts optional instanceId + cwd to target a workspace refresh.

Client:resolveProviderSkillsForCwd / resolveProviderSlashCommandsForCwd prefer the matching workspace snapshot, else fall back to machine metadata. ChatComposer requests a scoped refresh when the selected provider lacks a snapshot for gitCwd; timeline and slash/$ menus use the resolved lists. refreshProviders single-flight keys now include cwd.

Reviewed by Cursor Bugbot for commit f1f91e1. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 259176d0-06ad-4a33-a1f2-b863c5f7bb77

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 30, 2026
@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in selectorsfix(web): show project skills in composer menusAug 30, 2026
Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/provider/opencodeRuntime.ts Outdated
Comment threadpackages/client-runtime/src/state/server.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review: one concern about the new mount-time provider refresh in ChatComposer.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ChatComposer.tsx

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/components/chat/ChatComposer.tsx
Comment threadapps/server/src/ws.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@UtkarshUsernameUtkarshUsername changed the title fix(web): show project skills in composer menusfix(server): discover project skills for Codex and OpenCodeAug 30, 2026
@maria-rcks
maria-rcks merged commit 80a14b6 into pingdotgg:mainSep 2, 2026
27 checks passed
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Mnigos added a commit to Mnigos/t3code that referenced this pull request Sep 2, 2026
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.
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
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>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Project-local Codex and OpenCode skills are missing from composer menus

2 participants

@UtkarshUsername@maria-rcks