You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Claude workspace snapshots still carry machine slash commands [β¨#446]Β #492
Claude workspace snapshots still carry machine slash commands. Upstream now discovers project skills per workspace, but it does not carry slash commands through the same path, so a worktree thread shows the server's own commands instead of the project's.
Where it stands upstream
bc918e7 (fix(server): discover project skills for Claude (#9210)) adds snapshotForCwd on the Claude instance. It spreads discoverClaudeSkills(cwd) over the machine snapshot and merges skills only. The capabilities probe cache is untouched: still capacity 1, still keyed on binary plus HOME. So resolveProviderSlashCommandsForCwd keeps returning server-cwd built-ins for Claude no matter which workspace asked.
Where it stands in the fork
48d4892 (fix(provider): resolve repo skills per workspace (#188)) already solved this, across 546 lines and 17 files, with a cwd-keyed probe cache at capacity 16 and a providers.workspaceSkills remote call. That commit is being retired at the v0.0.39-nightly.20260902.1261 walk, because upstream now owns the seam and the fork should not carry a parallel implementation of it.
Retiring it gives the slash commands back to the server cwd, which is the regression this issue exists to prevent.
Shape
One minimal fork commit inside upstream's own seam rather than beside it.
Key the Claude probe cache on cwd.
Raise its capacity above one.
Merge slashCommands alongside skills in snapshotForCwd.
That is roughly fifteen lines in one file, carrying Fork-Domain: upstream-fixes, and it is the kind of commit a later upstream change can supersede cleanly.
Done when
A project's .claude/commands appear in the Claude menu for a worktree thread.
The fork carries no second implementation of workspace skill discovery.
Origin: RSI-Software/t3code-hyprws#182, revisited because the fork's own fix for it is being retired at the v0.0.39-nightly.20260902.1261 walk.
#494 merged as 9876bdf7bc, head 5af5455, with no Closes link, so this stays open by design.
docs/internals/fork-delta.md now carries fix(provider): resolve repo skills per workspace (#188) in both Retired and Kept, which is how the ledger spells a partial. The .1261 walk reduced that commit from 546 insertions across 17 files to 35 insertions across 2 server files. What survives is the cwd-keyed Claude capabilities probe cache at capacity 16 and the slashCommands merge alongside skills in upstream's snapshotForCwd. Everything else, the workspace-skills remote call, its contract schemas, the client atom family, the chat-view preference, and the Codex pair, is retired against upstream bc918e7.
That remainder is exactly the gap this issue describes, and it is now carried in the stack rather than proposed.
What is left here
One decision, not one implementation. The kept remainder is live fork code, so the shape this issue asked for already exists. What is unresolved is where the issue belongs: it reads Untriaged π₯ with Status Inbox, parentless, and the natural home is Slice F, upstream fixes, alongside the retirement it now describes.
Re-entry trigger. The next upstream tag the fork carries. If that tag merges slashCommands in snapshotForCwd and keys the Claude probe cache on cwd, the kept remainder is superseded and this closes not planned with the Kept row moving to Retired. If it does not, the remainder stays and this issue is the record of why the fork carries it, at which point it takes its slice and a parent.
The triage paragraph above is wrong. It was drafted against an earlier read and posted after a thirty-five minute rate-limit block, during which this issue was retyped and attached.
Live state as of this comment: type Task π¨, triage Parent π, Status Ready, parent #445, mission Slice F: Upstream fixes, blocking #447, relates to #182. It is neither untriaged nor parentless, and it already sits in the slice that comment proposed for it.
Everything above that paragraph stands. The ledger records the partial, the kept remainder is the cwd-keyed Claude probe cache and the slashCommands merge, and the re-entry trigger is unchanged: the next upstream tag the fork carries.
One inconsistency worth a look: the title marker reads π‘ while the type field reads Task π¨.
Both "Done when" conditions hold in the fork stack. Verified at hyprws@3d3dd35049.
No second implementation
$ grep -rn "workspaceSkills" apps/server/src
(no matches)
The RPC, its contract schemas, the client atom family, the chat-view preference, and the Codex pair all came out at the v0.0.39-nightly.20260902.1261 walk.
Project commands reach a worktree thread
apps/server/src/provider/Drivers/ClaudeDriver.ts keys the capabilities probe on cwd and merges its slashCommands into upstream's snapshotForCwd:
apps/server/src/provider/Layers/ProviderRegistry.ts carries the per-cwd snapshot to the client through upsertProviderWorkspaceSnapshot. Its tests cover the workspace slashCommands path:
$ vp test run apps/server/src/provider/Layers/ProviderRegistry.test.ts
Test Files 1 passed (1)
Tests 41 passed (41)
Ledger
docs/internals/fork-delta.md records the partial through PR #494 (9876bdf7bc). fix(provider): resolve repo skills per workspace (#188) appears in Retired against pingdotgg/t3code#9210 and in Kept with the remainder named: cwd-keyed probe cache at capacity 16, slashCommands merged beside skills.
Scope
The proof above is code and unit level. No browser pass was run for the Claude menu itself. The re-entry trigger from the prior comment stands: if a later upstream tag keys the probe cache on cwd and merges slashCommands, the Kept row moves to Retired.
Activity
docs(fork): record the partial retirement of the per-workspace skillsβ¦
[-]Claude workspace snapshots still carry machine slash commands [π₯][/-][+]Claude workspace snapshots still carry machine slash commands [π‘#445][/+]donjor-agent commentedon Sep 3, 2026
The ledger now records the partial
#494 merged as
9876bdf7bc, head5af5455, with noCloseslink, so this stays open by design.docs/internals/fork-delta.mdnow carriesfix(provider): resolve repo skills per workspace (#188)in both Retired and Kept, which is how the ledger spells a partial. The.1261walk reduced that commit from 546 insertions across 17 files to 35 insertions across 2 server files. What survives is the cwd-keyed Claude capabilities probe cache at capacity 16 and theslashCommandsmerge alongsideskillsin upstream'ssnapshotForCwd. Everything else, the workspace-skills remote call, its contract schemas, the client atom family, the chat-view preference, and the Codex pair, is retired against upstreambc918e7.That remainder is exactly the gap this issue describes, and it is now carried in the stack rather than proposed.
What is left here
One decision, not one implementation. The kept remainder is live fork code, so the shape this issue asked for already exists. What is unresolved is where the issue belongs: it reads
Untriaged π₯with StatusInbox, parentless, and the natural home is Slice F, upstream fixes, alongside the retirement it now describes.Re-entry trigger. The next upstream tag the fork carries. If that tag merges
slashCommandsinsnapshotForCwdand keys the Claude probe cache on cwd, the kept remainder is superseded and this closes not planned with the Kept row moving to Retired. If it does not, the remainder stays and this issue is the record of why the fork carries it, at which point it takes its slice and a parent.donjor-agent commentedon Sep 3, 2026
Correction to the previous comment
The triage paragraph above is wrong. It was drafted against an earlier read and posted after a thirty-five minute rate-limit block, during which this issue was retyped and attached.
Live state as of this comment: type
Task π¨, triageParent π, StatusReady, parent #445, mission Slice F: Upstream fixes, blocking #447, relates to #182. It is neither untriaged nor parentless, and it already sits in the slice that comment proposed for it.Everything above that paragraph stands. The ledger records the partial, the kept remainder is the cwd-keyed Claude probe cache and the
slashCommandsmerge, and the re-entry trigger is unchanged: the next upstream tag the fork carries.One inconsistency worth a look: the title marker reads
π‘while the type field readsTask π¨.donjor-agent commentedon Sep 3, 2026
The kept remainder is live at
3d3dd35049Both "Done when" conditions hold in the fork stack. Verified at
hyprws@3d3dd35049.No second implementation
The RPC, its contract schemas, the client atom family, the chat-view preference, and the Codex pair all came out at the
v0.0.39-nightly.20260902.1261walk.Project commands reach a worktree thread
apps/server/src/provider/Drivers/ClaudeDriver.tskeys the capabilities probe on cwd and merges itsslashCommandsinto upstream'ssnapshotForCwd:apps/server/src/provider/Layers/ProviderRegistry.tscarries the per-cwd snapshot to the client throughupsertProviderWorkspaceSnapshot. Its tests cover the workspaceslashCommandspath:Ledger
docs/internals/fork-delta.mdrecords the partial through PR #494 (9876bdf7bc).fix(provider): resolve repo skills per workspace (#188)appears in Retired againstpingdotgg/t3code#9210and in Kept with the remainder named: cwd-keyed probe cache at capacity 16,slashCommandsmerged besideskills.Scope
The proof above is code and unit level. No browser pass was run for the Claude menu itself. The re-entry trigger from the prior comment stands: if a later upstream tag keys the probe cache on cwd and merges
slashCommands, the Kept row moves to Retired.[-]Claude workspace snapshots still carry machine slash commands [π‘#445][/-][+]Claude workspace snapshots still carry machine slash commands [β¨#446][/+]