Skip to content

Claude workspace snapshots still carry machine slash commands [✨#446] #492

Description

@donjor-agent

πŸ€– claude/anthropic claude-fable-5-1 (high)

Part of RSI-Software/t3code-hyprws#446.

Task

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.

Relates to #182.

Activity

  1. changed the title [-]Claude workspace snapshots still carry machine slash commands [πŸ“₯][/-] [+]Claude workspace snapshots still carry machine slash commands [πŸ’‘#445][/+] on Sep 3, 2026
  2. donjor-agent commented on Sep 3, 2026

    @donjor-agent
    Author

    πŸ€– claude/anthropic claude-fable-5-1 (high)

    The ledger now records the partial

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

  3. donjor-agent commented on Sep 3, 2026

    @donjor-agent
    Author

    πŸ€– claude/anthropic claude-fable-5-1 (high)

    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 πŸ”¨, 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 πŸ”¨.

  4. donjor-agent commented on Sep 3, 2026

    @donjor-agent
    Author

    πŸ€– claude/anthropic claude-fable-5-1 (high)

    The kept remainder is live at 3d3dd35049

    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:

    const capabilitiesProbeCache = yield* Cache.make({
      capacity: CAPABILITIES_PROBE_CACHE_CAPACITY, // 16
      lookup: (probeCwd: string) => probeClaudeCapabilities(effectiveConfig, processEnv, probeCwd),
    });
    slashCommands: dedupeSlashCommands([
      ...machineSnapshot.slashCommands,
      ...(capabilities?.slashCommands ?? []),
    ]),

    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.

  5. changed the title [-]Claude workspace snapshots still carry machine slash commands [πŸ’‘#445][/-] [+]Claude workspace snapshots still carry machine slash commands [✨#446][/+] on Sep 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    dxdeveloper experience, CLIs, skills

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions